Don't set the domain in mono_gc_run_finalize() too late.
[mono.git] / mono / metadata / ChangeLog
1 2009-05-01  Mark Probst  <mark.probst@gmail.com>
2
3         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
4         because mono_delegate_free_ftnptr() needs it.
5
6 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
7
8         * metadata-verify.c: Verify the eventmap table.
9
10 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
11
12         * metadata-verify.c: Verify the standalonesig table.
13
14 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
15
16         * metadata-verify.c: Verify the field layout table.
17
18 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
19
20         * class.c (mono_type_get_name_recurse): Don't crash
21         for ownerless generic params.
22
23         * debug-helpers.c (mono_type_get_desc): Correct the format
24         for ownerless generic params.
25
26 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
27
28         * metadata-verify.c: Verify the class layout table.
29
30 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
31
32         * metadata-verify.c: Verify the decl security table.
33
34 2009-04-30  Mark Probst  <mark.probst@gmail.com>
35
36         * domain.c (mono_domain_set_internal_with_options): Don't do
37         anything if the old domain is the same as the old one.  Fixes
38         #499326.
39
40 2009-04-30  Mark Probst  <mark.probst@gmail.com>
41
42         * appdomain.c: Deregister the reflection_info roots when unloading
43         a domain.
44
45         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
46         memory allocated by a domain and frees its disappearing links.
47
48         * boehm-gc.c, null-gc.c: Empty implementation of
49         mono_gc_clear_domain().
50
51 2009-04-30  Mark Probst  <mark.probst@gmail.com>
52
53         * appdomain.c (clear_cached_vtable): Free the static fields memory
54         block.
55
56 2009-04-30  Mark Probst  <mark.probst@gmail.com>
57
58         * gc.c: Set the correct domain when invoking finalizers.
59
60         * appdomain.c: Set the correct domain when creating threads.
61
62 2009-04-30  Mark Probst  <mark.probst@gmail.com>
63
64         * sgen-gc.c: Fix skip size for vectors.
65
66 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
67
68         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
69         returning refonly assemblies if refonly is FALSE. Fixes #499013.
70
71 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
72
73         * metadata-verify.c: Verify the field marshal table.
74
75 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
76
77         * metadata-verify.c: Verify the custom attribute table.
78
79 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
80
81         * metadata-verify.c: Verify the constant table.
82
83 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
84
85         * metadata-verify.c: Verify the memberef table.
86
87 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
88
89         * metadata-verify.c (get_coded_index_token): Remove
90         dead argument.
91
92 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
93
94         * metadata-verify.c: Verify the interfaceimpl table.
95
96 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
97
98         * verify.c: Improve error message.
99
100         * debug-helpers.c (mono_type_get_desc): Harden the code that
101         deals with VAR and MVAR.
102
103 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
104
105         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
106         part of #498692.
107
108 2009-04-23 Tom Hindle <tom_hindle@sil.org>
109
110         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
111         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
112
113 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
114
115         * security-core-clr.c: Avoid redundant checks for platform code, 
116         e.g. check for method and for class (very common) and check
117         for class and outer class (less common)...
118
119 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
120
121         * reflection.c: Avoid returning random cattrs for synthetic methods.
122         Fixes #498545.
123
124 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
125
126         * assembly.c: assemblies in the GAC should never be shadow-copied.
127
128 2009-04-26  Mark Probst  <mark.probst@gmail.com>
129
130         * domain.c, domain-internals.h: Disable
131         track_resurrection_{objects,handles}_hash in MonoDomain if using
132         SGen.
133
134 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
135
136         * metadata-verify.c: Verify the param table.
137
138 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
139
140         * metadata-verify.c (verify_typedef_table): Range check FieldList and
141         MethodList.
142
143         * metadata-verify.c (verify_method_table): Proper check the ParamList
144         field.
145
146 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
147
148         * metadata-verify.c (verify_method_table): Check for runtime
149         implemented functions such as delegate .ctors. Remove spurious
150         printf.
151         
152 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
153
154         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
155
156 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
157
158         Don't allocate MonoGenericInfo for ownerless generic params.
159         * class-internals.h (MonoGenericParam::info): Move field to ...
160         (MonoGenericParamFull): ... this.  New struct.
161         (MonoGenericContainer::type_params): Change type to
162         MonoGenericParamFull.
163         (MonoGenericParam, MonoGenericContainer): Update accessors.
164         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
165         'info' field for ownerless generic param.
166         (mono_metadata_load_generic_params): Update to changes.
167         * reflection.c (mono_reflection_create_generic_class): Likewise.
168         (reflection_methodbuilder_to_mono_method): Likewise.
169         (mono_reflection_initialize_generic_parameter): Likewise.
170
171 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
172
173         Don't use MonoGenericParamInfo for ownerless generic params.
174         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
175         use ParamInfo class at all.
176         (mono_class_from_generic_parameter): Use them.
177         (make_generic_param_class): Fix a couple of instances where 'pinfo
178         == NULL' wasn't handle.
179
180 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
181
182         * class.c (make_generic_param_class): Carve out of ...
183         (mono_class_from_generic_parameter): ... here.
184
185 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
186
187         Simplify mono_class_from_generic_parameter
188         * class-internals.h (MonoGenericParamInfo::token): New field.
189         * metadata.c (mono_metadata_load_generic_params): Initialize it
190         from metadata.
191         * class.c (mono_class_from_generic_parameter): Use it instead of
192         searching through metadata.
193
194 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
195
196         * metadata-verify.c: Add verification of the method table.
197
198 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
199
200         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
201         Delegate::Invoke optimization.
202
203 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
204
205         * appdomain.c (mono_domain_create_appdomain_internal): Free the
206         string returned by get_shadow_assembly_location_base.
207
208         * appdomain.c (get_shadow_assembly_location_base): Add a comment
209         about caller's ownership.
210
211 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
212
213         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
214         reflection memory on domain unload.
215
216         * domain.c (mono_domain_free): Don't free refobject_hash, let the
217         reflection cleanup code do it.
218
219         * domain-internals.h: Add mono_reflection_cleanup_domain.
220
221         This fixes a memory leak for managed mirrors of reflection objects
222         on domain unload. 
223
224 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
225
226         * metadata-verify.c: Implement more verification of the field table.
227
228 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
229
230         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
231         doesn't try to parse the input assembly, which can be broken.
232
233 2009-04-23  Mark Probst  <mark.probst@gmail.com>
234
235         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
236         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
237         by using the lowest bit in the link to store whether the link is
238         tracked.  Move the track_resurrection hashes into boehm-gc.c.
239
240 2009-04-22  Miguel de Icaza  <miguel@novell.com>
241
242         * Makefile.am: Split the console support in platform specific code
243         and put together a framework for making this easy in the future so
244         that we can start splitting code instead of having a mess of PLATFORM_WIN32
245
246 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
247
248         * pedump.c: Fix a warning.
249
250 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
251
252         * verify.c (mono_delegate_type_equal): Compare valuetypes using
253         mono_class_from_mono_type to avoid bad interactions with the dual representation
254         of the generic type definition.
255
256 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
257
258         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
259         get the MonoClass for the call context type as it might be a generic
260         instance.
261
262         Fixes #491483.
263
264 2009-04-21  Mark Probst  <mark.probst@gmail.com>
265
266         * object-internals.h: The Thread object has no execution_context
267         member anymore.
268
269         * threads.c, threadpool.c, threads-types.h: Accessor functions for
270         the execution context.
271
272         * appdomain.c: Bump corlib version.
273
274 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
275
276         * verify.c (do_newobj): Improve error message.
277
278 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
279
280         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
281         is nested in the filter block.
282
283         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
284         block is not fully nested.
285
286         Fixes #495656.
287
288 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
289
290         * verify.c (verify_type_compatibility_full): Compare MonoClass and
291         not MonoType to check for equality of valuetypes as the generic type
292         definition allows for two different encodings: the generic type definition
293         class or a generic instance over the GTD arguments.
294
295         Fixes #496175.
296
297 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
298
299         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
300
301         * verify.c (do_initobj): Improve error message.
302
303 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
304
305         * metadata-verify.c: Enable pe verification as the issue with #496453
306         is that the authenticode data directory have a different unspecified
307         format. Ignore it for now.
308
309         * pedump.c: Run the metadata verifier together with the IL verifier.
310
311         Fixes ##496453.
312
313 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
314
315         * metadata-verify.c: Temporarily disable pe verification due to #496453.
316
317 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
318
319         * class.c (can_access_type): Check visibility against
320         the element type for pointers and arrays.
321
322         Fixes #496150.
323
324 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
325
326         * metadata-verify.c: Fix cli and table verification to use information
327         from the MonoImage. A lot of duplicated code got killed.
328
329 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
330
331
332         This patch starts to integrate the metadata verifier with the runtime code.
333
334         This patch causes major regression in functionality for the metadata verifier
335         as cli and table verification are disabled since they require to be ported to
336         use MonoImage information.
337
338         * image.c (do_mono_image_load): Split the code in this function
339         into mono_image_load_pe_data and mono_image_load_cli_data.
340         Add     care_about_pecoff parameter to not load pecoff data.
341         Call into the metadata verifier for pecoff and cli verification.
342
343         * image.c (mono_image_open_raw): New function that doesn't perform
344         any parsing of the image contents.
345         
346         The reason for the 3 new functions is to give pedump better control
347         into the interaction with the verifier.
348
349         * metadata-internals.h: Add new functions from image.c as part of the
350         internal mono API.
351
352         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
353         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
354         to make those functions work together with the runtime.
355
356         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
357         true if the image needs to be verified.
358
359         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
360
361         * pedump.c: Use new metadata verifier API.
362
363 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
364
365         * object.c (mono_install_vtable_trampoline): Make this receive a
366         trampoline creation function instead of trampoline, allowing the JIT
367         to use a different trampoline for each vtable.
368
369 2009-04-18  Mark Probst  <mark.probst@gmail.com>
370
371         * object.c (mono_raise_exception): Don't reset the thread abort
372         exception state here.
373
374 2009-04-18  Mark Probst  <mark.probst@gmail.com>
375
376         * icall-def.h: New icall for getting the thread abort exception
377         state for a thread.
378
379         * object.c, thread.c, object-internals.h: A thread's abort
380         exception state is now a GC handle.  To get the object it stands
381         for, we must move it into the current app domain, if it's
382         different than the one where it originated from.
383
384         * appdomain.c: Bump corlib version.
385
386         * domain.c, domain-internals.h: New function for setting the
387         domain and migrate the thread abort exception or not.
388
389 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
390
391         * metadata-verify.c: Add initial verification of the
392         field table.
393
394 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
395
396         * metadata-verify.c: Add a macro to conditionally enable
397         dumping of verification information. Add  make_coded_token
398         and search_sorted_table to enable search sorted tables
399         by a given coded token.
400
401 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
402
403         * metadata-verify.c: Add array mapping from table index
404         to description offset. Add get_col_offset and get_col_size
405         functions.
406
407 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
408
409         * metadata-verify.c: Add remaining table descriptions offsets.
410         Add remaining coded index descriptions.
411
412 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
413
414         * metadata-verify.c: Fixed constant table description.
415         Fixed calculation of HasCustomAttribute coded index size.
416         Fixed calculation of size for many table indexes. 
417
418 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
419
420         * pedump.c (dump_metadata): Dump table offset instead
421         of useless pointer in memory.
422
423 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
424
425         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
426
427 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
428
429         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
430         a missing of for interface types.
431
432 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
433
434         * metadata-verify.c (verify_pe_optional_header): Add comment of why
435         the code is commented.
436
437         * metadata-verify.c (verify_resources_table): Remove spurious printf
438         and don't fail if there are unmanaged resources. Gmcs generates a useless
439         one     for all assemblies - I bet it's some MS compatibility junk.
440
441 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
442
443         * metadata-verify.c (verify_typedef_table): Verify the extends field.
444
445         * metadata-verify.c (mono_image_verify): Add a is_corlib.
446
447         * verify-internals.h: Same.
448
449         * pedump.c: Fix for mono_image_verify new signature.
450
451 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
452
453         * metadata-verify.c (verify_typedef_table): Verify for some invalid
454         flags combinations.
455
456 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
457
458         * metadata-verify.c (verify_module_table): Ignore the generation field.
459
460 2009-04-15  Martin Baulig  <martin@ximian.com>
461
462         * debug-mono-symfile.c
463         (mono_debug_symfile_lookup_location): Don't print a warning for
464         unknown extended opcodes if they're within 0x40 and 0x7f.
465
466 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
467
468         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
469         invoke signatures returning an enum. Fixes #494847.
470
471 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
472
473         * metadata-verify.c: Initial code to verify the typedef table.
474
475 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
476
477         * verify.c (mono_method_verify): Don't fail if an unconditional branch
478         with non empty stack happens before the beginning of a try block.
479
480         Fixes #494812.
481
482 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
483
484         * metadata-verify.c: Verify typename and typenamespace fields of
485         the typeref table.
486
487 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
488
489         * metadata-verify.c: Initial code to verify the typeref table.
490
491 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
492
493         * verify.c (verify_delegate_compatibility): Fix error message.
494
495 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
496
497         * security-core-clr.c: Fix typo
498
499 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
500
501         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
502         a MonoGHashTable to keep its values alive.
503         (emit_marshal_boolean): Fix a warning.
504
505 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
506
507         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
508         not have any interface configured for IPv4/IPv6.
509
510 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
511
512         * assembly.c: fix typo in error message.
513
514 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
515
516         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
517         allocating the location holding the this argument to prevent
518         'too many root sets' errors.
519
520         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
521         to mark fields as special static.
522         (mono_field_static_get_value): Handle special static fields.
523         (mono_field_static_set_value): Ditto.
524
525         * class-internals.h (struct _MonoClassField): Document this.
526
527 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
528
529         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
530           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
531           case.  This will handle when managed code returns null to native code.
532
533         Code is contributed under MIT/X11 license.
534
535 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
536
537         * object.c (build_imt_slots): Changing a free to a g_free to match
538           the g_malloc0 in add_imt_builder_entry that allocated this memory.
539
540         Code is contributed under MIT/X11 license.
541
542 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
543
544         * marshal.c (emit_marshal_boolean): Adding code to ensure that
545           the correct TRUE value is passed through the marshaling layer.
546
547         Code is contributed under MIT/X11 license.
548
549 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
550
551         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
552         correctly. Fixes #492330.
553         
554         * marshal.c: Fix the embedding of object pointers into JITted code in
555         the native-to-managed wrappers by allocating some GC tracked memory, and
556         embedding the address of that.
557
558 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
559
560         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
561         pointers into the vtable.
562
563 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
564
565         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
566
567         * verify.c (verify_ldftn_delegate): Improve error message.
568
569 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
570
571         * reflection.c (my_mono_class_from_mono_type): Remove.
572
573 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
574
575         Prepare to reduce memory usage of owner-less generic parameters (1/n)
576         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
577         and constraints fields into ...
578         (MonoGenericParamInfo): ... this.
579         (mono_generic_param_info, mono_generic_container_get_param_info):
580         New accessors.
581         * class.c, debug-helpers.c, icall.c: Update to changes.
582         * metadata.c, reflection.c, verify.c: Likewise.
583
584 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
585
586         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
587
588         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
589         
590         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
591         booleans with sbytes.
592
593 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
594
595         * class.c (can_access_instantiation): Verify accesibility of element types
596         for arrays and pointers.
597
598         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
599
600         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
601
602         Fixes #493068.
603
604 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
605
606         * verify.c (do_invoke_method): Improve error messages.
607
608 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
609
610         * verify.c:  Fixing the MSVC build.
611
612         Code is contributed under MIT/X11 license.
613
614 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
615
616         * security-core-clr.c: Simplify get_reflection_caller not to call
617         mono_method_get_last_managed (another stack walk) and adjust the
618         callers to handle a (should not happen) NULL return value.
619
620 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
621
622         Add accessors to some MonoGenericParam fields
623         * class-internals.h (mono_generic_param_owner): New accessor.
624         (mono_generic_param_num): Likewise.
625         (mono_type_get_generic_param_owner): New helper.
626         (mono_type_get_generic_param_num): New helper.
627         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
628
629 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
630
631         * class-internals.h (mono_generic_container_get_param): New wrapper.
632         * class.c, icall.c, metadata.c, verify.c: Use it.
633
634 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
635
636         Fix gtest-252.cs
637         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
638         the standard case/loop.  In particular, don't complain about
639         references to generic type definitions.
640
641 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
642
643         * debug-helpers.c (dis_one): Decode string arguments.
644
645 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
646
647         * pedump.c (dump_verify_info): Dump type name correctly.
648
649 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
650
651         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
652         are larger than code size.
653
654         This can happen in valid code if the try/catch block is not followed by any instruction
655         and do a backward branch on the leave instruction.
656
657         Fixes #492494.
658
659 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
660
661         * security-core-clr.c: Fix typo while comparing second method names
662         in can_avoid_corlib_reflection_delegate_optimization
663
664 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
665
666         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
667
668         Fixes #487738.
669
670 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
671
672         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
673         a MVAR using a class context.
674
675         Fixes #490335.
676
677 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
678
679         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
680
681         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
682
683         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
684         functions supplied by the JIT for the SGEN GC.
685
686         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
687         
688 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
689
690         monitor.c (mono_monitor_try_enter_internal):
691         Added calls to profile monitor contentions.
692         Also duplicated a small piece of code (the "get the monitor" logic)
693         from the fast path to the slow path, and changed the relevant goto
694         statements, so that monitor acquisition events can be emitted from the
695         slow path (this is by Paolo Molaro).
696
697 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
698
699         * profiler.c, profiler.h, profiler-private.h:
700         Added support for profiling monitor contentions.
701
702 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
703
704         * metadata-verify.c: Verify the modules table.
705
706 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
707
708         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
709         using the context of the method been verifier and not of the method been called.
710
711         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
712         safely inflate generic types. 
713
714 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
715
716         * security-core-clr.c: Change the strategy for checking the 
717         "reflection using delegates optimization" to avoid unneeded 
718         attributes in multiple class libraries.
719
720 2009-04-02  Mark Probst  <mark.probst@gmail.com>
721
722         * sgen-gc.c: Remove object element in the disappearing link struct
723         by storing the object pointer in the link.
724
725 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
726
727         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
728
729 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
730
731         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
732
733         * verify.c (mono_method_verify): Do proper bounds checking of exception
734         clause ranges.
735
736 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
737
738         * loader.c (mono_field_from_token): Don't crash if the field parent could
739         not be decoded.
740
741 2009-03-31  Mark Probst  <mark.probst@gmail.com>
742
743         * sgen-gc.c: Execute critical finalizers after ordinary
744         finalizers.
745
746         * class-internals.h, domain.c: Add CriticalFinalizerObject to
747         mono_defaults.
748
749 2009-03-31 Jb Evain <jbevain@novell.com>
750
751         * verify.c (do_ldstr): don't check if a string is in the user strings
752         heap if the current image is dynamic.
753
754 2009-03-31  Mark Probst  <mark.probst@gmail.com>
755
756         * sgen-gc.c: Wait until the last finalizer has executed when
757         returning from WaitForPendingFinalizers.
758
759 2009-03-31  Martin Baulig  <martin@ximian.com>
760
761         * mono-debug-debugger.h (MonoDebuggerEvent): Add
762         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
763         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
764         (mono_debugger_event_create_appdomain): New function.
765         (mono_debugger_event_unload_appdomain): New function.
766
767         * appdomain.c (mono_domain_create_appdomain_internal): Call
768         mono_debugger_event_create_appdomain().
769
770 2009-03-31  Martin Baulig  <martin@ximian.com>
771
772         * mono-debug-debugger.c
773         (mono_debugger_register_class_init_callback): Also register the
774         class init callback if the class is already initialized to make
775         things work with shadow copied assemblies.
776
777 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
778
779         * security-core-clr.c
780         (mono_security_core_clr_ensure_reflection_access_field): Let 
781         critical code access the field (just like we do for methods). Use
782         check_field_access helper.
783         (mono_security_core_clr_ensure_reflection_access_method): Use 
784         check_field_access helper.
785
786 2009-03-31  Mark Probst  <mark.probst@gmail.com>
787
788         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
789         call the run-finalize function directly.
790
791         * gc.c, gc-internal.h: Make run_finalize() non-static.
792
793 2009-03-31  Mark Probst  <mark.probst@gmail.com>
794
795         * sgen-gc.c: Use a separate struct for disappearing links.
796
797 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
798
799         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
800         * MaxIOVectorLength enabled, just ignore them.
801         Fixes bug #349688.
802
803 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
804
805         * metadata-verify.c: Fix eglib build.
806
807 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
808
809         * threads-types.h: Fix the win32 build.
810
811 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
812
813         * class.c: move coreclr inheritance/override checks to 
814         security-core.clr.c
815         * security-core.clr.c|h: add code from class.c with additional
816         documentation. Fix override check when the method is not critical.
817
818 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
819
820         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
821         (match_class): Ditto.
822
823 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
824
825         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
826
827         * metadata-verify.c: Implement table layout row size calculation. Verify
828         the total size of the tables.
829
830 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
831
832         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
833
834 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
835
836         * appdomain.c:
837         * console-io.[ch]: added new mono_console_init() to make sure that
838         file descriptors 0, 1 and 2 are opened.
839         Bug #489019 fixed.
840
841 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
842
843         * appdomain.h: Export a new callback type and a new function to
844         set this callback. This allow a mono host to provide it's own
845         definition for "platform code".
846         * metadata-internals.h: Add a core_clr_platform_code flag on 
847         _MonoImage to (cache and) know if it is representing platform 
848         code.
849         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
850         on platform code images.
851         * security-core-clr.c|h 
852         (mono_security_set_core_clr_platform_callback): Allow the host
853         to provide it's own platform check definition.
854         (mono_security_core_clr_determine_platform_image): Detect if an 
855         image is platform code (using the specified callback).
856         (mono_security_core_clr_is_platform_image): Return cached value 
857         for platform code.
858
859 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
860
861         * threads.c (mono_create_thread): New helper function to wrap CreateThread
862         which has different parameter types for the 'tid' argument in windows and
863         the io-layer.
864
865         * appdomain.c attach.c threads.c: Use the new helper.
866
867 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
868
869         * metadata-verify.c: Verify valid table bits.
870
871 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
872
873         * metadata-verify.c (verify_metadata_header): Store size in the size field.
874
875         * metadata-verify.c: Add initial table schema verification.
876
877 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
878
879         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
880         obtain the refclass argument needed by mono_param_get_objects (). Fixes
881         #488383.
882
883         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
884
885         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
886
887 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
888
889         * security-core-clr.c: Add/update documentation
890
891 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
892
893         * marshal.c (emit_marshal_object): Generate code to throw an exception
894         instead of throwing it. Fixes #488670.
895
896 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
897
898         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
899         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
900         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
901         and add a call to mono_security_core_clr_ensure_delegate_creation
902         to do the extra checks required by CoreCLR.
903         * security-core-clr.c|h: Add function to check delegate creation,
904         both in the binding and accessibility, under CoreCLR.
905
906 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
907
908         * reflection.c (mono_reflection_create_dynamic_method): when 
909         coreclr is enabled make sure that every resolved object are
910         checked (e.g. field and method access).
911         * security-core-clr.c|h: Add function to check objects resolved
912         when a dynamic method is created.
913
914 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
915
916         * metadata-verify.c: Cache directory rva translations.
917
918         * metadata-verify.c: Add cli-header and streams verification.
919
920 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
921
922         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
923         the wrong offset (8 instead of 6).
924
925 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
926
927         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
928         methods, return the native function address itself. Fixes
929         #487758.
930
931 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
932
933         * console-io.c: some of the values for control characters might not be
934         present.
935
936 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
937
938         * exception.c|h: Add helpers to create [Field|Method]AccessException
939         * icall.c: Add required coreclr check calls for field reflection.
940         Move the existing (method) check logic into security-core-clr.c
941         * security-core-clr.c: Add functions to check if the access of a
942         field or method is allowed when reflecting under coreclr. This is
943         mostly done using a stack walk to find the "real" caller: i.e. the
944         code that is calling the reflection
945
946 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
947
948         * gc-internal.h: Change location of gc_wrapper.h
949
950 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
951
952         * class.c: Simplification to coreclr checks for overrides that
953         makes it easier to set breakpoints.
954
955 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
956
957         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
958         mono_security_core_clr_method_level): Avoid potential 
959         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
960         user/application code) and make it easier to set breakpoints
961
962 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
963
964         * metadata-verify.c: Reject cli header tables that mono don't handle.
965
966 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
967
968         * pedump.c: Fix CLI header dumping.
969
970 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
971
972         * metadata-verify.c: More CLI header verification.
973
974 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
975
976         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
977
978 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
979
980         * metadata-verify.c: Initial verification of the CLI header.
981
982 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
983
984         * metadata-verify.c (verify_resources_table): Fix verification of zero
985         sized resource section and id entries count.
986
987 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
988
989         * icall.c: Handle user types in many Type icalls. Fixes #486303.
990
991 2009-03-17  Jb Evain  <jbevain@novell.com>
992
993         * profiler.c: call mono_gc_base_init from mono_profiler_load.
994
995 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
996
997         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
998         (mono_gc_make_descr_for_array): Ditto.
999
1000 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1001
1002         * verify.c (mono_verifier_is_class_full_trust): Add support for
1003         CoreCLR security mode where trusted assemblies are defined as
1004         "platform code".
1005
1006 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1007
1008         * metadata-verify.c: Add minimal PECOFF resource verification.
1009
1010 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1011
1012         * metadata-verify.c: Be less restrictive with some coff fields.
1013
1014 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1015
1016         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
1017         params as boxed values on stack. Fixes #485706.
1018
1019 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1020
1021         * console-io.c: the termios values may vary in different flavors of unix.
1022
1023 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1024
1025         * console-io.[ch]: return the entire set of control characters when
1026         initializing the terminal.
1027         * appdomain.c: bump corlib version.
1028
1029 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
1030
1031         * mono-perfcounters.c: added support for in-process custom
1032         performance counters.
1033
1034 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1035
1036         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
1037
1038 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1039
1040         * metadata-verify.c: Verify the data pointed by the import table. 
1041
1042 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1043
1044         * metadata-verify.c (load_data_directories): Store data
1045         directory contents.
1046
1047         * metadata-verify.c: Verify the import table. 
1048
1049 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1050
1051         * metadata-verify.c: Verify data directories.
1052
1053 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1054
1055         * metadata-verify.c: Check section header flags.
1056
1057 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
1058
1059         * appdomain.c: if the assembly name is a shadow-copied file, return
1060         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
1061         in mono_make_shadow_copy.
1062         * icall.c: if the assembly name is a shadow-copied file, replace it
1063         with the original assembly path.
1064
1065         Bug #484244 fixed. NUnit tests for corlib can be run without
1066         --noshadow now.
1067
1068 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
1071         entries when the table is reallocated.
1072
1073         * icall.c: Allocate the memory used by the mono_ptr_array macros using
1074         mono_gc_alloc_fixed () since it contains GC refs.
1075
1076 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1077
1078         * reflection.c (ensure_complete_type): New helper function to call
1079         type resolve handlers for unfinished dynamic types.
1080         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1081
1082 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1085         #483247.
1086
1087 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1088
1089         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1090
1091 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1092
1093         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1094         between GCHandles of type WeakTrackResurrection and the objects they
1095         point to.
1096
1097         * gc.c: Partly implement the sematics of GCHandles of type 
1098         WeakTrackResurrection: these handles should only be cleared after the
1099         finalizer of the object they are pointing to has ran.
1100
1101 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1102
1103         * icall.c: Partially revert r126631 because using the jump
1104         trampolines for generic shared methods makes it superfluous.
1105
1106 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1107
1108         * threads.c (handle_store): Create the 'threads' hash table with the proper
1109         MONO_HASH_VALUE_GC type.
1110
1111 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1114         FIRST_GC_TRACKED.
1115
1116         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1117         and LAST_GC_TRACKED as a GC root.
1118
1119         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1120
1121         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1122         the static data even if it consists of 1 reference.
1123
1124         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1125         if there is a GC descriptor.
1126
1127         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1128         instead of through the GC since they contain no object references.
1129
1130 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1131
1132         * generic-sharing.c (instantiate_other_info): Always return a jump
1133         trampoline for method code.
1134
1135 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1136
1137         * culture-info-tables.h: generated to include the en-tt culture.
1138
1139 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1140
1141         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1142         capture the thread context.
1143
1144         * object.c (mono_async_result_new): Cache the invoke wrappers to
1145         ExecutionContext::Capture.
1146
1147 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1148
1149         * marshal.h: Add a prototype for what mono_compile_method returns
1150         for invoke wrappers.
1151
1152         * gc.c: Use the new prototype declaration.
1153
1154 2009-03-04  Geoff Norton  <gnorton@novell.com>
1155
1156         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1157         * gc-internal.h:
1158         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1159
1160 2009-03-04  Martin Baulig  <martin@ximian.com>
1161
1162         * mono-debug.h
1163         (mono_debugger_runtime_invoke): Removed.
1164
1165         * mono-debug-debugger.c
1166         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1167
1168 2009-03-02  Martin Baulig  <martin@ximian.com>
1169
1170         * mono-debug.h
1171         (mono_debugger_unhandled_exception): Removed.
1172         (mono_debugger_handle_exception): Removed.
1173         (mono_debugger_throw_exception): Removed.
1174
1175         * mono-debug.c
1176         (mono_debug_debugger_version): Bump to 5.
1177
1178         * mono-debug-debugger.c: Moved the exception handling code to
1179         ../mini/debug-mini.c
1180
1181 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1184         finalize_objects_hash.
1185
1186         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1187         
1188         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1189         field.
1190
1191         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1192         cache.
1193
1194         * image.c (mono_image_close): Free it.
1195         
1196         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1197         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1198         on the this argument.
1199
1200         * gc.c (run_finalize): Optimize the calling of the finalizers.
1201
1202 2009-03-03  Martin Baulig  <martin@ximian.com>
1203
1204         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1205         of the `MonoGenericInst' changes.
1206
1207 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1208
1209         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1210         mono_array_class_get_cached to reduce locking contention. Extract
1211         a domain var.
1212
1213         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1214         intermediary managed arrays. Use caching version of mono_array_new
1215         to allocate the result array.
1216
1217         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1218
1219         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1220
1221         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1222         to reduce locking contention.
1223
1224 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1225                 
1226         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1227         thunk builder code for the non-interface case.
1228
1229 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1230
1231         * object.c (get_generic_virtual_entries): New helper function to collect
1232         the virtual generic method instances which need to be added to an IMT
1233         thunk.
1234         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1235         Instead of creating a new IMT thunk, reset the vtable slot to the
1236         trampoline, the thunk will be created the next time the trampoline is called.
1237         (build_imt_slots): Add support for virtual generic methods in interfaces by
1238         adding to the IMT thunk all the methods registered using 
1239         mono_method_add_generic_virtual_invocation ().
1240
1241         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1242         (struct _MonoIMTCheckItem): Ditto.
1243
1244         * object.c (mono_method_add_generic_virtual_invocation): Take a
1245         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1246         the IMT thunk to include all items.
1247         
1248         * object.c (mono_class_create_runtime_vtable): Add a missing
1249         mono_loader_unlock ().
1250
1251 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1252
1253         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1254
1255         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1256
1257 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1258
1259         * object-internals.h: Rename _MonoReflectionEvent to
1260         MonoReflectionMonoEvent so it reflects the right managed type.
1261         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1262
1263         * icall.c:
1264         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1265         type.
1266
1267 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1268
1269         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1270         intermediary managed arrays. Use caching version of mono_array_new
1271         to allocate the result array.
1272
1273 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1274
1275         * reflection.c: Use cached version of mono_array_new alongside
1276         the mono_reflection_get_custom_attrs_by_type call path.
1277
1278 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1279
1280         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1281         intermediary managed arrays. Use caching version of mono_array_new
1282         to allocate the result array.
1283
1284         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1285
1286 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1287
1288         * icall.c: Add small implementation of a growable stack bound array.
1289
1290         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1291
1292         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1293         intermediary managed arrays. Use caching version of mono_array_new
1294         to allocate the result array.
1295
1296 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1297
1298         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1299         helps Enum::CompareTo to be implemented without reboxing all enums
1300         to their underlying type.
1301 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1304         since it acquires a global lock leading to scalability problems.
1305
1306         * profiler.c: Make the stat profiler work with multiple appdomains, this
1307         currently only works when no appdomains are unloaded.
1308
1309 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1310
1311         * appdomain.c: make the check to avoid copying when the assembly is
1312         already shadow copied actually work.
1313
1314 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1315
1316         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1317
1318         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1319         changes to the managed side.
1320
1321 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1322
1323         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1324         classes + a separate lock for it, as it is used frequently at runtime, not
1325         just during metadata loading/JIT compilation.
1326
1327         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1328         for szarrays.
1329         
1330         * object-internals.h (mono_class_from_name_cached): New macro to cache
1331         the results of the lookup locally without having to declare a static
1332         variable to hold it.
1333         (mono_class_get_field_from_name_cached): Ditto.
1334         (mono_array_class_get_cached): Ditto.
1335
1336         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1337         the new macros.
1338         
1339         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1340         slower search in metadata.
1341
1342         * pedump.c: Fix a warning.
1343
1344 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1345
1346         * reflection.c (encode_locals): Add checks for user types.
1347         (method_encode_clauses): Ditto.
1348         (method_encode_code): Ditto.
1349         (mono_image_create_token): Ditto.
1350
1351         * object-internals.h: Change the type of more fields from MonoReflectionType*
1352         to MonoObject*.
1353
1354 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1357         the a thread does not suspend within 100ms.
1358
1359         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1360         in addition to StopRequested as well.
1361
1362         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1363
1364         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1365         search the method_hash before inserting a new entry, to avoid crashes when
1366         the same method is inserted multiple times, causing the old 
1367         MonoDebugMethodInfo structure to be freed by the value dtor function.
1368
1369 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1370
1371         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1372         SO_EXLUSIVEADDRUSE where available.
1373
1374 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1377         runtime invoke wrappers, this time it is string ctor wrappers, which
1378         pass a dummy string as 'this' instead of their obj argument. Fixes
1379         #478473.
1380
1381 2009-02-21  Jb Evain  <jbevain@novell.com>
1382
1383         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1384         only get create_culture once.
1385
1386 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1389         check before the locking.
1390         
1391         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1392         (mono_reflection_create_runtime_class): Ditto.
1393         (mono_reflection_sighelper_get_signature_local): Ditto.
1394         (mono_reflection_sighelper_get_signature_field): Ditto.
1395
1396         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
1397         is a System.MonoType object or similar.
1398         (monotype_cast): New helper function to cast a MonoObject to a 
1399         MonoReflectionType object.
1400
1401         * object-internals.h: Change MonoReflectionType* members in structures to
1402         MonoObject* members to force the usage of the monotype_cast () function.
1403
1404         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
1405         structures/arrays. This causes us to assert instead of crashing when 
1406         instances of user defined subclasses of System.Type are encountered.
1407
1408 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1409
1410         * cil-coff.h:
1411         * icall-def.h:
1412         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
1413         win32 resource loaded from a PE file.
1414
1415         * image.c: fix mono_image_lookup_resource.
1416
1417 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1418
1419         * icall-def.h:
1420         * threads-types.h:
1421         * threads.c: added internal call for WaitHandle.SignalAndWait.
1422
1423 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
1424
1425         * cominterop.c : Adding cominterop_type_from_handle and 
1426           registering it as an icall.  Replacing all references
1427           to type_from_handle.
1428
1429         Code is contributed under MIT/X11 license.
1430
1431 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1432
1433         * Makefile.am: Add lock-tracer.h and lock-trace.c.
1434
1435         * appdomain.c: Call the tracer init function.
1436
1437         * domain-internals.h: Enable the tracer for the domain locks.
1438
1439         * image.c: Enable the tracer for image locks.
1440
1441         * loader.c: Enable the trace for the loader lock.
1442
1443         * lock-tracer.h:
1444         * lock-tracer.c: Initial implementation of the lock trace utility.
1445         The tracer requires a compile time define to be enabled and a env var
1446         to be enabled at runtime.
1447
1448 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1449
1450         * domain.c (mono_domain_code_foreach): Improve documentation.
1451
1452 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1453
1454         * appdomain.c:
1455         * generic-sharing.c:
1456         * object.c:
1457         * reflection.c:  Adjust locking order to the new semantics where the loader lock
1458         comes first.
1459
1460 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1461
1462         * domain.c: Add mono_domain_code_* functions that perform locking
1463         around the domain codeman.
1464
1465         * domain-internals.h: Export those functions.
1466
1467         * object.c: Use new functions instead of acquiring the domain lock.
1468
1469 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
1470
1471         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
1472         delegate. Fixes #477396.
1473
1474 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1475
1476         * reflection.c (create_custom_attr): Get rid of alloca.
1477
1478 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
1479
1480         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
1481           Adding exception handling for all CCW calls.
1482
1483         Code is contributed under MIT/X11 license.
1484
1485 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
1488
1489         * marshal.c (emit_marshal_boolean): Add null checks to the new 
1490         native->managed marshalling code. Fixes #476247.
1491
1492 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * class.c (mono_class_get_vtable_entry): Move the addition of
1495         static rgctx invoke wrappers for vtable methods here, this simplifies
1496         a lot of code and causes fewer rgctx wrappers to be created.
1497
1498         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
1499         name of the statistics to begin with an uppercase.
1500
1501 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1502
1503         * reflection.c: Revert previous change as it breaks the build.
1504         
1505 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1506
1507         * verify.c: Properly handle SZARRAY element type.
1508
1509         Fixes #474271.
1510
1511 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1512
1513         * reflection.c (mono_image_create_method_token): Correctly encode
1514         MethodDef MemberRefParent token.
1515
1516         Fixes #472845.
1517
1518 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1519
1520         * image.c (mono_image_close): Delete the critical section before
1521         freeing the memory holding it.
1522
1523 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1524
1525         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
1526         Fixes #476257.
1527
1528 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1529
1530         * pedump.c (main): Call mono_marshal_init so pedump
1531         doesn't crash.
1532
1533 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * loader.c (method_from_memberref): Properly fix #474271 and
1536         don't break the runtime bad.
1537
1538 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1539
1540         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
1541         (mono_domain_alloc0): Ditto.
1542
1543 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1544
1545         * loader.c (method_from_memberref): Don't abort if the array
1546         method is not found. A regular loader failure is more informative
1547         and correct.
1548
1549         Fixes #474271.
1550
1551 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1552
1553         *loader.c: Guard MonoImage::method_cache/methodref_cache
1554         using the image lock instead of the loader lock.
1555
1556         * metadata.h: Add comments about which fields are protected by
1557         the image lock.
1558
1559 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
1562
1563         * generic-sharing.c (mono_method_construct_object_context): Remove the
1564         wrapper_type == NONE assert, it is not needed.
1565
1566 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1567
1568         * reflection.c (clear_cached_object): New helper function.
1569         (mono_method_clear_object): New function to clear the cached reflection
1570         objects for a dynamic method.
1571
1572         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
1573         Partly fixes # 463323.
1574         
1575 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1576
1577         * class.c:
1578         * loader.c:
1579         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
1580
1581 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1582
1583         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
1584         take the image lock instead of the loader lock.
1585
1586         * metadata-internals.h: Export new functions.
1587
1588 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1589
1590         * domain.c (app_config_parse): Remove another use of stat that is
1591         not necessary as g_file_get_contents already does the presence
1592         check. 
1593
1594 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1595
1596         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
1597
1598         * marshal.c: Move the bstr handling code to cominterop.c.
1599
1600         * marshal.c: Remove some COM interop code missed previously.
1601
1602 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1603
1604         More Paolo patches from the Wii port:
1605         
1606         * security.c: Remove ves_icall_System_Environment_get_UserName
1607         from here.
1608
1609         * icall.c: And put ves_icall_System_Environment_get_UserName
1610         here. 
1611
1612         * appdomain.c (mono_set_private_bin_path_from_config): Remove
1613         redundant call to stat that was only used to test for the file
1614         existence.   Patch from Paolo.
1615
1616         * gc.c (run_finalize): If COM is disabled, do not link in
1617         mono_marshal_free_ccw.
1618
1619         * generic-sharing.c: Use alloca.h here as well.
1620
1621 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
1622
1623         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
1624
1625 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * cominterop.c cominterop.h: New files.
1628
1629         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
1630         function/typedefs which are needed by cominterop.c global.
1631
1632 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1633
1634         * generic-sharing.c: Don't take the loader lock to guard image
1635         mempool allocs.
1636
1637 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1638
1639         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
1640         called without the loader lock which is required to guard MonoImage:tokens.
1641
1642 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1643
1644         * class.c:
1645         * metadata.c:
1646         * method-builder.c:
1647         * marshal.c:
1648         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
1649
1650 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1651
1652         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1653         Rework the code to use regular mono_image_alloc/0.
1654
1655         * loader.c: Rework the code to use regular mono_image_alloc/0.
1656
1657         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1658
1659 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
1660
1661         * object-internals.h : Fixing a typo in the 
1662           MonoReflectionComVisibleAttribute struct.
1663
1664         * marshal.c (cominterop_com_visible): Check the implemented 
1665           interfaces for ComImport.
1666
1667         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
1668           assume that bools should be treated as VARIANTBOOLs.
1669
1670         * marshal.c (emit_marshal_boolean): Adding cases for 
1671           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
1672
1673         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
1674           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
1675
1676         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
1677           should be treated as VARIANTBOOLs.    
1678
1679         Code is contributed under MIT/X11 license.
1680
1681 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1682
1683         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
1684         allocation with the image lock.
1685
1686 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1687
1688         This patch is the last of a series to remove explicit reference of MonoImage::mempool
1689         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
1690
1691         * object.c: Add mono_string_to_utf8_image.
1692
1693         * object-internals.h: Export mono_string_to_utf8_image.
1694
1695         * reflection.c: Rework all explicit references to the the image mempool to go thought
1696         the mono_image_alloc set of functions.
1697
1698 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1699
1700         This patch is the third of a series to remove explicit reference of MonoImage::mempool
1701         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
1702         and generics-sharing.c.
1703
1704         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
1705         as first argument. Note that this function remains broken as it doesn't perform locking around the
1706         mempool allocation.
1707
1708         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
1709
1710         * image.c: Add g_slist_append_image.
1711
1712         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
1713         the supplied image for allocation. Move code into mono_metadata_field_info_full.
1714
1715         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
1716         Fix all related code to do the same.
1717
1718         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
1719
1720         * metadata-internals.h: Fix the signatures.
1721
1722 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1723
1724         This patch is the second of a series to remove explicit reference of MonoImage::mempool
1725         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
1726         and similar to work using MonoImage.
1727
1728         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
1729         MonoMemPool.
1730
1731         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
1732
1733         * class.c (mono_metadata_signature_deep_dup): Same.
1734
1735         * class.c (inflate_generic_type): Same.
1736
1737         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
1738
1739         * metadata.c (mono_metadata_signature_dup_full): Same.
1740
1741         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
1742         mono_metadata_signature_dup_full.
1743
1744         * metadata.c (mono_metadata_type_dup): Same.
1745
1746         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
1747
1748         * reflection.c: Same.
1749
1750         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
1751
1752         * metadata-internals.h: Fix the signatures.
1753
1754         * class-internals.h: Same.
1755
1756 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1757
1758         This patch is the first of a series to remove explicit reference of MonoImage::mempool
1759         and use mono_image_alloc set of functions instead. 
1760
1761         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
1762         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
1763         of a MonoMemPool.
1764
1765         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
1766
1767         * class.c (g_list_prepend_mempool): Removed.
1768
1769         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
1770
1771         * image.c: Add g_list_prepend_image.
1772
1773         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
1774
1775         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
1776
1777
1778 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1779
1780         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
1781         mono_image_unlock.
1782
1783         * image.c (mono_image_init): Init the lock field.
1784  
1785         * image.c (mono_image_init): Cleanup the lock field.
1786
1787         * image.c: Add mono_image_(un)lock functions.
1788
1789 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1790
1791         * class.c, class-internals.h: mono_method_get_context_general()
1792         combines the functionality of mono_method_get_context() and
1793         mini_method_get_context().
1794
1795         * generic-sharing.c, domain-internals.h:
1796         mono_method_construct_object_context() and
1797         mono_domain_lookup_shared_generic() moved from mini.
1798
1799         * icall.c (ves_icall_InternalInvoke): Handle the case where the
1800         method doesn't have the correct instantiation because it's shared
1801         generic code.  Fixes #473999.
1802
1803 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
1806
1807         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
1808         
1809 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1810
1811         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
1812
1813         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
1814
1815         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
1816         and recheck the cache for dups after it.
1817
1818         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
1819
1820         Fixes one of the deadlocks found in #473150.
1821
1822 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
1823
1824         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
1825           For Win32, add additional break conditions for accept.
1826
1827         Code is contributed under MIT/X11 license.
1828
1829 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
1830
1831         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
1832         lazily initialize the native wrapper cache.
1833         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
1834         cache, since they are different from the normal wrappers.
1835
1836         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
1837
1838         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
1839         AOT compiled native wrappers.
1840
1841 2009-02-09  Geoff Norton  <gnorton@novell.com>
1842
1843         * appdomain.h:
1844         * security-core-clr.c: Allow enabling core-clr from the embedding
1845         API.
1846
1847 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1848
1849         * socket-io.c: when requesting all the local ips, if there are no
1850         interfaces up and running, MS returns 127.0.0.1.
1851
1852 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1853
1854         * mono-perfcounters-def.h: processor time is an inverse time.
1855         Fixes bug #468625.
1856
1857 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1858
1859         * socket-io.c: an empty host name returns the list of local IPs.
1860         Fixes bug #386637 part 1/2.
1861
1862 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * verify.c (mono_class_interface_implements_interface): Call
1865         mono_class_setup_interfaces ().
1866         (merge_stacks): Ditto.
1867
1868 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * class.c (mono_class_setup_interfaces): New function to lazily initalize
1871         klass->interfaces.
1872         (mono_generic_class_get_class): Don't initalize klass->interfaces.
1873         (mono_generic_class_get_class): Ditto.
1874
1875 2009-02-06  U-QUACK\miguel  <miguel@quack>
1876
1877         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
1878         they live in security.c
1879
1880         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
1881         another bit from Paolo's code.
1882
1883 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * object.c (build_imt_slots): Add a small optimization to avoid inflating
1886         methods which will be discarded by add_imt_builder_entry ().
1887
1888         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
1889         need to be boxed.
1890
1891         * loader.c: Add a statistics for the size of the memberref signature cache.
1892         
1893         * loader.c (find_cached_memberref_sig): New helper function.
1894         (cache_memberref_sig): Ditto.
1895
1896         * loader.c: Cache the result of parsing memberref signatures, since otherwise
1897         they will be parsed again for every generic instantiation, leading to unbounded
1898         memory growth.
1899
1900 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
1903         parameters of generic methods.
1904
1905         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
1906         after the original method is copied to the inflated method.
1907         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
1908
1909         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
1910         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
1911
1912         * class.c metadata.c: Update after the changes above.
1913
1914 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
1915
1916         * metadata-verify.c: Simplified error handling and added
1917         section table validation.
1918
1919 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1920
1921         * class-internals.h (MonoClassExt): New structure containing rarely used
1922         fields of MonoClass.
1923         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
1924         through a new 'ext' field.
1925
1926         * class.c (mono_class_alloc_ext): New helper function to allocate 
1927         class->ext.
1928
1929         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
1930
1931 2009-02-05  Mark Probst  <mark.probst@gmail.com>
1932
1933         * object.c (mono_object_get_virtual_method): Properly inflate
1934         generic methods.  Fixes #472692.
1935
1936 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
1937
1938         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
1939         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
1940         for the parent type, the created type must be ready to be used on a generic
1941         instantiation.
1942         We fill this_arg/byval_arg if the parent is a generic instance to make sure
1943         we won't have duplicated entries in generic_inst_cache.
1944
1945         Fixes #469553.
1946
1947 2009-02-05  Miguel De Icaza  <miguel@novell.com>
1948
1949         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
1950         replace with plain BSD per the comments on the bug MONO77637.
1951
1952 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * class.c (mono_class_get_generic_class): New accessor function.
1955         (mono_class_get_generic_container): Ditto.
1956
1957         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
1958         fields, similar to the ones in MonoMethod.
1959
1960         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
1961         (mono_class_create_from_typedef): Set klass->is_generic if needed.
1962
1963         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
1964         
1965         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
1966         the same information as element_class->byval_arg.
1967
1968         * class.c reflection.c: Remove references to class->byval_arg.
1969
1970         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
1971         klass->enum_basetype directly.
1972
1973         * verify.c metadata.c object.c icall.c reflection.c: Use 
1974         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
1975         directly.
1976
1977 2009-02-04  Miguel de Icaza  <miguel@novell.com>
1978
1979         * icall-def.h: Remove internal calls for sockets when
1980         DISABLE_SOCKET is defined, file system writing features when the
1981         OS only support reading and not writing data and Policy support if
1982         the Policy is disabled.
1983         
1984         * image.c (do_mono_image_open): Apply Paolo's patches for using
1985         mono_file_map_ APIs here.
1986
1987         * assembly.c: Add support for platforms to avoid prefix
1988         auto-detection. 
1989
1990 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
1993         warning.
1994
1995         * class.c (mono_class_inflate_generic_class): New helper function.
1996
1997         * class.c: Use mono_class_inflate_generic_class in a few places. Add
1998         statistics for inflated methods/classes.
1999
2000         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
2001
2002         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
2003         the call is made from Delegate.CreateDelegate () for the invoke method of
2004         a delegate.
2005
2006         * loader.c: Add a statistics for the memory occupied by inflated signatures.
2007
2008         * metadata.c (mono_metadata_signature_size): New helper function.
2009
2010         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
2011         generic instances.
2012
2013         * metadata.c (inflated_method_in_image): Avoid calling 
2014         mono_method_signature () if the method does not already have a signature.
2015
2016 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2017
2018         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
2019         valuetype is compatible with target type, check by inheritance as a
2020         VT is not really compatible with System.ValueType, for example.
2021
2022         * verify.c (do_invoke_method): Improve error message.
2023
2024         * verify.c (do_box_value): If boxing a nullable, use the type argument
2025         on stack instead.
2026
2027         * verify.c (do_newobj): Improve error message.  
2028
2029         Fixes #469549.
2030
2031 2009-02-03  Miguel de Icaza  <miguel@novell.com>
2032
2033         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
2034
2035 2009-02-03  Mark Probst  <mark.probst@gmail.com>
2036
2037         * generic-sharing.c: Don't hold domain lock when calling
2038         instantiate_other_info().  Fixes #471958.
2039
2040         * domain-internals.h, loader.c: Describe locking policy of domain
2041         lock vs loader lock.
2042
2043 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2044
2045         * verify.c (mono_delegate_signature_equal): Make it possible to check
2046         first-arg-bound delegates to static method.
2047
2048         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
2049         static methods with the first arg bound.
2050
2051         Fixes #469529.
2052
2053 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2054
2055         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
2056         errors.
2057
2058         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
2059         under strict mode. Any type, when boxed can be seen as a reference type.
2060
2061         Fixes #469528.
2062
2063 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2064
2065         * object.h: The lower bound of an array is a signed integer value.
2066         Introduce mono_array_lower_bound_t typedef. It should be used instead of
2067         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
2068
2069         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
2070         calculate the upper bound.
2071         
2072         Fixes #471252.
2073
2074 2009-02-02  Miguel de Icaza  <miguel@novell.com>
2075
2076         From Paolo's work, refactored, cleared up:
2077         
2078         * threadpool.c, icall.c: ifdef code that requires a working socket
2079         stack.
2080
2081         * metadata.c (mono_metadata_field_info): Do not attempt to return
2082         a value from a function declared as void.
2083
2084         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2085         from the console stack.
2086
2087         * assembly.c: use strrchr instead of rindex.
2088
2089         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2090         alloca.h on systems that have it.
2091
2092         * environment.c: Avoid code that uses stuff from
2093         HAVE_SYS_UTSNAME_H
2094         
2095         * appdomain.c: Include sys/time.h.
2096
2097         * console-io.c: include sys/ioctl.h if it is available.
2098
2099 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2102
2103         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2104         the method builder.
2105
2106         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2107         after it was created and cached, as the later is not thread safe.
2108         
2109 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2110
2111         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2112         called while the debugging module is not initialized. Fixes #471669.
2113
2114 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2115
2116         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2117
2118         Fixes #471255.
2119
2120 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2121
2122         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2123         loader lock is not taken while the templates lock is held.  Fixes
2124         #471089.
2125
2126 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2127
2128         * metadata.c (type_in_image): Added a check to fix a monodis
2129         crash.
2130
2131 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2132
2133         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2134         nullable arguments.
2135
2136         * object.c (mono_runtime_invoke_array): Ditto.
2137         
2138         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2139         freeing wrappers of dynamic methods.
2140
2141         * loader.c (mono_free_method): Call it. Fixes #463323.
2142         
2143         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2144         methods taking vtype/byref arguments, to fix yet another bug caused by
2145         the sharing of runtime invoke wrappers. Partly fixes #471259.
2146
2147 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2150         <first file in file table>:1 when the IL offset does not have an associated
2151         line number.
2152
2153 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2154
2155         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2156         variable info for a method.
2157
2158         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2159         
2160 2009-01-30  Jb Evain  <jbevain@novell.com>
2161
2162         * pedump.c: reuse code from monodis to make sure pedump honors
2163         MONO_PATH, which is needed to verify net_2_1 assemblies.
2164
2165 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2166
2167         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2168         there is no line number info.
2169
2170 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2171
2172         Avoid some MonoType allocations
2173         * reflection.c (mono_reflection_initialize_generic_parameter):
2174         Reuse MonoType from param->pklass rather than allocating one.
2175         (mono_dynamic_image_free): Update to changes.
2176
2177 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2178
2179         Rearrange some code to improve consistency
2180         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2181         (mono_reflection_initialize_generic_parameter): ... here.
2182
2183 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2184
2185         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2186         with type constraints as an experiment.
2187
2188         * boehm-gc.c (on_gc_notification): Update mono_stats.
2189
2190 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2191
2192         Avoid some allocations
2193         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2194         pointer to tail array to avoid extra allocation.
2195         * metadata.c (free_generic_inst): Update to changes.
2196         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2197         on-stack struct.
2198
2199 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2200
2201         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2202         return TRUE if the two type objects are the same.
2203
2204 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2205
2206         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2207         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2208         klass->min_align, since klass->min_align contains the managed alignment,
2209         while the native alignment can be different, like for longs on x86.
2210         Fixes #469135.
2211
2212         * class-internals.h (MonoMarshalType): Add a min_align field.
2213
2214 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2215
2216         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2217         the 1.0 format.
2218
2219 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2220
2221         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2222         some comments about the usage of the used_regs field.
2223
2224         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2225         Fixes #469217.
2226
2227 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2228
2229         * appdomain.c: return NULL instead of throwing FileNotFoundException
2230         when LoadAssembly() fails.
2231
2232 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2233
2234         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2235         image if the owner is NULL.  Fixes the AOT failures.
2236
2237 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2240         MonoGenericParam structure using memset so the image field is initialized
2241         as well.
2242
2243 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2244
2245         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2246         a plain store.
2247
2248 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * class.c (mono_class_setup_vtable_general): In the generic instance
2251         optimization, set method->slot for abstract virtual methods. Fixes part of
2252         #467834.
2253
2254 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2255
2256         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2257         which signals that the unloading has started but all appdomain services must
2258         remain operational.
2259
2260         * appdomain.c (mono_domain_unload): The initial state for unloading now
2261         is unloading_start and we switch to unloading after the managed call to
2262         AppDomain::DomainUnload has finished.
2263
2264         The new unloading state has to be created because managed code in the
2265         DomainUnload event can depend on things like the threadpool still working.
2266         The domain must remain fully functional while the event executes.
2267
2268         This shown as an issue due to Process::WaitForExit, which waits for
2269         async reads of stdout and stderr to complete. Since those are processed
2270         in the threadpool the code deadlocks because the DomainUnload callback 
2271         waits for the async read finished event, which should have been set by a
2272         threadpool job but has been discarded due to the domain been in unload
2273         state.
2274
2275 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2276
2277         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2278         image must match.
2279
2280 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2281
2282         * reflection.c (resolve_object): For fields, inflate the class and
2283         then get the field in the inflated class.
2284
2285 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2286
2287         * object-internals.h (struct _MonoException): Added a comment
2288         explaining the new use of trace_ips.
2289
2290 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2291
2292         * generic-sharing.c (inflate_other_data): Inflate array methods
2293         correctly.
2294
2295         * loader.c, class-internals.h: Rename search_in_array_class() to
2296         mono_method_search_in_array_class() and make it non-static.
2297
2298 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2299
2300         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2301         Hopefully fixes #458168.
2302
2303 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2304
2305         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2306         as it is performed elsewhere.
2307
2308         Code is contributed under MIT/X11 license
2309
2310 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2311
2312         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2313         requests queued.
2314         * object.c (mono_raise_exception): Increment the exceptions total
2315         counter when an exception is thrown.
2316         * class-internals.h: Add a location for storing the total number of
2317         asp.net requests served.
2318         * mono-perfcounters.c: Implement update support for asp.net counters
2319         from the class libraries. Implement read support for asp.net counters
2320         and exceptions total counter.
2321
2322 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2325         accessing klass->methods. Fixes #467385.
2326
2327 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2328
2329         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2330         for byval arguments without an [Out] attribute. Fixes #467212.
2331
2332         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2333         Fix compilation under android.
2334         
2335         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2336         processed, scan them directly after they are copied, to achieve better locality
2337         and cache usage.
2338
2339         * socket-io.c: Applied patch from Koushik Dutta
2340         (koush@koushikdutta.com). Disable IPV6 when running under android.
2341
2342 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * icall.c (ves_icall_InternalExecute): Add write barriers.
2345
2346         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2347         the GC code.
2348
2349         * sgen-gc.c: Implement write barriers in IL code.
2350
2351 2009-01-17  Geoff Norton  <gnorton@novell.com>
2352
2353         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2354
2355 2009-01-17  Geoff Norton  <gnorton@novell.com>
2356
2357         * image.c: When unloading the image->references table, there can be gaps
2358         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2359         when unloading an appdomain.
2360
2361 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2364         speed up ptr-in-nursery checks.
2365
2366         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2367         threads_lock () to prevent deadlocks.
2368
2369         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2370         does not need to be scanned during minor collections, since writes to it
2371         must use write barriers.
2372
2373 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2374
2375         * metadata-verify.c: Add pe nt header verification.
2376         
2377 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2378
2379         * gc.c: Fix a few warnings when using SGEN.
2380
2381 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2382
2383         * metadata-verify.c: Add pe optional header verification.
2384
2385 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2386
2387         * sgen-gc.c: Add support for user defined marker functions, used by
2388         MonoGHashTable to avoid registering a GC root for every hash node.
2389
2390 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2391
2392         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
2393         non-pinned roots into separate hashes to avoid having to traverse them
2394         in functions which are only interested in one kind.
2395
2396 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2397
2398         * metadata-verify.c: Add pe header machine field verification.
2399         
2400 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2401
2402         * metadata-verify.c: Add pe header size verification.
2403
2404 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
2407         using the GC, they don't contain references.
2408
2409         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
2410
2411 2009-01-13  Geoff Norton  <gnorton@novell.com>
2412
2413         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
2414         AppDomains created on the native side can be cleaned up on the native side.
2415
2416 2009-01-13  Geoff Norton  <gnorton@novell.com>
2417
2418         * appdomain.c: Ensure that we call mono_context_init for the embedding api
2419         as well as the managed api.
2420
2421 2009-01-13  Geoff Norton  <gnorton@novell.com>
2422
2423         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
2424         with a MonoAppDomain initialized against it.
2425
2426 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2427
2428         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
2429         
2430         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
2431
2432         * marshal.c: Avoid setting the exception clauses after a method has been entered 
2433         into the wrapper caches. Fixes #465700.
2434
2435         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
2436         method builder.
2437         (mono_mb_create_method): Set the clauses from the method builder.
2438
2439 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2440
2441         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
2442         Patch from Makoto Kishimoto.
2443
2444 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
2447         encoding them as ROOT_DESC_COMPLEX.
2448         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
2449
2450 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
2453         no longer point to the nursery.
2454
2455         * sgen-gc.c: Add a few comments/FIXMEs.
2456         
2457         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
2458
2459         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
2460         initialization of the various _method variables thread safe. Fixes
2461         #465377.
2462
2463 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2464
2465         * domain.c, domain-internals.h: Remove the shared_generics_hash
2466         and its lookup functions.
2467
2468 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
2469
2470         * socket-io.c:  Fixing the MSVC build. 
2471
2472         Code is contributed under MIT/X11 license.
2473
2474 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
2475
2476         * metadata-verify.c: Add pe header watermark verification.
2477
2478 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2479
2480         * metadata-verify.c: Add lfanew verification.
2481
2482 2009-01-12  Jb Evain  <jbevain@novell.com>
2483
2484         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
2485         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
2486
2487 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * socket-io.c: Fix the build.
2490
2491         * environment.c: Fix an #ifdef.
2492
2493 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2494
2495         * threadpool.c (async_invoke_thread): Handle the wait function returning
2496         WAIT_IO_COMPLETION as well.
2497         (async_invoke_io_thread): Ditto.
2498
2499 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
2500
2501         * threads.c: Fixing the Windows build.
2502
2503         Code is contributed under MIT/X11 license.
2504
2505 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2506  
2507         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
2508         interrupt a wait.
2509         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
2510         the thread to wait again.
2511
2512 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2513
2514         * metadata-verify.c: Initial skeleton of the metadata verifier.
2515
2516         * pedump.c: Add support for the metadata verifier.
2517
2518         * verify-internal.h: Export the whole assembly metadata verifier function.
2519
2520 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2521
2522         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
2523
2524 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2525
2526         * Makefile.am: Upgrade dtrace-prelink.sh location.
2527
2528 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2529
2530         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
2531         well. Otherwise the shutdown deadlock that happens on unix will can happen
2532         as well.
2533         If the main thread code finishes too fast it's possible that the finalizer
2534         thread won't have executed yet, won't record itself as the finalizer thread
2535         and the shutdown sequence will wait on it forever.
2536
2537 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2538
2539         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
2540         with MSVC.
2541
2542 2009-01-08  Miguel de Icaza  <miguel@novell.com>
2543
2544         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
2545         Robert Jordan for pointing this out.
2546
2547 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
2548
2549         * icall.c
2550         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
2551         ves_icall_System_IO_DriveInfo_GetDriveType.
2552
2553 2009-01-07  Miguel de Icaza  <miguel@novell.com>
2554
2555         * icall.c: Wrap calls to mono_strtod in CriticalSection
2556         invocations when using eglib, to work around #464316.
2557
2558 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2559
2560         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
2561         return value of GetCurrentDirectory to never access unitialized memory.
2562
2563 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2564
2565         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
2566         return value of GetCurrentDirectory and expand the buffer if needed.
2567
2568         Fixes #459094.
2569
2570 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
2571
2572         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
2573           Adding a call to mono_init_com_types.
2574
2575         Code is contributed under MIT/X11 license.
2576
2577 2009-01-07  Geoff Norton  <gnorton@novell.com>
2578
2579         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
2580         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
2581         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
2582         be the value of the ip buffer.
2583
2584 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2585
2586         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
2587         interfaces_packed here.
2588
2589         Fixes part of #463294.
2590
2591 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2592
2593         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
2594
2595         Fixes part of #463294.
2596
2597 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2598
2599         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
2600         is a boxed complex as well.
2601
2602         Fixes part of #463294.
2603
2604 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2605
2606         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
2607         control if a methodspec should be created for the generic method definition from external assemblies.
2608         Caching of methodspec is done using the handleref hash table.
2609
2610         Fixes #462592.
2611
2612 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
2613
2614         * loader.c (find_method): When searching the interfaces of a class
2615         check the transitive closure of implemented interfaces.
2616
2617         Fixes #463303.
2618
2619 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2620
2621         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
2622         
2623 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2624
2625         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
2626         interfaces calculation to fill_valuetype_array_derived_types.
2627
2628         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
2629         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
2630         for example.
2631
2632         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
2633         interfaces for valuetypes if needed.    
2634
2635         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
2636         for their basetype as well. Types are array expanded if rank is > 0.
2637
2638         Fixes #400716.
2639
2640 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
2641
2642         * socket-io.h : Changing the signature of
2643           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
2644           the blocking state.
2645
2646         * icall-def.h :  Changing the signature of
2647           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
2648
2649         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
2650           For Windows only.  Avoid blocking when calling accept by
2651           querying for a connection via select.  The loop also queries
2652           the thread state every 1000 micro seconds for the thread
2653           stop state.  This will avoid the process hanging on shutdown
2654           when using a TcpChannel that is never connected to.
2655
2656         Code is contributed under MIT/X11 license.
2657
2658 2008-12-30  Marek Safar  <marek.safar@gmail.com>
2659
2660         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
2661
2662 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2663
2664         * class.c (get_implicit_generic_array_interfaces): Extract common
2665         code to a helper function making it a lot easier on the eyes.
2666
2667 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2668
2669         * class.c (get_implicit_generic_array_interfaces): If the internal
2670         enumerator is an interface inflate System.Object instead of itself.
2671
2672         Fixes #461261.
2673
2674 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
2675
2676         * object.c (mono_runtime_invoke_array): Don't assert with
2677         byref nullable types.
2678
2679         * marshal.c (mono_marshal_get_runtime_invoke): To handle
2680         byref nullables we unbox the object and store it on the
2681         stack. 
2682         We can't use the boxed object since it is the T of Nullable<T>
2683         and the boxed representation of a nullable it's underlying type
2684         or null.
2685         We could cheat and create a boxed nullable and use the same
2686         machinery of other byref VTs but this feels like a hack and
2687         using the stack has the bonus of reducing heap pressure.
2688
2689         Fixes #461941.
2690
2691 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
2692
2693         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
2694         return value.
2695
2696         Fixes #461867.
2697
2698 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
2699
2700         * icall-def.h : Adding an internal call definition for 
2701           System.Environment.internalBroadcastSettingChange.
2702
2703         * icall.c : Adding a Windows only implementation to broadcast a 
2704           WM_SETTINGCHANGE when an environment variable has changed.
2705
2706         Code is contributed under MIT/X11 license.
2707
2708 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2709
2710         * class.c, class-internals.h: Made
2711         mono_class_has_parent_and_ignore_generics() non-static.
2712
2713 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
2714
2715         * image.c: deal with the mmap failing when loading an image.
2716
2717 2008-12-17  Geoff Norton  <gnorton@novell.com>
2718
2719         * threadpool.c: Ensure that the io_queue_lock is initialized
2720         in all circumstances, as we always attempt to cleanup against it.
2721
2722 2008-12-17  Miguel de Icaza  <miguel@novell.com>
2723
2724         * icall.c (ves_icall_System_Environment_get_Platform): For
2725         compatibility reasons for existing client code we will keep
2726         returning 4 for a while.   
2727
2728         For how long will depend on the documentation being updated, and
2729         for us to give client code a chance to be updated.
2730
2731         This reverts the original decison on #433108 since we did not
2732         catch roughly 33 instances of the broken code in our own source
2733         code base, we did not catch failures on the buildbots, and QA did
2734         not bring this as a problem.
2735
2736         Only today I found some customer's code breaking due to our own
2737         class libraries not being fully updated and tracked it down to
2738         this change.  I am reverting it because if we could not even get
2739         our story straight in our own code base, how can we hope that our
2740         end user code be fixed?
2741
2742         As of this morning, our Wiki page that documents how to detect
2743         Unix had not been fixed.    
2744
2745 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
2746
2747         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
2748
2749         * class.c (mono_class_get_fields): Handle loading errors.
2750
2751 2008-12-12 Mark Mason <mmason@upwardaccess.com>
2752
2753         * 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.
2754         
2755 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
2756
2757         * mono-perfcounters.c: avoid warning.
2758
2759 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2760
2761         * reflection.c (ensure_runtime_vtable): Work on generic instances and
2762         make sure all interfaces have MonoClass::interface_id set.
2763
2764         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
2765         method table is property set.
2766
2767 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2768
2769         * class.c: New function mono_class_setup_interface_id that setup
2770         MonoClass::interface_id if needed.
2771
2772         * class-internals.h: Export new function.
2773
2774 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2775
2776         * class.c: Add code to sanity check the vtable after setup_vtable_general
2777         has done it's work.
2778
2779 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2780
2781         * icall.c: make Assembly.GetExecutingAssembly work properly when
2782         reflection is used to invoke the method.
2783         Bug #321781 fixed.
2784
2785 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2786
2787         * metadata/generic-sharing.c: Look for constraints in all type
2788         arguments, not just the first one.
2789
2790 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2791
2792         * appdomain.c: return the correct CodeBase for an Assembly instance
2793         that was loaded from the shadow-copy directories.
2794         Bug #458190 fixed.
2795
2796 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2797
2798         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
2799
2800         * sgen-gc.c (check_object): New debugging helper function.
2801
2802         * object.c: Fix calls to mono_value_copy_array ().
2803
2804 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2805
2806         * class.c (mono_class_setup_fields): If working on an inflated class
2807         first check if the generic definition did init with success.
2808
2809         Fixes #445361.
2810
2811 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2812
2813         pedump.c (main): Fix a warning.
2814
2815 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
2816
2817         * object-internals.h : Adding a definition for 
2818           MonoReflectionComVisibleAttribute.
2819
2820         * marshal.c (cominterop_com_visible) :  Method added to check the 
2821           ComVisible attribute of a class.
2822
2823         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
2824           cominterop_raise_hr_exception added to consolidate common code 
2825           to raise hr exceptions.
2826
2827         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
2828           if a managed class should support IDispatch.
2829
2830         * marshal.c 
2831           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
2832           Added additional checks for managed object when getting 
2833           an IDispatch interface.
2834
2835         Code is contributed under MIT/X11 license.
2836
2837 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2838
2839         pedump.c (main): Handle mono_get_method () returning NULL. 
2840
2841 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2842
2843         * marshal.h: Fix a warning.
2844
2845 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
2846
2847         * marshal.c : Adding cominterop_release_all_rcws to release all
2848           runtime callable wrappers held by the runtime.
2849
2850         * marshal.h : Adding declaration for cominterop_release_all_rcws.
2851           
2852         Code is contributed under MIT/X11 license.
2853
2854 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
2855
2856         * metadata.c (mono_image_alloc_lock): New helper function.
2857         (mono_image_alloc0_lock): Ditto.
2858
2859         * metadata.c: Use the alloc_lock () helper functions for allocating
2860         memory from the image mempool.
2861
2862 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
2863
2864         * class.c (mono_class_from_generic_parameter): Document it's
2865         locking behavior. Fix double checked locking here, we stored in
2866         param->pklass a partially initialized MonoClass and no membar was used.
2867
2868 2008-12-05  Marek Habersack  <mhabersack@novell.com>
2869
2870         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
2871         (3) functions are present in the C library use them to do the
2872         job. If they are absent, make sure that the sum of int_part and
2873         dec_part is rounded before returning. This is necessary due to the
2874         division of dec_part by the power of 10 before the final addition
2875         is performed - if the result is not rounded in some cases it will
2876         yield invalid results.
2877
2878 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
2879
2880         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
2881         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
2882         instruction instead of a pointer constant.
2883
2884 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
2885
2886         * loader.c (mono_method_get_header): Do most of the work outside the
2887         loader lock, to avoid assembly load hook deadlocks.
2888
2889         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
2890         (mono_metadata_parse_type_full): Ditto.
2891
2892 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
2893
2894         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
2895         Make the stack depth fixed. Ensure proper argument passing to the backtrace
2896         funtions. Finally, use a lock to produce well ordered output.
2897
2898         The lock looks silly, as all calls to the corlib mempool should be guarded
2899         with the loader lock, but for some reason this fact doesn't help. 
2900
2901         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
2902
2903 2008-12-02  Mark Probst  <mark.probst@gmail.com>
2904
2905         * socket-io.c: 64 bit big-endian fixes.
2906
2907 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2908
2909         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
2910         targets that require strict compatibility between the types.
2911
2912         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
2913         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
2914         Kill the strict argument and create a new one valuetype_must_be_boxed.
2915
2916         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
2917         state that all valuetypes must be boxed.
2918
2919         Fixes #448560.
2920
2921 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
2922
2923         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
2924         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
2925
2926         Contributed under MIT/X11 license.
2927
2928 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
2929
2930         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
2931         the inflate_generic_type machinery should handle it.
2932
2933         This avoids a crash when the field's flags is zero and it's type is
2934         a primitive.
2935         What happens is that mono_metadata_parse_type_full will see that opt_attrs
2936         is zero and will return one of the cached built-in primitive types. Since
2937         those types live in read-only memory, the code that copies it crashes.  
2938
2939 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2940
2941         * object.c: Don't put function descriptors into generalized IMT
2942         thunks.
2943
2944 2008-11-28  Mark Probst  <mark.probst@gmail.com>
2945
2946         * class.c: Enable generic code sharing on PPC64.
2947
2948 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2949
2950         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
2951         from mini/mini.c.
2952
2953         * generic-sharing.c: Allocate the method template slists from the
2954         image mempool so it doesn't leak.
2955
2956 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
2957
2958         * class.c (generic_array_methods): Release the linked list.
2959
2960 2008-11-27  Mark Probst  <mark.probst@gmail.com>
2961
2962         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
2963         invocation to g_utf16_to_utf8().
2964
2965 2008-11-26  Mark Probst  <mark.probst@gmail.com>
2966
2967         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
2968         arguments on big endian archs.
2969
2970 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
2971
2972         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
2973         the type name (test added in corlib).
2974
2975 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
2976
2977         * pedump.c: initialize perf. counters. Fixes a segv.
2978
2979 2008-11-25  Martin Baulig  <martin@ximian.com>
2980
2981         * mono-debug-debugger.c
2982         (mono_debugger_runtime_invoke): Return the exception object if an
2983         exception was thrown.  Visual Studio displays the exception object
2984         in the locals window.
2985
2986 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2987
2988         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
2989         ftnptr.
2990
2991 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2992
2993         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
2994         MONO_TYPE_U are sizeof (gpointer), too.
2995
2996 2008-11-24  Mark Probst  <mark.probst@gmail.com>
2997
2998         * marshal.c (mono_type_native_stack_size): Fixed size and
2999         alignment for reference types.
3000
3001 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3002
3003         * class.c (mono_class_generic_sharing_enabled): Disable generic
3004         code sharing for PPC64.
3005
3006 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
3007
3008         * icall.c (mono_method_get_equivalent_method): Make sure
3009         method->klass->methods is inited before looping over it.
3010
3011 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3012
3013         * object.c: when calling ExecuteAssembly in a newly created domain,
3014         the configuration file and application base are already set up.
3015         Bug #446353 take 2 fixed.
3016
3017 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
3018
3019         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
3020         Fixes #444715. Fix a warning.
3021
3022 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
3023
3024         * appdomain.c: write the full path of the assembly to the .ini file
3025         created when "shadow-copying"
3026         Bug #446353 fixed.
3027
3028 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3029
3030         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
3031         if signature==FALSE.
3032
3033 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3034
3035         * marshal.h : Fix the cygwin build.
3036            marshal.c:12442: undefined reference to `_IID_IMarshal'
3037           
3038         Code is contributed under MIT/X11 license.
3039
3040 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3041
3042         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
3043           free threaded marshaler when QueryInterface is called on a COM callable
3044           wrapper requesting the IMarshal interface.
3045           
3046         Code is contributed under MIT/X11 license.
3047
3048 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
3051
3052         * reflection.c (mono_type_get_object): Special case the very common
3053         void type.
3054
3055         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
3056         hold typeof(void).
3057
3058 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
3059
3060         * process.h : Adding method declaration for
3061           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3062           
3063         * process.c : Adding implementation for
3064           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3065           
3066         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
3067           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3068
3069         Code is contributed under MIT/X11 license.
3070
3071 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
3072
3073         * appdomain.c (unload_thread_main): Clean up threadpool by
3074         calling mono_thread_pool_remove_domain_jobs.
3075
3076         * domain-internals.h (struct _MonoDomain): Add new fields to
3077         help coordinate the cleanup of the threadpool.
3078
3079         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3080         that cleans up the threadpool of all jobs associated with an appdomain.
3081         It does that by cleaning up the queues and making sure all active
3082         threads are accounted.
3083
3084         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3085         unloaded or in the process of. Take this is such way that there is
3086         no race condition between another thread starting the unload and the
3087         current thread acknowledging it.
3088
3089         * threadpool.c (async_invoke_thread): Same.
3090
3091         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3092         firing the new thread.
3093
3094         * threadpool.c (start_tpthread): Same.
3095
3096         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3097
3098         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3099
3100 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3101
3102         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3103         Add support for DuplicateHandle.
3104         
3105         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3106         Add support for DuplicateHandle.
3107         
3108         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3109         Add support for DuplicateHandle.
3110
3111         Code is contributed under MIT/X11 license.
3112
3113 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3114
3115         * class-internals.h: Make min_align into a whole byte.
3116
3117         * class.c: Set min_align for SIMD types to 16.
3118
3119 2008-11-05  Geoff Norton  <gnorton@novell.com>
3120
3121         * attach.c: Default the attacher to enabled for all cases including
3122         embedded.
3123
3124 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3125
3126         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3127         change r117650.
3128
3129 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3130
3131         * monitor.c, monitor.h: New function for querying offsets of
3132         members of MonoThreadsSync.
3133
3134 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3135
3136         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3137         to speed up this function and to avoid the boundless memory growth caused by
3138         the signature_dup () calls.
3139
3140 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3141
3142         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3143         wrapper.
3144
3145         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3146         by 1 bit.
3147
3148         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3149
3150 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3151
3152         * appdomain.c:
3153         * domain-internals.h: made mono_set_private_bin_path_from_config()
3154         "internal".
3155         * object.c: call the above function after setting the configuration
3156         file path for the root domain.
3157         Fixes bug #314478.
3158
3159 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3160
3161         * assembly.c: when the assembly is loaded from an absolute path, end
3162         basedir with a directory separator.
3163         Bug #440781 fixed.
3164
3165 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3166
3167         * monitor.c (mono_monitor_get_fast_enter_method): If
3168         CompareExchange is not available, don't create the fastpath
3169         instead of asserting.  (The method is missing in the 1.1 profile.)
3170
3171 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3172
3173         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3174
3175         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3176         Monitor.Exit IL fastpaths.
3177
3178 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3179
3180         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3181
3182 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3183
3184         * class.c (mono_class_create_from_typedef): Added Vector2l.
3185
3186 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3187
3188         * class.c (mono_class_create_from_typedef): Added Vector2d.
3189
3190 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3191
3192         * appdomain.c: translate \ into / for cache_path.
3193         * domain-internals.h: new mono_is_shadow_copy_enabled().
3194         * icall.c: (fill_reflection_assembly_name) do the same path
3195         manipulations that get_code_base does.
3196         (get_code_base) use mono_is_shadow_copy_enabled.
3197
3198 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3199
3200         * appdomain.c: shadow-copied assemblies go to CachePath +
3201         ApplicationName when both are set. DynamicBase has nothing to do with
3202         shadow copies.
3203         Bug #406877 fixed.
3204
3205 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3206
3207         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3208         STANDALONESIG table.
3209
3210         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3211         standalone signatures.
3212
3213         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3214         comparison code: instead of comparing the signatures using a custom
3215         equals function, transform them to a common signature and compare that. This
3216         works better with AOT.
3217
3218 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3219
3220         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3221
3222         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3223         call for generic instances.
3224         (mono_class_setup_properties): Call setup_properties () before accessing
3225         gklass->properties.
3226
3227         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3228         over the virtual methods of a class using metadata if possible, avoiding the
3229         creation of MonoMethod's for non-virtual methods.
3230         
3231         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3232         get_virtual_methods () to iterate over the virtual methods of classes.
3233
3234 2008-10-25  Martin Baulig  <martin@ximian.com>
3235
3236         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3237
3238 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3239
3240         * class.c (mono_class_create_from_typedef): Added Vector4i.
3241
3242 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3243
3244         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3245         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3246         special-casing applies to eliminate the call completely.
3247
3248 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3249
3250         * class.c (mono_class_create_from_typedef): Added Vector8s.
3251
3252 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3253
3254         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3255
3256 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3257
3258         * icall.c: get rid of annoying warning.
3259
3260 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3261
3262         * threadpool.c: in 1.x, if you change the background status of the
3263         threadpool thread, it's not reset.
3264         Remove unnecessary calls to SetState.
3265
3266 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3267
3268         * threadpool.c: asynchronously create a set of idle threads upon first
3269         use of the threadpool. SetMinThreads will now start the appropriate
3270         number of idle threads if they are not already running. The default is
3271         1 threadpool thread per CPU. Increased the maximum number of threads
3272         per CPU to 10.
3273
3274 2008-10-22  Martin Baulig  <martin@ximian.com>
3275
3276         Revert r116521 from Zoltan, it breaks the debugger:
3277
3278         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3279         over the virtual methods of a class using metadata if possible, avoiding the
3280         creation of MonoMethod's for non-virtual methods.
3281         
3282         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3283         get_virtual_methods () to iterate over the virtual methods of classes.
3284
3285 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3286
3287         * threads.c: when creating a threadpool thread, set its state to
3288         'background'.
3289         * threadpool.c: reset the background state of a threadpool thread
3290         after finishing each work item
3291         Bug #437888 fixed.
3292
3293 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3294
3295         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3296         
3297         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3298         generic instances which works by inflating the methods in the container
3299         class's vtable.
3300
3301         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3302         variant which doesn't make a copy if no inflation was done.
3303         (mono_class_setup_fields): Use it.
3304
3305         * metadata.c (mono_metadata_get_shared_type): New helper function to
3306         return a shared instance of a given MonoType.
3307
3308         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3309         a copy of most non-generic types.
3310
3311 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3312
3313         * threadpool.c: remove one more GetSystemInfo () call.
3314
3315 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3316
3317         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3318         use the code in mono-proclib.h to get processor information.
3319
3320 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3321
3322         * appdomain.c: fixed the logic that determines whether assemblies in a
3323         directory are "shadow-copied" or not. Bug #433483 fixed.
3324
3325 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3326
3327         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3328         warning.
3329
3330 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3331
3332         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3333         returning a vtype.
3334
3335         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3336         reflection.c: Use mono_field_get_name () for accessing a field's name.
3337
3338         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3339         class.c
3340
3341         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3342         field.
3343
3344         * loader.c (find_method_in_class): Reenable the metadata optimization by
3345         not using it for generic instances.
3346
3347         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3348         data/def_type fields from MonoClassField into a separate structure.
3349         (struct MonoClassField): Remove data/def_type fields.
3350         (struct _MonoClass): Add a 'field_def_values' array to store the default
3351         values/RVA for fields.
3352
3353         * class.c reflection.c: Update after the changes.
3354         
3355         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3356         for accessing field->data.
3357
3358         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3359
3360         * loader.c (find_method_in_class): Revert the last change for now as
3361         it breaks Mono.C5 unit tests.
3362
3363         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3364         'field_generic_types' and 'field_objects' which contain the information
3365         previously stored in MonoInflatedField.
3366         (MonoInflatedField): Delete.
3367         (struct _MonoClassField): Delete 'generic_info' field.
3368
3369         * reflection.c: Store the information which was previously in 
3370         field->generic_info in MonoDynamicGenericClass instead.
3371
3372         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3373         MonoClassField changes.
3374
3375 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3376
3377         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3378         store the value inside the data array of the MonoMethodWrapper.
3379         This saves memory, is faster and fixes the lifetime issues (methods
3380         were never removed from the hash previously). May also fix bug#436996.
3381
3382 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3383
3384         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3385         generic instances, compute the type from the generic definition instead of
3386         looking in field->generic_info.
3387
3388         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3389         for inflated fields, the only user was get_fieldref_token () which no
3390         longer needs it.
3391
3392         * class.c (mono_class_init): Revert the last change as it seems to cause
3393         crashes.
3394
3395         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
3396         bytes on 64 bit platforms.
3397
3398         * object.c (mono_class_create_runtime_vtable): Fix a warning.
3399         
3400         * object.c (mono_class_create_runtime_vtable): Don't initalize
3401         field->data/field->def_type here, it is done lazily by 
3402         mono_class_get_field_default_value ().
3403
3404         * icall.c (ves_icall_get_enum_info): Call 
3405         mono_class_get_field_default_value () instead of directly accessing
3406         field->data and field->def_type.
3407
3408         * object.c (get_default_field_value): Ditto.
3409
3410         * class.c (mono_field_get_data): Ditto.
3411         
3412         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
3413         call for generic instances.
3414
3415         * loader.c (find_method_in_class): If klass != from_class, then inflate
3416         the method with the context of from_class, since the caller assumes this.
3417
3418 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
3421         for accessing method->slot.
3422
3423 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
3424
3425         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
3426
3427 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3428
3429         * class.c (mono_method_get_vtable_index): Use
3430         mono_method_get_vtable_slot () for accessing method->slot.
3431
3432         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
3433         accessing klass->methods.
3434
3435         * class.c (mono_method_get_vtable_slot): New helper function.
3436         (mono_class_get_vtable_entry): Ditto.
3437         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
3438         accessing method->slot.
3439
3440         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
3441         method to get_inflated_method ().
3442
3443         * class.c (mono_class_get_inflated_method): New helper method to obtain
3444         a method of an inflated class without calling setup_methods ().
3445         (mono_class_get_cctor): Use get_inflated_method.
3446
3447         * generic-sharing.c (mono_class_get_method_generic): Ditto.
3448         
3449         * marshal.c image.c: Lazily create all the marshal caches.
3450
3451         * image.c (mono_image_init): Move initialization of runtime_invoke
3452         caches to marshal.c.
3453
3454         * marshal.c (get_cache): New helper function to lazily initialize a 
3455         wrapper cache.
3456         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
3457
3458         * debug-helpers.c (mono_method_full_name): Include generic arguments.
3459
3460 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
3461
3462         * loader.c: fixed check for interface type.
3463
3464 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3465
3466         * appdomain.c: check for NULL setup before it's referenced.
3467
3468 p
3469 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3470
3471         * class.c: remove the unused old vtable setup code.
3472
3473 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3474
3475         * class.c: don't depend on interface order in
3476         setup_interface_offsets (bug #435777).
3477         * reflection.c: sort the InterfaceImpl table (patch from
3478         Jb Evain  <jbevain@novell.com>).
3479
3480 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3481
3482         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
3483         the low level assemblies lock.
3484
3485 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
3486
3487         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
3488         object.c, reflection.c, socket-io.c, threads.c: introduced
3489         mono_framework_version () to return the major framewrok version,
3490         changed the code that was using more complex patterns to use it.
3491         Return the correct value for PlatformID for OSX.
3492
3493 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
3494
3495         * icall-def.h, process.h, process.c: added an icall to get info about
3496         processes using mono-proclib.
3497
3498 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
3499
3500         * mono-perfcounters.c: use the mono-proclib functions to
3501         access process information.
3502
3503 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3504
3505         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
3506         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
3507         reflection.c: remove rawbuffer usage: mmap support is more sanely
3508         provided by utils/mono-mmap.
3509
3510 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
3511
3512         * gc.c: use posix semaphores when possible so that
3513         mono_gc_finalize_notify() is signal safe.
3514
3515 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
3516
3517         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
3518         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
3519         be #ifdef-ed out, the linker will remove the rest.
3520
3521         * marshal.c: Implement DISABLE_COM.
3522
3523         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
3524
3525 2008-10-11  Miguel de Icaza  <miguel@novell.com>
3526
3527         * locales.c (string_invariant_compare_char): Optimization: do not
3528         call g_unichar_type unless we actually need the information.
3529
3530 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3531
3532         * object.c, class-internals.h: Also create remoting trampolines
3533         for generic methods.  Pass the domain to the remoting trampoline
3534         creation function, too.
3535
3536 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3537
3538         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
3539
3540 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3541
3542         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
3543         Vector4ui.
3544
3545 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3546
3547         * assembly.c:
3548         * locales.c: remove the use of g_strdown. Fixes bug #322313.
3549
3550 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3551
3552         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
3553         for the least possible amount of time (extending the fix in r113458).
3554
3555 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3556
3557         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
3558
3559 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3560
3561         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
3562         as possible simd intrinsic types.
3563         Optimized the test to check for the common prefix first.
3564
3565 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
3566
3567         * class.c: back out part of a broken optimization committed on
3568         May 23th (bug #433908).
3569
3570 2008-10-09  Mark Probst  <mark.probst@gmail.com>
3571
3572         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
3573         Win32.  Should fix #432388 for most cases until we have the new
3574         profiler on Win32.
3575
3576 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3577
3578         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
3579         instead of using inst->id so the hash is stable for AOT.
3580
3581 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3582
3583         * appdomain.c:
3584         * icall.c: create a .ini file for shadow-copied assemblies that
3585         contains the location of the original assembly. Use this to return the
3586         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
3587         Also fix the number of '/' for windows when returning the CodeBase.
3588         Fixes bug #430920.
3589
3590 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3591
3592         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
3593
3594         Code is contributed under MIT/X11 license.
3595
3596 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3597
3598         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
3599           if if the class vtable needs initialized.
3600
3601         Code is contributed under MIT/X11 license.
3602
3603 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3604
3605         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
3606           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
3607           STRING->BSTR, and CLASS->INTERFACE.
3608
3609         Code is contributed under MIT/X11 license.
3610
3611 2008-10-07  Marek Habersack  <mhabersack@novell.com>
3612
3613         * sysmath.h: changed the declaration of the
3614         ves_icall_System_Math_Round2 icall by adding an extra
3615         away_from_zero parameter.
3616
3617         * sysmath.c (ves_icall_System_Math_Round2): added support for
3618         away from zero rounding. The icall now takes an extra boolean
3619         parameter to signal that away from zero operation is requested.
3620
3621 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3622
3623         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
3624         the delegate klass so it can work with full-aot.
3625         (mono_marshal_get_delegate_end_invoke): Ditto.
3626         (mono_marshal_get_delegate_invoke): Ditto.
3627
3628 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
3629
3630         * gc.c, attach.h, attach.c: remove a bad pattern:
3631         add_finalizer_callback () is not implemented correctly, it can't
3632         without adding more overhead to the finalizer loop and it's not
3633         even needed, since we know exactly what we need to call, so there is
3634         no need to do so through an expensive function pointer.
3635
3636 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
3637
3638         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
3639         for the no-gc case.
3640         * attach.c (mono_attach_init): Remove the #ifdef.
3641
3642 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3643
3644         * attach.c (mono_attach_init): Don't use
3645         mono_gc_add_finalizer_thread_callback when compiling without GC.
3646         Fixes #432306.
3647         
3648         Code is contributed under MIT/X11 license.
3649
3650 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3651
3652         * class.c (mono_class_create_from_typedef): Remove the 
3653         #ifndef DISABLE_SIMD stuff.
3654
3655 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3656
3657         * class-internals.h (MonoClass): Added simd_type bit field.
3658
3659         * class.c (mono_class_create_from_typedef): Check if type is a simd
3660         intrinsic.
3661
3662 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3663
3664         * object.c (mono_method_add_generic_virtual_invocation): Only add
3665         instantiations to the thunk whose count is at least as large as
3666         the threshold.
3667
3668 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3669
3670         * icall.c: changed the Type of the exception thrown when trying to
3671         invoke a constructor on an abstract class. Part of the fix for bug
3672         #324185.
3673
3674 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3675
3676         * class.c, class-internals.h (mono_method_get_vtable_index): New
3677         function which returns the index into the vtable and properly
3678         handles inflated virtual generic methods.
3679
3680 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3681
3682         * object.c, domain.c, object-internals.h, domain-internals.h:
3683         Generalize IMT thunk machinery to also handle thunks for virtual
3684         generic method invokes.  When a virtual generic method is invoked
3685         more than a number of times we insert it into the thunk so that it
3686         can be called without lookup in unmanaged code.
3687
3688         * generic-sharing.c, class-internals.h: Fetching a
3689         MonoGenericInst* for a method from an (M)RGCTX.
3690
3691 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * marshal.c (emit_marshal_string): Applied a variant of a patch by
3694         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
3695         marshalling. Fixes #431304.
3696
3697 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
3698
3699         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3700           handle when ref is specified without In or Out.
3701
3702         Code is contributed under MIT/X11 license.
3703
3704 2008-09-30  Mark Probst  <mark.probst@gmail.com>
3705
3706         * loader.c (mono_get_method_constrained): Don't expand method with
3707         the class's context, because it's already a method of that class.
3708
3709 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
3710
3711         * attach.c : should be correct build fix.
3712
3713 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
3714
3715         * attach.c: Fix the previous change.
3716
3717 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
3718
3719         * attach.c : quick w32 build fix.
3720
3721 2008-09-27  Miguel de Icaza  <miguel@novell.com>
3722
3723         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
3724         crashes MonoDevelop: #430455.
3725
3726 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
3727
3728         * domain-internals.h (struct _MonoDomain): Move most fields used only by
3729         the JIT do MonoJitDomainInfo in ../mini/mini.h.
3730
3731         * domain.c: Remove initialization/cleanup of the removed fields.
3732
3733 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3734
3735         * class.c (mono_class_generic_sharing_enabled): Enable generic
3736         code sharing for PPC.
3737
3738 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
3739
3740         * attach.c : Fixing the Windows builds.
3741
3742         Code is contributed under MIT/X11 license.
3743
3744 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3745
3746         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
3747         the default generic sharing mode to 'all'.
3748
3749 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3750
3751         * generic-sharing.c, class-internals.h: New function for checking
3752         whether a method needs a static RGCTX invoke wrapper.  A few
3753         funtions moved from mini/generic-sharing.c.
3754
3755         * icall.c: New function used.
3756
3757 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3758
3759         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
3760         Static RGCTX invoke wrapping applies to value type methods, too.
3761
3762         * class.c (mono_class_setup_vtable_general): In generic-shared
3763         value types, wrap methods with a static RGCTX invoke wrapper.
3764
3765 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3766
3767         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
3768         osx build.
3769
3770 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
3771
3772         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
3773         register a callback which is called when the finalizer thread is woken
3774         up.
3775         (finalizer_thread): Call the callback if it exists.
3776
3777         * attach.h attach.c: New files, implementing the attach mechanism.
3778
3779         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
3780         
3781         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
3782         by the previous change.
3783
3784 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
3785
3786         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
3787         loader.c, marshal.c, metadata-internals.h, metadata.c,
3788         method-builder.c, object.c, reflection.c: introduced specific functions
3789         to allocate from the domain and image mempools and cleaned up most of
3790         the code to use them (still missing a few in reflection.c).
3791         Keep the loader bytes counter updated.
3792
3793 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
3794
3795         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
3796         loader-related counters.
3797
3798 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
3799
3800         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
3801         added more MS-compatible counters.
3802
3803 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
3804
3805         * class.c (mono_class_setup_fields): Call setup_fields before accessing
3806         class->blittable. Fixes #428217.
3807
3808 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
3809
3810         * reflection.c (mono_image_get_field_on_inst_token): Call 
3811         field_encode_signature () since that handles custom modifiers too.
3812         Fixes #424663.
3813
3814 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
3815
3816         * reflection.c (add_custom_modifiers): New helper function to merge custom
3817         modifiers stored in objects to a MonoType.
3818         (fieldref_encode_signature): Encode custom modifiers.
3819         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
3820         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
3821
3822 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
3823
3824         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
3825         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
3826         64-bit IL only images because imports are not resolved for IL only images.
3827         Special thanks to Bill Holmes for finding this bug and testing the patch.
3828         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
3829
3830         Contributed under MIT/X11 license.
3831
3832 2008-09-19  Miguel de Icaza  <miguel@novell.com>
3833
3834         * mono-config.c (dllmap_start): Add support for the bits keyword
3835         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
3836
3837 2008-09-19  Mark Probst  <mark.probst@gmail.com>
3838
3839         * reflection.c (inflate_mono_method): When the class the method is
3840         to be inflated for is itself not inflated, just return the method.
3841
3842 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
3843
3844         * mono-perfcounters.c: use more user friendly process instance names.
3845
3846 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
3847
3848         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3849           handle "[in] ref" and "[in][out] ref" cases.
3850
3851         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
3852           to mono_mb_create_method.  This was causing problems calling native to
3853           managed passing Variants by value.
3854
3855         Code is contributed under MIT/X11 license.
3856
3857 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
3858
3859         * class.c (can_access_internals): Call mono_assembly_load_friends ()
3860         before accessing the friend_assembly_names field.
3861
3862         * assembly.c (mono_assembly_load_friends): Make this callable multiple
3863         times.
3864         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
3865         called lazily when it is needed.
3866
3867         * metadata-internals.h (struct _MonoAssembly): Add 
3868         'friend_assembly_names_inited' flag.
3869
3870 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
3871
3872         * mono-perfcounters-def.h: fix the types of a few counters.
3873         * mono-perfcounters.c: implemented the instance names getter
3874         and a few bugfixes.
3875
3876 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
3877
3878         * culture-info-table.h : regenerated.
3879
3880 2008-09-17  Robert Jordan  <robertj@gmx.net>
3881
3882         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
3883         context bound objects. Fixes #415577.
3884
3885         Code is contributed under MIT/X11 license.
3886
3887 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
3888
3889         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
3890         implementation (bug #423582).
3891
3892 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
3893
3894         * object.c (mono_object_get_virtual_method): Handle the case method->slot
3895         is not set. Fixes #426309.
3896
3897 2008-09-16  Jb Evain  <jbevain@novell.com>
3898
3899         * class.c (mono_class_from_name): fix the exported type look up
3900         when the type is defined in a referenced assembly.
3901
3902 2008-09-16  Jb Evain  <jbevain@novell.com>
3903
3904         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
3905         increment the next index counter on each iteration to make that work
3906         for more than one type forwarder. Unmanaged part to fix #422929.
3907
3908 2008-09-15  Mark Probst  <mark.probst@gmail.com>
3909
3910         * object-internals.h: enum ComInterfaceType in
3911         MonoInterfaceTypeAttribute is guint32, not guint16.
3912
3913 2008-09-12  Mark Probst  <mark.probst@gmail.com>
3914
3915         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
3916         writing code.
3917
3918 2008-09-11  Mark Probst  <mark.probst@gmail.com>
3919
3920         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
3921         not gboolean.
3922
3923 2008-09-11  Mark Probst  <mark.probst@gmail.com>
3924
3925         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
3926         Endianness fixes for MonoSymbolFileOffsetTable.
3927
3928 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
3929
3930         * process.c (complete_path) : Removing quotes from the 
3931           input path.  The glib file routines do not handle file paths
3932           that have quotes around them.
3933
3934         Code is contributed under MIT/X11 license.
3935
3936 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
3937
3938         * socket-io.h : Adding a comment to provide locations where 
3939           changes to MonoSocketAsyncResult need to be synced.
3940
3941         Code is contributed under MIT/X11 license.
3942
3943 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
3946         parameters as well. Fixes #425001.
3947
3948 2008-09-08  Miguel de Icaza  <miguel@novell.com>
3949
3950         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
3951         windows build.
3952
3953 2008-09-07  Miguel de Icaza  <miguel@novell.com>
3954
3955         * console-io.c: Add support for tracking the window size if it
3956         changes.
3957
3958         The setup is very simple: the TtySetup function will now return a
3959         pointer to a location in memory that tracks the current console
3960         size.  The managed code checks its current value every time its
3961         queried against the last value set, and updates accordingly.
3962
3963         With this setup we can work with multiple consoles, and we do not
3964         require to poke into managed code from a signal handler.
3965
3966         Additionally, the environment for COLUMNS and LINES is now handled
3967         in unmanaged code.
3968
3969         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
3970
3971 2008-09-07  Mark Probst  <mark.probst@gmail.com>
3972
3973         * marshal.c (mono_type_native_stack_size): Treat
3974         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
3975
3976 2008-09-04  Jb Evain  <jbevain@novell.com>
3977
3978         * class.c (mono_class_is_assignable_from): fix assignability of nullables
3979         to nullables.
3980
3981 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
3982
3983         * verify.c (verify_type_compatibility_full): Revert change
3984         to allow converting a native int to unmanaged pointer be verifiable
3985         under non-strict mode.
3986         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
3987
3988         * verify.c: Added some TODOs.
3989
3990 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
3991
3992         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
3993           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
3994           Changed to use GlobalAlloc for the memory returned on Windows platforms.
3995
3996         Code is contributed under MIT/X11 license.
3997
3998 2008-09-02  Jb Evain  <jbevain@novell.com>
3999
4000         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
4001
4002 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
4003
4004         reflection.c (typebuilder_setup_fields): Handle classes with
4005         explicit size.
4006
4007 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
4008
4009         class.c (mono_class_setup_events): Add memory barrier due to
4010         double checked locking.
4011         
4012         class.c (mono_class_setup_properties): Same.
4013
4014 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4015
4016         * class.c (mono_class_is_assignable_from): Fix the build.
4017         
4018         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
4019         before accessing klass->interface_bitmap. Fixes #421744.
4020
4021 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4022
4023         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
4024         the runtime into no-exec mode, useful when running the AOT compiler.
4025
4026         * appdomain.c gc.c object.c: Avoid executing managed code when running
4027         in no-exec mode.
4028         
4029         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
4030
4031         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
4032         special case when the mono_assembly_loaded () returns NULL because the 
4033         search hook is not installed.
4034
4035 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4036
4037         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
4038         crashes in bstr marshalling on linux.
4039
4040 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4041
4042         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
4043         with more than one parameter.
4044
4045 2008-08-24  Miguel de Icaza  <miguel@novell.com>
4046
4047         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
4048         start/stop flow control as well when turning off ICANON (allows
4049         C-s and C-q to be read by Console.ReadKey).
4050
4051 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4052
4053         * class.c (mono_class_init): Move the initialization of nested classes
4054         into mono_class_get_nested_types (). Fixes #418433.
4055
4056         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
4057         flag.
4058
4059         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
4060         iterating tough the nested classes of a class.
4061
4062 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4063
4064         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
4065         on arm.
4066
4067 2008-08-22  Miguel de Icaza  <miguel@novell.com>
4068
4069         * console-io.c (sigcont_handler): Support signal chaining for
4070         SIGCONT.
4071
4072         (console_set_signal_handlers): Use best practices with sigaction,
4073         clear the structure before using it. 
4074
4075 2008-08-22  Robert Jordan  <robertj@gmx.net>
4076
4077         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4078         Fix the Windows build.
4079
4080 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4081
4082         * class.c (mono_class_generic_sharing_enabled): Make the default
4083         sharing mode 'corlib'.
4084
4085 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4086
4087         * console-io.c (console_set_signal_handlers): Fix a warning.
4088
4089         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4090         method normally, the JIT will take care of avoiding recursion.
4091
4092 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4093
4094         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4095
4096         Code is contributed under MIT/X11 license.
4097
4098 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4099
4100         * console-io.c (sigcont_handler): We need to restore the entire
4101         termios state, not only the original settings, as things like echo
4102         can be controlled after this (Booish exposes this issue with its
4103         own ReadLine implementation).
4104
4105         Additionally, we need to set the terminal back into keypad_xmit
4106         mode.
4107         
4108         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4109         string as a paramter as well.   Otherwise we get different
4110         keyboard sequences.
4111
4112 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4113
4114         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4115         delegates with byref out parameter passing. Fixes #351520.
4116
4117         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4118         a generic context.
4119         (mono_type_get_desc): Add the type arguments for GENERICINST.
4120         (mono_method_full_name): Stringify the class name using mono_type_full_name
4121         so it picks up generic arguments.
4122
4123 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4124
4125         * console-io.c: Removed debug output.
4126
4127 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4128
4129         reflection.c (mono_reflection_create_runtime_class): Alloc
4130         the nested classes linked list using the dynamic image mempool.
4131         Fixes leak in corlib compilation.
4132
4133 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4134
4135         * console-io.c: Fix incredibly annoying behavior on the console
4136         after resuming execution after control-z.   This affected every
4137         console application.
4138
4139 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4140
4141         * mempool-internals.h: Header for mono private mempool functions. The first
4142         two function are for allocating glib linked lists using pools.
4143
4144         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4145
4146         * Makefile.am: Added mempool-internals.h.
4147
4148 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4149
4150         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4151         (mono_domain_free): Ditto.
4152
4153         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4154         be used by the JIT to store its domain-specific information, instead of putting
4155         it directly into MonoDomain.
4156
4157         * domain.c (mono_install_create_domain_hook): New helper function to install
4158         a hook which initializes domain->runtime_info.
4159
4160         * domain.c (mono_install_free_domain_hook): Ditto.
4161         
4162 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4165         asserting if the ares parameter is null.
4166
4167         * mono-perfcounters.c: Fix warnings.
4168
4169         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4170         is not needed, don't check for interruptions either.
4171         (mono_marshal_get_delegate_end_invoke): Ditto.
4172
4173 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4174
4175         * mono-perfcounters.c (predef_readonly_counter): added support for
4176         reading the ASP.NET Requests Queued counter from another process.
4177
4178 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4181         MonoImage to simplify the AOT code.
4182
4183 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4186         marshalling. Fixes #416078.
4187
4188 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4189         
4190         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4191         it is set, looking up the icall address is deferred to the JIT, since 
4192         in embedded scenarios, the icall might not be registered in the runtime
4193         doing the AOT compilation. Backported from the 2.0 branch.
4194
4195 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4196
4197         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4198         Fixes #415621.
4199
4200 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4201
4202         * Makefile.am: added support for cross-compilation.
4203
4204 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4205
4206         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4207
4208 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4209
4210         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4211
4212 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4213
4214         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4215         mono-perfcounters.c: performance counters implementation.
4216
4217 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4218
4219         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4220         to gpointer, letting the AOT code decide what to store in it.
4221
4222 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4223
4224         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4225           mono_class_setup_methods if the methods are not initialized.
4226
4227         Code is contributed under MIT/X11 license.
4228
4229 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4230
4231         * verify.c: Remove some debug code I commited by accident.
4232
4233         * verify.c (mono_method_is_valid_in_context): Change the return value
4234         to make possible to distinguish between invalid and unverifiable.
4235
4236         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4237         methods.
4238
4239 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4240
4241         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4242         constraints. Fixes regression in gtest-253.
4243
4244 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4245
4246         * verify.c (mono_verifier_verify_class): Don't allow generic types
4247         with explicit layout.
4248
4249         * verify.c (mono_method_verify): Check locals and argument types.
4250
4251 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4252
4253         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4254         wait if the thread is in StopRequested state.
4255
4256         * class.c (mono_class_from_name): Refactor the module searching code into
4257         a separate function so it can be reused in the AOT case too.
4258
4259 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4260
4261         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4262         Check both the type and it's generic type definition for loader errors.
4263         
4264         * verify.c (mono_method_is_valid_in_context): Don't generate another
4265         error when a type errors occur, this leads to the wrong exception been
4266         thrown.
4267
4268 2008-07-28  Dick Porter  <dick@ximian.com>
4269
4270         * icall-def.h
4271         * process.c
4272         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4273         New internal calls to duplicate and close a process handle.
4274
4275 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4276
4277         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4278
4279 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4280
4281         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4282
4283 2008-07-27  Robert Jordan  <robertj@gmx.net>
4284
4285         * class.c (mono_class_init): Don't compute class.has_finalize for
4286         valuetypes. Fixes #412477.
4287
4288 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4289
4290         * verify.c: Implement constraint equivalence checking.
4291         This is required when a generic parameter is used as
4292         argument to a constrained one.
4293
4294         Fixes #410637.
4295
4296 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4297
4298         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4299
4300         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4301
4302         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4303         synch with managed object layout.
4304
4305 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4306
4307         * verify.c (do_branch_op): Handle valuetypes and generic
4308         arguments properly.
4309
4310         * verify.c (do_cmp_op): Same.
4311
4312         Fixes #410383.
4313
4314 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4315
4316         * generic-sharing.c: Fix memory leaks.
4317
4318         * class.c, class-internals.h: Make
4319         mono_class_inflate_generic_type_with_mempool() non-static.
4320
4321 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4322
4323         * pedump.c (dump_verify_info): Dump full class name.
4324
4325 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4326
4327         * generic-sharing.c: Removed some old code that didn't do anything.
4328
4329 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4330         * profiler.c: Added runtime_initialized_event,
4331         mono_profiler_install_runtime_initialized and
4332         mono_profiler_runtime_initialized. This new hook tells the profiler
4333         when the runtime is sufficiently initialized to be able to call
4334         mono_thread_attach on the root appdomain.
4335         * profiler.h, profiler-private.h: Likewise.
4336
4337 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4338
4339         * verify.c (do_cast): Do boxing for generic arguments as well.
4340
4341         * class.c (is_nesting_type): Drop generic instantiations before
4342         checking for nesting.
4343
4344         * class.c (can_access_instantiation): Allow access to generic
4345         arguments.
4346
4347 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4348
4349         * verify.c (verify_class_for_overlapping_reference_fields):
4350         On some cases, the field size might be zero, guard against that.
4351         Fix the explicit layout check to work as expected.
4352
4353 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4354
4355         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4356         mono_thread_resume () during shutdown, since the thread we want to abort
4357         might be suspended.
4358
4359 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4362         warning.
4363
4364         * debug-mono-symfile.c: Fix a warning.
4365
4366         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4367
4368         * object.c (mono_class_vtable): Check if exception_type is set, and return
4369         NULL as defined by the function comments.
4370
4371 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4372
4373         * mempool.c: Use malloc for every single mempool allocation if the
4374         configure option is set.  This makes it easier to track mempool
4375         allocations with tools like Valgrind.
4376
4377 2008-07-22  Jb Evain  <jbevain@novell.com>
4378
4379         * reflection.c (create_dynamic_mono_image): emit the same
4380         metadata version that SL2 does when creating a SL2 image.
4381
4382 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4383
4384         * icall-def.h:
4385         * icall.c: New icall System.Enum:get_hashcode. This function
4386         avoids the overhead of boxing the enum to the underlying type.
4387
4388 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4389
4390         * reflection.c (mono_method_get_object): Don't let static RGCTX
4391         invoke wrappers get into MonoReflectionMethods.
4392
4393 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
4394
4395         * object-internals.h:
4396         * object.c: New mono_runtime_class_init_full function
4397         that makes throwing the exception optinal.
4398
4399         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
4400         for the case where the exception object is supplied.
4401
4402 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
4403
4404         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
4405         old ld versions.
4406
4407         Contributed under MIT/X11 license.
4408
4409 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4410
4411         * string-icalls.c (ves_icall_System_String_InternalSplit):
4412         Optimize array allocation by caching the MonoClass of the
4413         array type.
4414
4415         * icall.c (ves_icall_Type_GetMethodsByName): Same.
4416
4417         * reflection.c (mono_param_get_objects): Same.
4418
4419 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4420
4421         * icall-def.h:
4422         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
4423         It inflates the given type using the class context.
4424
4425 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4426
4427         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
4428         the vtable if it already exists.
4429
4430         * object-internals.h: Add mono_class_try_get_vtable as part of the
4431         internal API.
4432
4433         * reflection.c (mono_type_get_object): Use the MonoObject from the
4434         vtable when possible. Reduces locking contention on reflection heavy
4435         code.
4436
4437 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
4438
4439         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
4440         g_bit_nth_msf () since that macro is not implemented in eglib.
4441
4442 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
4445         on platforms which do not support it.
4446
4447 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4448
4449         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
4450
4451 2008-07-11  Martin Baulig  <martin@ximian.com>
4452
4453         * mono-debug-debugger.h
4454         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
4455
4456         * mono-debug-debugger.c
4457         (_mono_debugger_interruption_request): New global volatile variable.
4458         (mono_debugger_check_interruption): New public function.
4459
4460         * threads.c
4461         (mono_thread_current_check_pending_interrupt): Call
4462         mono_debugger_check_interruption().
4463         (mono_thread_interruption_checkpoint_request): Likewise.
4464
4465 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4466
4467         * verify.c: Add more type checks for loaded types. Verify the result
4468         handle from ldtoken.
4469
4470 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4471
4472         * loader.c (field_from_memberref): Don't crash if the field
4473         wasn't found.
4474
4475 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4476
4477         * verify.c: Verify if type and method instantiations
4478         don't have invalid VAR or MVAR arguments.
4479
4480 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4481
4482         * verify.c: Fix double free of function pointer list.
4483
4484 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4485
4486         * object.c (mono_string_to_utf8): Comment the new code as it
4487         breaks under eglib.
4488
4489 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
4490
4491         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
4492
4493 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
4494
4495         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
4496           is not throw too many times.
4497
4498         Code is contributed under MIT/X11 license.
4499
4500 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4501
4502         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
4503         debugging is turned off.
4504
4505 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
4506
4507         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
4508
4509 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4510
4511         * class-internals.h, class.c: Added new generic sharing option:
4512         Share only stuff in System.Collections.Generic, which is now the
4513         default.
4514
4515 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4516
4517         * generic-sharing.c, class-internals.h: New function for getting a
4518         generic method in a generic class given the corresponding method
4519         for a different instantiation of the class.  Partly refactored
4520         from mini-trampolines.c.
4521
4522         * class.c: Make sure generic methods have a class_inst if they are
4523         part of a generic class.
4524
4525         * metadata.c (mono_type_stack_size_internal): Handle type
4526         variables.
4527
4528 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4529
4530         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
4531         Signifies whether information on the this/vtable/mrgctx variable
4532         is available.
4533
4534 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4535
4536         * object.c, object-internals.h, icall.c: New function
4537         mono_delegate_ctor_with_method(), which does the same as
4538         mono_delegate_ctor(), but takes an explicit method argument
4539         instead of taking the method from the jit info.
4540
4541         * marshal.c: When creating a delegate with an inflated method take
4542         the "this" argument as the target class for the castclass.
4543
4544 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4545
4546         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
4547         mono_jit_info_table_find() to perform very badly in some cases.
4548
4549 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4550
4551         * icall.c (type_from_typename): Handle 'string'.
4552
4553         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
4554         wrappers into the wrapper_hash, since the key is not a MonoMethod.
4555
4556 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
4559
4560         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
4561         number of available managed allocator types.
4562
4563         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
4564         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
4565
4566 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4567
4568         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
4569         which is a low level lock protecting just the 'jit_code_hash' hash table.
4570
4571         * domain.c: Initialize+cleanup jit_code_hash_lock.
4572         
4573 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4574
4575         * coree.c (mono_load_coree): Set coree_module_handle global variable only
4576         after initialization.
4577
4578         * coree.h: Make MonoFixupExe internal.
4579
4580         Contributed under MIT/X11 license.
4581
4582 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4583
4584         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
4585         because that is platform independent. Check NumberOfRvaAndSizes in PE32
4586         as well.
4587         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
4588         image being loaded is a CLI image and _CorValidateImage gets called.
4589
4590         * coree.h: Add MonoLoadImage.
4591
4592         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
4593         instead of LoadLibrary.
4594
4595         Contributed under MIT/X11 license.
4596
4597 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
4598
4599         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
4600         for any primitive type.
4601
4602 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4603
4604         * object.c (mono_array_new_specific): Optimize this and the other allocation
4605         functions a bit.
4606         
4607         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
4608         domains too if mono_dont_free_domains is set.
4609
4610         * domain-internals.h (mono_dont_free_domains): New internal option controlling
4611         whenever to free appdomain data after it has been unloaded.
4612
4613         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
4614         
4615 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
4618         (mono_method_get_equivalent_method): Fix a warning.
4619
4620         * object.c (mono_message_init): Avoid looking up array types for each call.
4621
4622 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
4625         call.
4626
4627         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
4628         even more.
4629
4630         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
4631         each iteration.
4632
4633         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
4634         fields of an enum.
4635
4636 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638         * object.c (mono_value_box): Fix boxing of nullables.
4639
4640 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4641
4642         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
4643         mono_module_handle that is defined by the linker; no initialization required.
4644         * coree.h: Remove mono_module_handle, add __ImageBase, update
4645         mono_image_open_from_module_handle.
4646         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
4647         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
4648         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
4649         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
4650         to 4 GB away from image base address. IA64 version is not tested but was very
4651         easy to implement and should work if we ever need it.
4652         * domain.c (mono_init_internal): Avoid system error message boxes.
4653         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
4654         with has_entry_point. Handle do_mono_image_load fauilre correctly.
4655         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
4656         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
4657         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
4658
4659         Contributed under MIT/X11 license.
4660
4661 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4662
4663         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
4664         as part of the private mono API.
4665         
4666         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
4667         Do proper argument checking for methods that belong to generic classes.
4668         Do proper type resolution for GMFH/2.
4669         Fixes #377324.
4670         
4671 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4672
4673         * verify.c (do_switch): Fix a memory corruption bug with
4674         the jump index is out of bound.
4675
4676 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4677
4678         * verify.c: Disable debug code.
4679
4680 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4681
4682         * reflection.c (mono_image_get_methodbuilder_token): Use
4683         mono_image_get_methodspec_token_for_generic_method_definition
4684         instead of mono_image_get_memberref_token. We cache more memberef
4685         entries now.
4686
4687 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4688
4689         * verify.c: Inflate exception clause types.
4690         Fixes #402606.
4691         
4692 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4693
4694         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
4695         name.
4696
4697         * reflection.c (mono_image_get_ctorbuilder_token): Same.
4698
4699         * reflection.c (mono_image_create_method_token): Same.
4700
4701 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4702
4703         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
4704         It does the same as mono_image_get_methodref_token but works on
4705         MethodBuilder.
4706
4707         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
4708         and always generate a methodspec. This follows the old behavior and fixes
4709         the regressions in System.Core. 
4710
4711 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4712
4713         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
4714         don't event mono_class_get () succeeds. Fixes #402182.
4715
4716 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4717
4718         * metadata-internals.h: Added MonoDynamicImage::methodspec
4719         hashtable to store methodspec tokens created for MethodBuilders.
4720
4721         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
4722         MethodBuilders as open instantiations if a methodspec was requested.
4723
4724         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
4725
4726         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
4727
4728         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
4729
4730         Fixes bug #349190.
4731
4732 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4733
4734         * loader.c (method_from_methodspec): Avoid crashing if the
4735         method lookup fails.
4736
4737 2008-06-20  Dick Porter  <dick@ximian.com>
4738
4739         * socket-io.c (get_socket_assembly): Cope with Moonlight network
4740         classes being in a different assembly.  Fixes bug 399184.
4741
4742 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
4743
4744         * loader.c (mono_loader_init): Make this callable multiple times.
4745         (mono_dllmap_insert): Call mono_loader_init () so this works even before
4746         the runtime is initialized. Fixes #401755.
4747
4748 2008-06-19  Dick Porter  <dick@ximian.com>
4749
4750         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
4751         Fixes bug 349688.
4752
4753 2008-06-19  Dick Porter  <dick@ximian.com>
4754
4755         * socket-io.c:
4756         * icall-def.h: Implement Socket generic Send() and Receive()
4757         methods.  Fixes bug 395168.
4758
4759 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
4760
4761         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
4762
4763         Contributed under MIT/X11 license.
4764
4765 2008-06-18  Martin Baulig  <martin@ximian.com>
4766
4767         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
4768         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
4769         set to 80.0.  The debugger <-> runtime interface is now frozen as
4770         well.   
4771
4772         * mono-debug.c
4773         (mono_debug_debugger_version): Bump to 4.
4774
4775 2008-06-18  Martin Baulig  <martin@ximian.com>
4776
4777         * debug-mono-symfile.c
4778         (load_symfile): Don't check the minor version.
4779
4780         * debug-mono-symfile.h: Bump the version number to 50.0.
4781
4782 2008-06-18  Martin Baulig  <martin@ximian.com>
4783
4784         * debug-mono-symfile.c
4785         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
4786         minimum required version.
4787
4788 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4789
4790         * reflection.c (mono_custom_attrs_from_property): Fix support for
4791         retriveving cattrs of dynamic inflated generic types.
4792
4793         * reflection.c (mono_custom_attrs_from_event): Same.
4794
4795         * reflection.c (mono_custom_attrs_from_field): Same;
4796
4797         * reflection.c (typebuilder_setup_events): Same cattrs of events.
4798
4799         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
4800         Moved to metadata.c.
4801
4802         * metadata.c: New functions to retrive the equivalent field, event
4803         of property from the generic type definition.
4804
4805         * metadata-internals.h: Added new functions from metadata.c.
4806
4807 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4808
4809         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
4810         to cached in a mempool is used.
4811
4812         * metadata.c (free_generic_class): In some situations field generic_info type
4813         is not properly dup'ed and leads to double free'ing.
4814
4815         Fixes #400643.
4816
4817 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4818
4819         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
4820         this arguments (will be needed later for generic methods).
4821         Collect stats.
4822
4823 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4824
4825         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4826         Create a static RGCTX invoke wrapper for methods which require it.
4827
4828 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4829
4830         * object.c, class-internals.h: New function for checking whether
4831         an individual field is special static.
4832
4833 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
4834
4835         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
4836         linear search since the table is sorted.
4837
4838         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
4839         Fixes #324180.
4840
4841 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
4842
4843         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
4844         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
4845
4846         * gc.c (mono_domain_finalize): Allow an infinite timeout.
4847
4848         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
4849         
4850         * threads.c (mono_thread_request_interruption): Get rid of locking, use
4851         InterlockedCompareExchange to query and modify 
4852         thread->interruption_requested.
4853
4854         * object-internals.h (struct _MonoThread): Change interruption_requested
4855         to a gint32 so it can be modified by atomic operations. Add 
4856         'critical_region_level' from the managed side, change small_id to a guint32,
4857         add new set of 'unused' fields.
4858
4859         * appdomain.c: Bump corlib version.
4860
4861 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4862
4863         * class.c (mono_class_from_name): Search modules as well. Fixes
4864         #322332.
4865
4866 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4867
4868         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
4869         templates.  Templates are generalized with an additional type_argc
4870         argument.  RGCTX templates have type_argc==0, MRGCTX templates
4871         have type_argc>0.
4872
4873         * domain-internals.h, domain.c: New hash table for looking up
4874         MRGCTXs.
4875
4876         * metadata.c, metadata-internals.h: Rename hash and equal
4877         functions for MonoGenericInst's and make them public.
4878
4879         * class-internals.h: New data structures for the MRGCTX.  Macros
4880         for distinguishing slots in the RGCTX and the MRGCTX.
4881
4882 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4883
4884         * object.c (mono_method_get_imt_slot): Put the same methods of
4885         different instantiations of the same generic interface in the same
4886         IMT slots, to make generic sharing simpler.
4887
4888 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4889
4890         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
4891
4892         * metadata.c (mono_metadata_field_info_with_mempool): Added.
4893         This function works just like mono_metadata_field_info, but
4894         accept a mempool as argument to be used allocating memory.
4895
4896         * marshal.c (mono_marshal_load_type_info): Use new function
4897         to load marshal data into image mempool.
4898
4899 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4900
4901         * class.c (mono_class_inflate_generic_type_with_mempool):
4902         This function allows to inflate a generic type using
4903         a mempool.
4904
4905         * class.c (inflate_generic_type): Take a mempool as argument
4906         and use it to do type dup'ing.
4907
4908         * class.c (mono_class_setup_fields): Field type for generic
4909         generic classes are allocated from the image mempool.
4910
4911         * metadata.c (free_generic_class): Inflated field type is
4912         now allocated in the image mempool.
4913
4914 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
4915
4916         * threads.c (thread_cleanup): Free MonoThread::name.
4917
4918 2008-06-12  Marek Habersack  <mhabersack@novell.com>
4919
4920         * appdomain.c (ensure_directory_exists): avoid unnecessary
4921         mkdir(2) calls when the shadow directory already exists.
4922         (mono_make_shadow_copy): copy also satellite assemblies from the
4923         private bin directories.
4924
4925 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
4926
4927         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
4928         
4929         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
4930         a page boundary. Fixes #396219.
4931
4932 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
4935         due to double-checked locking.
4936
4937 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4938
4939         * assembly.c (build_assembly_name): Release memory on failure.
4940
4941         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
4942
4943 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4944
4945         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
4946         memory on failure.
4947
4948 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4949
4950         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
4951         memory on failure.
4952
4953 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4954
4955         * loader.c (field_from_memberref): Check if field signature type is equal
4956         to the non-inflated type of the field. Fixes #398980.
4957
4958 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
4959
4960         * assembly.c (mono_assembly_load_from_full): Call 
4961         mono_assembly_load_friends () outside the assemblies lock, since it can
4962         acquire the loader lock. Fixes #323696.
4963
4964         * reflection.c (resolve_object): Inflate the inst with the context for
4965         FieldOnTypeBuilderInst. Fixes #399010.
4966
4967 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4968
4969         * reflection.c (mono_image_get_field_on_inst_token): Don't
4970         inflate the field to encode it's signature. If it's a
4971         VAR or MVAR it should stay that way in the signature.
4972         Fixes #399047.
4973
4974 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4975
4976         * reflection.c (resolve_object): Release memory of inflated types.
4977
4978 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
4979
4980         * loader.c (mono_method_get_signature_full): Remove assert about
4981         loading a methodspec to a generic method. We have such methods, such as
4982         System.Threading.Interlocked::CompareExchange<T>.
4983         This assert was removed since it crashes the verifier when it checks
4984         methods calling CompareExchange<T>.
4985
4986 2008-06-10  Marek Safar  <marek.safar@gmail.com>
4987
4988         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
4989         of Type array and not MonoType.
4990
4991 2008-06-10  Marek Habersack  <mhabersack@novell.com>
4992
4993         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
4994         <lupus@ximian.com>
4995
4996 2008-06-10  Martin Baulig  <martin@ximian.com>
4997
4998         * debug-mono-symfile.h
4999         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
5000         changes to the file format, but we were generating incorrect
5001         source file indices in the line number table due to a bug, which
5002         made backtraces report an incorrect source file.
5003
5004 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5005
5006         * mono-debug.c: Moved mono_debug_free_method_jit_info from
5007         mini/debug-mini.c to here.
5008
5009         * mono-debug.c (il_offset_from_address): Free memory from find_method.
5010
5011         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
5012         use it to release structs returned by mono_debug_find_method.
5013
5014 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
5015
5016         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
5017         since it needs to set method->slot for all interface methods.
5018
5019 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5020
5021         * class-internals.h: Forgot to add.
5022
5023 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5024
5025         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
5026
5027         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
5028         Lookup the custom attributes from property_hash.
5029
5030         * reflection.c (mono_save_custom_attrs): Save the custom attributes
5031         in property_hash. Allocate all data using the image mempool.
5032
5033         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
5034         for dynamic_custom_attrs to checks if the image is dynamic.
5035
5036 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
5039         assemblies array.
5040         
5041         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
5042         runtime functions while holding the domain assemblies lock.
5043
5044 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5045
5046         * verify.c: Reapplied the last bit of the reverted changes.
5047
5048 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5049
5050         * verify.c: Reapplied more of the reverted changes.
5051
5052 2008-06-09  Martin Baulig  <martin@ximian.com>
5053
5054         * debug-mono-symfile.c (load_symfile): Check the major version
5055         first; if it's wrong, don't print the minor version in the error message.
5056
5057 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5058
5059         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
5060         lock instead of the domain lock to avoid deadlocks, since the thread might
5061         already hold the loader lock.
5062
5063         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
5064         (mono_thread_attach): Ditto.
5065
5066         * monitor.c: Use a TLS variable for holding the current thread id instead
5067         of calling pthread_self ().
5068         (mono_monitor_init_tls): New internal function to initialize the TLS
5069         variable.
5070         (mono_monitor_try_enter_internal): Put the owner == id check after the
5071         owner == 0 check.
5072
5073         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
5074         missed optimizations when using gcc-4.3.
5075
5076 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
5077
5078         * reflection.c (mono_dynamic_image_free): Free the memory
5079         used by MonoGenericParam in MonoDynamicImage::gen_param.
5080
5081         * reflection.c (mono_reflection_setup_generic_class): Allocate
5082         container from mempool.
5083
5084         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5085         container from mempool.
5086
5087 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5088
5089         * threads.c (mono_set_pending_exception): New internal function to set the
5090         pending exception of the current thread.
5091         (mono_thread_get_and_clear_pending_exception): Check for 
5092         thread->pending_exception as well.
5093
5094         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5095
5096         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5097         it can trigger a collection.
5098
5099 2008-06-06  Martin Baulig  <martin@ximian.com>
5100
5101         Merged the `debugger-kahalo' branch.
5102
5103         * mono-debug.h
5104         (MONO_DEBUGGER_VERSION): Bumped to 72.
5105
5106         * debug-mono-symfile.h
5107         (MonoSymbolFileMethodIndexEntry): Removed.
5108         (MonoSymbolFileMethodEntry): New public typedef.
5109         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5110         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5111         `data_offset'.
5112         (MonoSymbolFileMethodEntry): Removed.
5113         (MonoSymbolFileLexicalBlockEntry): Removed.
5114         (MonoSymbolFileLineNumberEntry): Removed.
5115         (MonoDebugLexicalBlockEntry): Removed.
5116         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5117         removed `num_il_offsets' and `il_offsets'.
5118         (MonoSymbolFile): Replace `version' with `major_version' and
5119         `minor_version'.
5120         (MONO_SYMBOL_FILE_VERSION): Replace with
5121         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5122         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5123
5124         * debug-mono-symfile.c
5125         (mono_debug_symfile_lookup_location): Add support for the new line
5126         number table format.
5127
5128 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5129
5130         * metadata.c (free_generic_class): Release the inflated
5131         MonoClass of dynamic generic classes if it's not a generic
5132         type definition.
5133
5134 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5135
5136         * verify.c: Reapplied more of the reverted changes.
5137
5138 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5139
5140         * reflection.c (lookup_custom_attr): Clean the cached flag or
5141         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5142         for SRE types.
5143
5144 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5145
5146         * verify.c: Reapplied a small part of the reverted changes.
5147
5148 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5149
5150         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5151
5152         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5153         previously in managed code.
5154         (mono_monitor_exit): Ditto.
5155         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5156
5157         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5158         the managed definition.
5159
5160 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5161
5162         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5163
5164 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5165
5166         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5167         
5168         * monitor.c: Add some micro optimizations.
5169
5170         * icall.c (type_from_typename): Handle 'bool'.
5171
5172 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5173
5174         * verify.c: Implement constructor verification per P III 1.8.1.4.
5175         Fixes #396716.
5176
5177 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5180         holding the assemblies lock here too.
5181
5182 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5183
5184         * verify.c: Kill stack_top function.
5185
5186 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5187
5188         * verify.c: Kill stack_get function.
5189
5190 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5191
5192         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5193
5194 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5195
5196         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5197         more reliable.
5198
5199         * verify.c (mono_method_verify): Inflate params and locals to avoid
5200         mismatch when checking for compatibility.
5201
5202 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5203
5204         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5205         Length prefix should be size in bytes. Fix bug #339530.
5206         
5207         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5208         Length prefix should be size in bytes. Fix bug #339530.
5209
5210         Code is contributed under MIT/X11 license.
5211
5212 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5213
5214         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5215
5216         Contributed under MIT/X11 license.
5217
5218 2008-06-05  Martin Baulig  <martin@ximian.com>
5219
5220         * mono-debug-debugger.c
5221         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5222
5223 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5224
5225         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5226         while holding the assemblies lock to prevent deadlocks. Handle the case
5227         where the search hook returns NULL but the assembly was still loaded.
5228         Fixes #323696.
5229
5230         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5231         modify domain state.
5232
5233 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5234
5235         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5236         * Makefile.am (pedump_LDADD): Post-process object files and
5237         add dtrace-generated object file, if necessary.
5238
5239         Code is contributed under MIT/X11 license.
5240
5241 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5242
5243         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5244
5245 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5246
5247         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5248
5249 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5250
5251         * threads.c: Try to free everything from the delayed free table
5252         when shutting down threads, and set the variable to NULL after the
5253         table is freed so that calling
5254         mono_thread_hazardous_try_free_all() when shutting down the root
5255         domain doesn't crash.
5256
5257 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5258
5259         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5260         the caller if resulting type was inflated.
5261
5262         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5263         was inflated.
5264
5265         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5266
5267
5268 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5269
5270         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5271         class library tests.
5272
5273         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5274         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5275         #396989.
5276
5277 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5278
5279         * domain.c, domain-internals.h: The JIT infos are now freed by the
5280         JIT info table code.  They are freed immediately if there only a
5281         single JIT info table in circulation.  If there is more, the free
5282         is delayed via a queue.
5283
5284         * threads.c, threads-types.h: New hazard pointer function for
5285         freeing all freeable delayed items in one sitting.
5286
5287 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5288
5289         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5290
5291         * reflection.c (typebuilder_setup_properties): Same.
5292
5293         * reflection.c (typebuilder_setup_events): Same.
5294
5295 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5296
5297         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5298         and use it for allocating memory.
5299
5300         * reflection.c (mono_marshal_spec_from_builder): Same.
5301
5302         * reflection.c: Change code to use new signatures.
5303
5304         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5305
5306 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5307
5308         * decimal.c (rescale128): Put back one line which was accidently commented
5309         out.
5310         
5311         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5312         to cause crashes.
5313
5314 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5315
5316         * reflection.c (mono_reflection_generic_class_initialize): Name must
5317         be always malloc'ed so we can free it later on. Do this for field, property
5318         and event.
5319
5320         * metadata.c (free_generic_class): Free field, property and event names.
5321
5322 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5323
5324         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5325         instead of g_memdup.
5326
5327         * reflection.c (typebuilder_setup_fields): Same.
5328
5329 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5330
5331         * decimal.c (rescale128): Optimize this function a bit more.
5332
5333 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5334
5335         * metadata.c (free_generic_class): Release some memory from
5336         SRE generic classes.
5337
5338 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5339
5340         * reflection.c (mono_image_get_generic_field_token): No reference
5341         to name is kept, free it.
5342
5343         * reflection.c (mono_reflection_generic_class_initialize): Free
5344         more memory of the inflated field.
5345
5346 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5349         code.
5350
5351 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5352
5353         * reflection.c (mono_dynamic_image_free): Release memory used by
5354         MonoDynamicImage::array_methods elements.
5355
5356         * reflection.c (assembly_add_win32_resources): Release memory after
5357         encoding.
5358
5359 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5360
5361         * decimal.c (log2_32): Use an optimized version for this function too.
5362         
5363         * decimal.c (log2_64): Fix this on 32 bit machines.
5364
5365 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5366
5367         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5368
5369         * class.c (mono_metadata_signature_deep_dup): Same.
5370
5371         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5372         a mempool.
5373
5374         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5375
5376         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5377
5378         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5379
5380         * class-internals.h: Update signatures to take a MonoMemPool.
5381
5382 2008-06-02  Dick Porter  <dick@ximian.com>
5383
5384         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5385         * icall-def.h: Add
5386         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5387         FormatMessage API to get the error text.  Fixes bug 321827.
5388
5389 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5390
5391         * decimal.c: Add some micro optimizations to make decimal operations faster.
5392
5393 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5394
5395         * reflection.c (method_encode_clauses): Take a mempool
5396         as parameter and use it to allocate the clause array.
5397
5398         * reflection.c (mono_image_get_field_on_inst_token): Free
5399         the inflated type after encoding it.
5400
5401         * reflection.c (mono_dynamic_image_free): Free each element
5402         of MonoDynamicImage::gen_params.
5403
5404         * reflection.c (reflection_methodbuilder_to_mono_method):
5405         Allocate the generic param array from the mempool.
5406         Allocate signature params from the mempool.
5407
5408         * reflection.c (mono_reflection_generic_class_initialize):
5409         Free inflated fields after been used.
5410
5411 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5412
5413         * icall.c: Reapply the memory leak fixes as they no
5414         longer make mono crash.
5415
5416 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5417
5418         * reflection.c (mono_type_get_object): Don't store the suplied
5419         MonoType with type_hash. A caller which pass a type that
5420         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
5421         might end with a pointer to freed memory.
5422         The solution is to use byval_arg or this_arg from the associated
5423         MonoClass of the supplied type.
5424
5425 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
5426
5427         * icall.c: Revert the rest of the last change as it breaks the build too.
5428
5429 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5430
5431         * icall.c: Revert a leak fix as it's breaking the build.
5432
5433 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5434
5435         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
5436
5437 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5438
5439         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
5440
5441 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5442
5443         * icall.c: Fix some memory leaks.
5444
5445 2008-05-29  Dick Porter  <dick@ximian.com>
5446
5447         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
5448         async socket operations from the pending list when a socket
5449         closes.  Leaving it until the threadpool services the event
5450         exposes a race condition when a socket descriptor is reused.
5451         Fixes bug 377589.
5452
5453 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5454
5455         * object.c: Fix negative index check for array alocation.
5456
5457 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5458
5459         * icall.c, marshal.c: Delegate wrappers should skip visibility.
5460         This check is performed by the verifier for IL created delegates
5461         and by Delegate::CreateDelegate for programatically created ones.
5462         Fixes #372406.
5463
5464 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5465
5466         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
5467         Fix code to use mono_array_size_t instead of int.
5468
5469         Based on patch by Luis F. Ortiz.
5470         Contributed under X11 license.
5471         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5472
5473 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5474
5475         * icall.c: Added ves_icall_System_Array_GetLongLength and
5476         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
5477         arrays.
5478
5479         * icall.h: Export both new functions.
5480
5481         Based on patch by Luis F. Ortiz.
5482         Contributed under X11 license.
5483         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5484
5485 2008-05-28  Martin Baulig  <martin@ximian.com>
5486
5487         The debugger now requires exactly r103463.
5488
5489         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
5490         This version is not supported by the debugger, wait for 72.
5491
5492 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5493
5494         * object.h: Changed array related functions to use
5495         mono_array_size_t instead of guint32. Forgot to commit this file.
5496
5497         Patch by Luis F. Ortiz.
5498         Contributed under X11 license.
5499         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5500
5501
5502 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5503
5504         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
5505         don't define it. Use the number literal instead.
5506
5507 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5508
5509         * icall.c: Changed array related functions to use
5510         mono_array_size_t instead of guint32.
5511
5512         * icall.c (ves_icall_System_Array_GetLength): Check for length
5513         overflow under MONO_BIG_ARRAYS.
5514
5515         Based on patch by Luis F. Ortiz.
5516         Contributed under X11 license.
5517         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5518
5519 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5520
5521         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
5522
5523         Based on patch by Luis F. Ortiz.
5524         Contributed under X11 license.
5525         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5526
5527 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5528
5529         * object.c, object.h: Changed array related functions to use
5530         mono_array_size_t instead of guint32.
5531
5532         Patch by Luis F. Ortiz.
5533         Contributed under X11 license.
5534         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5535
5536 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5537
5538         * object.h: Introduced mono_array_size_t typedef. This must be used
5539         in all places an array length is expected. This is 64bits wide if
5540         MONO_BIG_ARRAYS is enabled.
5541
5542         Patch by Luis F. Ortiz.
5543         Contributed under X11 license.
5544         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5545
5546 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5547
5548         * security-manager.c class.c: Set the class exception info by calling
5549         mono_class_set_failure ().
5550
5551         * class.c (mono_class_get_exception_data): New accessor function.
5552         (mono_class_set_failure): Store exception_data in the property hash.
5553
5554         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
5555         the struct as a property.
5556
5557         * loader.c (mono_get_method_full): Store the lookup result for method
5558         tokens in method_cache, the others in methodref_cache to decrease the memory
5559         usage of hash tables.
5560
5561         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
5562         (mono_image_init): method_cache is lazy inited now.
5563
5564         * metadata-internals.h (struct _MonoImage): Change method_cache to
5565         a MonoValueHashTable, add a separate methodref_cache.
5566
5567 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
5568
5569         * number-formatter.h: Fix tables to avoid arithemtic overflow in
5570           Double.ToString as exposed by Bug #383531.
5571
5572 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5573
5574         * number-formatter.h: Make some tables static.
5575
5576         * class.c (mono_method_set_generic_container): New accessor function.
5577         (mono_method_get_generic_container): Ditto.
5578
5579         * class-internals.h (struct _MonoMethod): Remove rarely used 
5580         'generic_container' field, store it in the property hash instead. Add 
5581         'is_generic' boolean field instead.
5582
5583         * image.c (mono_image_init): Initialize property_hash.
5584         (mono_image_close): Destroy property_hash.
5585
5586         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
5587         hold rarely used fields of runtime structures belonging to this image.
5588
5589         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
5590         to get/set method->generic_container.
5591
5592         * loader.c (mono_get_method_from_token): Avoid loading the method header for
5593         generic methods.
5594
5595 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
5596
5597         * class.c (mono_class_inflate_generic_method_full): Don't increase
5598         mono_stats.inflated_method_count for methods found in the cache.
5599
5600         * threads.c (mono_thread_request_interruption): Add a comment about 
5601         QueueUserAPC ().
5602
5603 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
5604
5605         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
5606         interface_offsets_packed table.
5607         
5608         * class.c (mono_class_init): Remove some dead code.
5609
5610         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
5611         mono_class_setup_vtable () when CAS is active to detect security problems.
5612
5613 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
5614
5615         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
5616
5617         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
5618         parameters as it's irrelevant for delegate checking.
5619
5620 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
5621
5622         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
5623
5624         * class.c (mono_class_init): Control the creation of a generic vtable using
5625         a global which is true by default, but set to false by the runtime startup code.
5626         
5627         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
5628         Disabled for now since it breaks the embedding API.
5629         Move the setup of class->methods for arrays to mono_class_setup_methods ().
5630         (mono_class_setup_methods): Add a memory barrier.
5631
5632         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
5633         when mono_class_init () doesn't compute the generic vtable.
5634         
5635 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
5636         * profiler.c: Added mono_profiler_install_statistical_call_chain,
5637         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
5638         to support call chains (backtrace) in the stat profiler.
5639         * profiler.c, profiler-private.h: Likewise.
5640
5641 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5642
5643         * generic-sharing.c: Init generic class when a method of it is
5644         requested via a runtime generic context.
5645
5646 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
5647
5648         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
5649
5650         * reflection.c (mono_type_get_object): Add a FIXME.
5651
5652         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
5653
5654         * class.c (mono_class_get_method_by_index): New helper function, returning an
5655         entry in the class->methods array.
5656
5657 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5658
5659         * class.c (mono_class_init): Only do the array optimization for szarrays. 
5660         Avoid creating a generic vtable for generic instances as well.
5661         (mono_class_get_method_from_name_flags): Don't search in the metadata for
5662         generic instances.
5663
5664 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5665
5666         * loader.c (mono_get_method_constrained): Inflate the signature
5667         with class context. Fix #325283.
5668
5669 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5670
5671         * object.c (mono_class_create_runtime_vtable): Add a comment.
5672
5673         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
5674         where needed.
5675         (setup_interface_offsets): Handle the case when this is called twice for arrays.
5676         (mono_class_setup_vtable_general): Add an assert.
5677         (mono_class_init): Avoid creating a generic vtable for arrays.
5678
5679         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
5680         here, let mono_class_init () do that.
5681
5682         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
5683         interfaces in mscorlib.
5684
5685         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
5686         interfaces. Add some comments.
5687         (mono_class_init): Call mono_class_setup_methods () here since it is no
5688         longer called by mono_class_setup_vtable ().
5689
5690         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
5691         not set in class->vtable.
5692         (mono_class_create_runtime_vtable): Reenable the disabled code.
5693
5694         * object.c (mono_class_create_runtime_vtable): Disable the last change for
5695         now as it causes some test failures.
5696
5697         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
5698         if using the vtable trampoline. Also remove some strange code which put the
5699         generic methods themselves into the vtable slots. Remove the AOT init_vtable
5700         stuff as it is no longer needed.
5701
5702 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5703
5704         * pedump.c: Give make --verify all option check code as well.
5705         Using --verify code won't check for metadata now.
5706
5707 2008-05-19  Martin Baulig  <martin@ximian.com>
5708
5709         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
5710
5711         * mono-debug.c
5712         (_mono_debug_using_mono_debugger): New global variable; it's set
5713         directly by the debugger, so mono_debug_using_mono_debugger() also
5714         works after attaching.
5715
5716 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5717
5718         * object.c (mono_class_create_runtime_vtable): Use memory barriers
5719         as we do double checked locking on MonoClass::runtime_info and
5720         MonoClassRuntimeInfo::domain_vtables.
5721
5722 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
5723
5724         * debug-helpers.c (print_field_value): Fix a warning.
5725
5726 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
5729         set in the AOT case.
5730
5731 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5732
5733         * class.c (mono_class_setup_vtable_general): Use memory barriers
5734         as we do double checked locking on MonoClass::vtable.
5735
5736 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5737
5738         * reflection.c (resolve_object): Inflate only if the generic context
5739         is not null. Fixes #389886.
5740
5741 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
5742
5743         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
5744         instead of g_free.
5745
5746         Code is contributed under MIT/X11 license.
5747
5748 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5749
5750         * class.c: Revert unrelated change.
5751
5752 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5753
5754         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
5755         a generic instantiation, use mono_class_from_mono_type instead of playing
5756         with MonoType directly.
5757
5758 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5759
5760         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
5761         checks must ignore generic instantiations, so mono_class_has_parent is not
5762         suitable. Fixes #390128.
5763
5764 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
5765
5766         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
5767         it to avoid registering tokens during metadata generation. Fixes #390023.
5768
5769 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5770
5771         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
5772         consistent.
5773
5774         Contributed under MIT/X11 license.
5775
5776 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5777
5778         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
5779         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
5780         to fixup the EXE image.
5781         (mono_cleanup): Use mono_close_exe_image.
5782         (mono_close_exe_image): New function.
5783         * image.c: Include "marshal.h".
5784         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
5785         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
5786         counting when the image is loaded outside of mono_image_open_full. Set status
5787         based on GetLastError.
5788         * coree.c: Include required headers. Add init_from_coree.
5789         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
5790         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
5791         (_CorExeMain): Set init_from_coree.
5792         (CorExitProcess): Only call ExitProcess for now.
5793         (CorBindToRuntimeEx): New stub implementation.
5794         (CorBindToRuntime): New function.
5795         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
5796         (MonoFixupExe): ILONLY executables require no fixups.
5797         (mono_set_act_ctx): New function to set activation context.
5798         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
5799         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
5800         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
5801         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
5802         as MONO_INTERNAL.
5803         * domain-internals.h: Add mono_close_exe_image.
5804
5805         Contributed under MIT/X11 license.
5806
5807 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
5808
5809         * metadata.c (mono_metadata_compute_size): Correctly calculate field
5810         size for generic param and event tables. Fixes #388977.
5811
5812 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * loader.c (mono_method_signature): Use memory barriers because of the double
5815         checked locking pattern.
5816
5817         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
5818         aborting or aborted as well. Fixes #376391.
5819         
5820         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
5821         existing runtime state in the Suspend handler during shutdown.
5822
5823 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
5824
5825         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
5826
5827         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
5828         which are starting up or shutting down.
5829
5830         * threads.c (mono_threads_set_shutting_down): Don't return a value since
5831         this function never returns if the runtime is already shutting down.
5832
5833         * icall.c (ves_icall_System_Environment_Exit): Update after 
5834         mono_threads_set_shutting_down () signature change.
5835         
5836 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
5837
5838         * class.c: Added can_access_instantiation to verify if the instantiation
5839         is visible. Fix access check for nested types as they returned TRUE
5840         before doing type and generic instantiation visibility checks.
5841
5842 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
5843
5844         * reflection.c (mono_reflection_create_generic_class): The created type
5845         must have a different container from its TypeBuilder. Otherwise they
5846         will end sharing generic arguments, which is wrong.
5847
5848         Due to the sharing, making a generic instance of the created type using
5849         the TypeBuider generic arguments resulted in the generic type definition
5850         been returned, which is wrong as well.
5851
5852         As a bonus the code was leaking the type_params array. This memory should
5853         be allocated from the image mempool.
5854
5855         This fixes bug #354047.
5856
5857 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
5858
5859         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
5860         to here         as they are now used in assembly.c new code.
5861         Added a skipverification flag to MonoAssembly.
5862         New internal function mono_assembly_has_skip_verification.
5863
5864         * assembly.c: New function mono_assembly_has_skip_verification. It checks
5865         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
5866         part of #387274.
5867
5868 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5869
5870         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
5871         needed. Fixes #387034.
5872
5873         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
5874
5875 2008-05-06  Miguel de Icaza  <miguel@novell.com>
5876
5877         * assembly.c (mono_assembly_load_reference): Prevent crash while
5878         disassembling Silverlight 2.0 executables while we still do not
5879         have GACed libraries.
5880
5881 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
5882
5883         * reflection.c: Special case generic type definitions as well. Fixes #383444.
5884
5885 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
5886
5887         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
5888         of the dynamic case. Fixes #387404.
5889
5890 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5891
5892         *verify.c (mono_verifier_is_class_full_trust): If under
5893         verify_all and the verifier mode was not set, only
5894         gac and corlib types are fulltrust. This makes --verify-all
5895         usable to detect unverifiable code, which is the expected
5896         use case.
5897
5898 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5899
5900         * verify.h: Ops, commited the header with debug
5901         enabled.
5902
5903 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
5904
5905         * verify.c (merge_stack): Use the new value on unverifiable
5906         stack merges.
5907
5908         * verify.c (verify_type_compatibility_full): Comparison
5909         of nullable types can't use mono_class_is_assignable_from.
5910
5911         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
5912         that makes all verification errors be reported.
5913
5914         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
5915         mono_method_verify.
5916
5917 2008-05-05  Robert Jordan  <robertj@gmx.net>
5918
5919         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
5920         support for value types. See #386415.
5921
5922         * object.c: comments.
5923
5924         Code is contributed under MIT/X11 license.
5925
5926 2008-05-05  Martin Baulig  <martin@ximian.com>
5927
5928         * debug-mono-symfile.h
5929         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
5930         for old pre-terrania symbol files.
5931
5932 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5933
5934         * mono-config.c: Add ppc64 architecture.
5935
5936         Code is contributed under MIT/X11 license.
5937
5938 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
5939
5940         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
5941           PPC64 uses function descriptors as well.
5942
5943         Code is contributed under MIT/X11 license.
5944
5945 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
5946
5947         * object.c (compute_class_bitmap): Ignore literal static fields.
5948
5949         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
5950         var has an invalid format.
5951         (describe_ptr): Add some sanity checks for the vtable.
5952         (add_nursery_frag): Clear unused nursery fragments.
5953         (major_collection): Clear all remaining nursery fragments.
5954
5955 2008-05-03  Robert Jordan  <robertj@gmx.net>
5956
5957         * image.c, metadata-internals.h: add thunk_invoke_cache.
5958
5959         * marshal.c, marshal.h: implement
5960         mono_marshal_get_thunk_invoke_wrapper ().
5961
5962         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
5963
5964         Code is contributed under MIT/X11 license.
5965
5966 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
5967
5968         * verify.c (do_leave): Empty the stack.
5969
5970 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
5971
5972         * class.c (mono_class_is_assignable_from): Variance
5973         doesn't work between reference and value types. For example,
5974         given type C<T+>, C<int32> is not assignable to C<object>.
5975         Break the argument checking loop on first error. 
5976
5977 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
5978
5979         * icall.c : base64_to_byte_array() needs some more strict
5980           check for sequence of '=' characters. Patch by Santa
5981           Marta (http://deee.g.hatena.ne.jp/santamarta).
5982
5983           Contributed under MIT/X11 license.
5984           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
5985
5986 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
5987
5988         * domain.c: Disable LoadLibrary support to fix Win32 build.
5989
5990         Code is contributed under MIT/X11 license.
5991
5992 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
5993
5994         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
5995         to help with cache behaviour.
5996
5997 2008-05-01  Miguel de Icaza  <miguel@novell.com>
5998
5999         * appdomain.c (mono_domain_from_appdomain): Add new accessor
6000         method. 
6001
6002 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
6003
6004         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
6005
6006 2008-05-01  Dick Porter  <dick@ximian.com>
6007
6008         * process.c (process_get_fileversion): Only pass 16 bits of
6009         language ID to VerLanguageName.  Fixes bug 381204.
6010
6011 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6012
6013         * verify.c (mono_method_verify): Fix the comparison
6014         operator for code bounds check.
6015
6016 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6017
6018         * verify.c (mono_method_verify): Check the bounds of
6019         all access of the code array.
6020
6021 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
6022
6023         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
6024
6025 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
6026
6027         * image.c (mono_image_strong_name_position): Fix return value when the rva is
6028         not valid.
6029
6030 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6031
6032         * loader.c (mono_get_method_from_token, mono_method_signature): Add
6033         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
6034         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
6035         fixup main EXE images when using mono.exe for mixed-mode assembly support.
6036         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
6037         mono_runtime_load.
6038         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
6039         runtime initialization from metadata.
6040         * assembly.c: Remove obsolete ceGetModuleFileNameA.
6041         (mono_set_rootdir): Use mono_get_module_file_name.
6042         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
6043         handles.
6044         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
6045         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
6046         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
6047         MonoCLIImageInfo. Add support for module handles.
6048         (load_cli_header): Update mono_cli_rva_image_map signature.
6049         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
6050         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
6051         (mono_image_rva_map): Add support for module handles.
6052         (mono_image_ensure_section_idx): Add support for module handles.
6053         (mono_image_close): Add support for module handles.
6054         (do_load_header): Add support for module handles.
6055         (mono_image_open_from_module_handle): New function for internal use.
6056         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
6057         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
6058         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
6059         handles.
6060         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
6061         * image.h: Add mono_image_fixup_vtable.
6062         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
6063         support.
6064         * coree.h: New file.
6065         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
6066         unsupported native code.
6067         (mono_marshal_set_callconv_from_modopt): New function splitted from
6068         mono_marshal_get_managed_wrapper.
6069         (mono_marshal_get_managed_wrapper): Use
6070         mono_marshal_set_callconv_from_modopt.
6071         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
6072         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
6073         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
6074         that results in a deadlock when the runtime is loaded in _CorDllMain.
6075         * Makefile.am: Add coree.c and coree.h.
6076
6077         Contributed under MIT/X11 license.
6078
6079 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6080
6081         * generic-sharing.c: Search for type arguments in array element
6082         types as well.
6083
6084 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6085
6086         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6087
6088         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6089
6090         * object.c: Don't setup the RGCTX when the vtable is created,
6091         because we're setting it up lazily now.
6092
6093 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6094
6095         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6096         64 bit support.
6097
6098 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6099
6100         * verify.c (verify_class_for_overlapping_reference_fields): 
6101         If class is under fulltrust allow reference types to overllap
6102         if they have the same RVA.
6103
6104 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6105
6106         * pedump.c: Added new flag valid-only, that makes the verifier
6107         behaves just like --security=validil. It won't fail type load
6108         due to unverifiable restrictions.
6109
6110 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6111
6112         * class-internals.h (struct MonoMethod): Added a verification_success
6113         field to cache verifier executions. Reduced MonoMethod:slot size by
6114         one bit.
6115
6116 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6117
6118         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6119         instead of a 'vt' argument to save an indirection and to allow these to be used
6120         for valuetypes.
6121         (scan_vtype): New helper function to scan an area using a gc descriptor.
6122         (mono_gc_wbarrier_value_copy): Implement this.
6123         (handle_remset): Add support for REMSET_VTYPE.
6124         (find_in_remset_loc): Ditto.
6125         (mono_gc_base_init): Allow some debugging options to be controlled through the
6126         use of the MONO_GC_DEBUG env variable.
6127         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6128         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6129
6130 2008-04-23  Martin Baulig  <martin@ximian.com>
6131
6132         * domain.c (mono_domain_create): Move the call to
6133         mono_debug_domain_create() down, after allocating the domain id.
6134
6135 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6136
6137         verify.c (verify_class_for_overlapping_reference_fields): Skip
6138         static fields while verifying for overlapping fields as they
6139         don't matter at all.
6140
6141 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6142
6143         * domain-internals.h: added a declaration of
6144         mono_make_shadow_copy.
6145
6146         * assembly.c (mono_assembly_open_full): shadow copying of
6147         assemblies moved to here, so that all the assemblies within the
6148         application domain's private binary directories can be
6149         processed. Fixes bug #380546
6150
6151         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6152         mono_make_shadow_copy and made non-static. The decision whether
6153         to shadow-copy an assembly is made based on its location - it's
6154         copied if it's in one of the private application domain binary
6155         directories and its different to the target file in the shadow
6156         directory. Fixes bug #380546
6157
6158 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6159
6160         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6161
6162         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6163         types.
6164
6165         * reflection.c (mono_image_create_token): Handle 
6166         Method/ConstructorOnTypeBuilderInst.
6167         (resolve_object): Ditto.
6168         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6169         so it can be called from resolve_object. Also handle the case when the inflated
6170         class already has its methods setup.
6171
6172 2008-04-21  Martin Baulig  <martin@ximian.com>
6173
6174         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6175
6176 2008-04-20  Geoff Norton  <gnorton@novell.com>
6177
6178         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6179         pointer dereference.
6180
6181 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6182
6183         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6184         portability API to look up the assembly file. Fixes behavior in
6185         situations when the application has a bin/ directory, but the
6186         assembly search patch refers to Bin/ (and thus the requested file
6187         name is Bin/SomeLibrary.dll). Fixes bug #379888
6188
6189 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6190
6191         verify.c (mono_type_is_generic_argument): Extracted this check
6192         from a dozen places to here.
6193
6194         verify.c: Fixed all issues related to boxing generic arguments
6195         and their constraints.
6196
6197 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6198
6199         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6200
6201 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6202
6203         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6204         isn't finished yet. Fixes #363447.
6205
6206 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6209         Fixes #346419.
6210
6211 2008-04-13  Jb Evain  <jbevain@novell.com>
6212
6213         * domain.c: update the 2.1 profile versions.
6214         Merged from the Moonlight 2 branch.
6215
6216 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6217
6218         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6219         mscorlibs for the non-refonly case as well.
6220
6221         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6222         in mono_assembly_load_from_full (). Fixes #378924.
6223
6224 2008-04-11  Geoff Norton  <gnorton@novell.com>
6225
6226         * icall.c: The global extern environ doesn't exist on Mac.  We
6227         need to call NSGetEnviron instead.
6228
6229 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6230
6231         verify.c: Add generic method constraint verification.
6232
6233 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6234
6235         class.c (mono_class_inflate_generic_method_full): Add a long
6236         explanation to the is_mb_open hack. Remove the FIXME.
6237
6238 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6239
6240         * verify.c (mono_method_verify): Mark all unknown opcodes
6241         as invalid. Mark jmp as unverifiable.
6242
6243 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6244
6245         * verify.c: Add code to do type constraint verification on class instances.
6246
6247         * verify.c (mono_verifier_verify_class): Use the type constraint 
6248         verification code.
6249
6250 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6251
6252         * class.c (mono_class_get_field_default_value): Don't pass cindex
6253         as hint to mono_metadata_get_constant_index. The local is not initialized
6254         and should contain garbage most of the time. This could only work
6255         with a lot of luck.
6256
6257 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6260
6261 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6262
6263         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6264
6265         * class.c (mono_class_from_generic_parameter): Save the token of the
6266         generic param in MonoClass::sizes.generic_param_token.
6267
6268         * reflection.c (mono_custom_attrs_from_class): If the class type is
6269         VAR or MVAR retrieve the attributes of the generic param.
6270
6271 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6272
6273         * class.c (mono_class_init): Do class verification if the verifier
6274         is enabled.
6275
6276 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6277
6278         * verify-internal.h: Added mono_verifier_verify_class.
6279
6280         * verify.c: Added mono_verifier_verify_class. It checks for
6281         classes with explicit layout that have overlapping reference fields.
6282
6283         * pedump.c: Init the verifier state prior to verification. Fixed
6284         command line arguments.
6285
6286 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6287
6288         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6289
6290 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6291
6292         * verify-internals.h: Fix a warning.
6293
6294 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6295
6296         * verify-internals.h: New header with the verifier configuration
6297         extracted from mini.c.
6298
6299         * verify.c: Implemented the new functions exported by verify-internals.h.
6300
6301 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6302
6303         * verify.c: Add proper verification of ckfinite.
6304
6305 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6306
6307         * verify.c (do_conversion): Improved error message to something
6308         more meanfull.
6309
6310         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6311         with primitive types.
6312
6313 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6314
6315         * verify.c: Added tail prefix checking. Marked icall
6316         as unverifible.
6317
6318 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6319
6320         * verify.c: Fix the detection of branches to the middle
6321         of an instruction.
6322
6323 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         * verify.c: Implemented verification of volatile. and
6326         unaligned. prefix. Check if a type is valid after retrieving it.
6327
6328 2008-04-01  Dick Porter  <dick@ximian.com>
6329
6330         * process.c (process_get_fileversion): If there's no string block,
6331         set the file language to en_US.  Fixes the other new part of bug
6332         374600.
6333
6334 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6335
6336         * class.c: New functions mono_method_can_access_field_full and
6337         mono_method_can_access_method_full. They perform type visibility
6338         and type site check.
6339
6340         * class-internal.h: Added exported functions.
6341
6342         * verify.c: Use new functions to implement proper visibility checks.
6343
6344 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6345
6346         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6347
6348 2008-03-28  Dick Porter  <dick@ximian.com>
6349
6350         * process.c (process_get_fileversion): Use the first language ID
6351         we see, rather than insisting on an invariant language.  Fixes bug
6352         374600.
6353
6354 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6355
6356         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6357         the streams to fix reading of invalid memory later.
6358
6359         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6360         to ease debugging.
6361
6362 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6363
6364         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6365         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6366
6367 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6368         * threads.h: Added MonoThreadManageCallback type and
6369         mono_thread_set_manage_callback prototype
6370         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6371         (used to store the mono_thread_manage callback).
6372         * threads.c: Added mono_thread_set_manage_callback, and handle
6373         "MonoThread->manage_callback" in build_wait_tids.
6374
6375 2008-03-26  Dick Porter  <dick@ximian.com>
6376
6377         * process.c (process_get_fileversion): Set FileVersionInfo strings
6378         to Empty when the resource doesn't have the particular info.
6379         Fixes bug 355717.
6380
6381 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6382
6383         * verify.c (mono_method_verify): Proper prefix validation.
6384
6385 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6386
6387         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6388         itself in a separate argument instead of throwing them. Fixes #373448.
6389
6390         * appdomain.c: Bump corlib version.
6391
6392 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
6395
6396 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6397
6398         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
6399         version macros.
6400
6401 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6402
6403         * generic-sharing.c, class-internals.h: Code for putting
6404         reflection types into the runtime generic context.
6405
6406 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6407
6408         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
6409         Fixes #340662. 
6410
6411
6412 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
6413
6414         * verify.c (VerifyContext): Added instruction prefix data to the struct.
6415
6416         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
6417
6418         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
6419
6420         * verify.c (do_cast): Let the result value keep the boxed status.
6421
6422         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
6423
6424 2008-03-17  Jb Evain  <jbevain@novell.com>
6425
6426         * reflection.c: when running on a 2.0 runtime, emit
6427         unconditionally the #~ header version as 2.0, and the
6428         CLI header version as 2.5, for symmetry's sake with csc.
6429
6430 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6431
6432         * class.c: Remove the unused cache_interface_offsets stuff.
6433
6434         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
6435         profiler.c: Fix warnings.
6436
6437 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6438
6439         * generic-sharing.c, class-internals.h: Support for putting
6440         methods into the runtime generic context.
6441
6442 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6443
6444         * class.c (mono_class_setup_fields): Ignore calls made to this function for
6445         classes which are generic instances of not-yet finished typebuilders. Fixes
6446         #351172.
6447
6448         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
6449
6450 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
6451
6452         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
6453
6454         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
6455         field, replace it with a hash table in MonoDynamicImage.
6456
6457         * reflection.c (inflate_mono_method): Access the generic definition object from
6458         image->generic_def_objects instead of imethod->reflection_info.
6459
6460         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
6461
6462         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
6463         
6464         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
6465         function in reflection.c so it is easier to keep in sync with the dynamic image
6466         creation code.
6467
6468         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
6469         mono_image_close ().
6470
6471 2008-03-15  Mark Probst  <mark.probst@gmail.com>
6472
6473         * class.c (mono_class_generic_sharing_enabled): Disable generic
6474         sharing for all architectures except AMD64 and x86 to fix build.
6475
6476 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6477
6478         * verify.c: Use the generic definition MonoGenericContext when available.
6479         Remove code for checking generics instance compatibility in favor of
6480         mono_class_is_assignable_from.
6481
6482 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6483
6484         * marshal.c, marshal.h, metadata-internals.h, image.c,
6485         wrapper-types.h: New wrapper for invoking a shared static method
6486         without having to pass the runtime generic context argument.
6487
6488 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6489
6490         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
6491
6492 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6493
6494         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
6495         
6496         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
6497         create a token from a FieldOnTypeBuilderInst.
6498         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
6499         (resolve_object): Ditto.
6500
6501         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
6502         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
6503
6504 2008-03-14  Martin Baulig  <martin@ximian.com>
6505
6506         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
6507
6508         * debug-mono-symfile.h
6509         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
6510         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
6511
6512 2008-03-10  Martin Baulig  <martin@ximian.com>
6513
6514         * debug-mono-symfile.h
6515         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
6516         `lexical_block_table_offset'.
6517         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
6518         `lexical_blocks'.
6519         (MonoSymbolFile): Added `version'.
6520
6521         * mono-debug.h
6522         (MonoDebugLexicalBlockEntry): Removed.
6523         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
6524         `lexical_blocks'.
6525
6526         * mono-debug.c (mono_debug_add_method): Don't compute lexical
6527         blocks here; the debugger now does this internally.
6528
6529 2008-02-27  Martin Baulig  <martin@ximian.com>
6530
6531         * object.c (mono_runtime_exec_main): Call
6532         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
6533         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
6534
6535 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6536
6537         * verify.c (verify_type_compatibility_full): Allow native int to be converted
6538         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
6539
6540 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6541
6542         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
6543         ldftn with a virtual method.
6544
6545 2008-03-13  Geoff Norton  <gnorton@novell.com>
6546
6547         * decimal.c:  Only include memory.h if the platform has it.
6548
6549 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
6550
6551         * assembly.c, class.c, metadata-internals.h: make sure public key
6552         tokesns are compared in a case-insensitive way. Also, all
6553         the lookups in the GAC use a lowercase public key token
6554         (gaacutil already does the lowercasing on install). Fixes
6555         bug #369541.
6556
6557 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
6558
6559         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
6560         and return value.
6561
6562 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
6563
6564         * image.c: when someone loads a mscorlib from a file, return the
6565         currently loaded mscorlib (fixes bug #369253).
6566
6567 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6568
6569         * class.c: handle types with no parents by forcing them to have
6570         System.Object as a parent and marking them as broken (this currently
6571         allows the first part of bug #369173 to work as well, likely because
6572         we don't check for typeload exceptions everywhere yet).
6573
6574 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
6575
6576         * class.c: more complete check that types belong to corlib
6577         (fixes second part of bug #369173).
6578
6579 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
6580
6581         * generic-sharing.c:  Including glib.h for the MSVC builds to define
6582           "inline" to "__inline" before including mono-membar.h.
6583           
6584         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
6585           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
6586           MSVC builds.
6587
6588         Contributed under MIT/X11 license.
6589
6590 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6591
6592         * verify.c (do_invoke_method): Remove return type validation.
6593
6594         * verify.c (do_ret): Do return type validation at return site instead of
6595         call site.
6596
6597 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6598
6599         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
6600
6601         * verify.c: Some todos cleaned and improved a few error messages.
6602
6603 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
6604
6605         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
6606
6607 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6608
6609         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
6610         system types correctly.
6611
6612         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
6613         function.
6614
6615 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6616
6617         * assembly.c (build_assembly_name): Fix a warning.
6618
6619 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6620
6621         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
6622         the called function takes an object type argument. Fixes storing or
6623         valuetypes across remoting as well as reducing memory usage.
6624         * image.c, metadata-internals.h: remove now unused ldfld_remote and
6625         stfld_remote wrapper caches.
6626
6627 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6628
6629         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
6630         is not found.
6631
6632         * reflection.c (mono_image_register_token): New helper function to save
6633         a token->object mapping.        
6634
6635         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
6636         managed code.
6637
6638         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
6639         one dimension arrays. Fixes #367670.
6640         (mono_reflection_get_type_internal): Ditto.
6641
6642 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6643
6644         * marshal.c: mono_load_remote_field_new() always returns object.
6645         so use the proper signature (fixes bug #366445).
6646
6647 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6648         
6649         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
6650         add an 'inline_failure' flag instead.
6651
6652 2008-03-04  Mark Probst  <mark.probst@gmail.com>
6653
6654         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
6655         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
6656         contains the location of "this", used for exception handling.
6657
6658 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6659
6660         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
6661         their size on all platforms for perf reasons.
6662
6663 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6664
6665         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
6666         object-internal.h
6667
6668         * object-internal.h: Same.
6669
6670 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6671
6672         * reflection.h: Fix the build I just broke.
6673
6674 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6675
6676         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
6677         Test if a token is valid, this remove explicit usage of 
6678         MonoDynamicImage::tokens from the verifier code.
6679
6680         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
6681
6682         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
6683         instead of direct access to MonoDynamicImage::tokens.
6684
6685 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * verify.c (token_bounds_check): Fix the build I just broke.
6688
6689 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
6692
6693         * verify.c (verifier_load_method): Fixed the errors message.
6694
6695         * verify.c (mono_method_verify): Fixed a debug message.
6696
6697 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
6698
6699         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
6700         mono-perfcounters.h, class-internals.h: support for predefined
6701         writable counters, query of categories and counters, bugfixes.
6702
6703 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6704
6705         * verify.c (do_refanytype): Verify the refanytype opcode.
6706
6707         * verify.c (mono_method_verify): Use do_refanytype.
6708
6709 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6710
6711         * verify.c (do_mkrefany): Verify the mkrefany opcode.
6712
6713         * verify.c (mono_method_verify): Use do_mkrefany.
6714
6715 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
6716
6717         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
6718         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
6719         implementation.
6720
6721 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6722
6723         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
6724         the type load exception.
6725
6726 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
6727
6728         * verify.c: Added a few FIXME for method signatures
6729
6730         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
6731         of mono_method_get_signature and get vararg call working. Removed unused
6732         checks for return value.
6733
6734         * verify.c (do_refanyval): Verify the refanyval opcode.
6735
6736         * verify.c (mono_method_verify): Implemented verification of arglist and
6737         use do_refanyval.
6738
6739 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6740
6741         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
6742         vtypes to marshal.c.
6743
6744         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
6745         it works for AOT as well.
6746
6747 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6748
6749         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
6750         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
6751         the system time is adjusted.
6752
6753 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
6754
6755         * icall.c, icall-def.h: use the new time functions (fixes the
6756         non-monotonic behaviour of TickCount).
6757
6758 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
6759
6760         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
6761         it breaks the build.
6762         
6763         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
6764         cattr is not finished yet.
6765
6766 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6767
6768         * verify.c: Proper token validation for field, method and type.
6769
6770 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6771
6772         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
6773
6774         * loader.c (method_from_memberref): Generate type load error instead of method missing
6775         if the type is not found.
6776
6777 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
6778
6779         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
6780         some of the conversions caused the generation of a marshal directive exception.
6781
6782 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6783
6784         verify.c: Report which exception should be thrown by the JIT.
6785         Added a lot of FIXME notes.
6786
6787 2008-02-22  Mark Probst  <mark.probst@gmail.com>
6788
6789         * generic-sharing.c: Runtime generic context slots are not
6790         instantiated on init anymore.  Instead, provide function to do the
6791         instantiating on demand.
6792
6793         * class-internals.h: Added vtable to runtime generic context.
6794         Macros for encoding direct and indirect slot offsets in one
6795         guint32.
6796
6797 2008-02-21  Mark Probst  <mark.probst@gmail.com>
6798
6799         * object.c, generic-sharing.c: Moved some generic sharing code
6800         from object.c to generic-sharing.c.
6801
6802         * generic-sharing.c: Added support for extensible runtime generic
6803         context.
6804
6805         * metadata-internals.h: Two new hash tables in MonoImage for
6806         extensible runtime generic context support.
6807
6808         * domain.c: Unregister generic vtables upon domain unloading.
6809
6810         * image.c: Destroy new hash tables upon image unloading.
6811
6812         * metadata.c: Unregister generic subclasses upon image unloading.
6813
6814         * class-internals.h: New data structure for runtime generic
6815         context template.  New fields in the runtime generic context for
6816         extensible part.
6817
6818         * Makefile.am: Added generic-sharing.c.
6819
6820 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6821
6822         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
6823         there is a pending loader exception, raise it.
6824
6825         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
6826         same.
6827
6828         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
6829         same.
6830
6831         Fixes #363450.
6832
6833 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
6836
6837         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
6838         
6839         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
6840         ref-only requests for compatibility with MS.
6841
6842 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
6843
6844         * reflection.c (mono_custom_attrs_from_method): Don't silently
6845         return an empty list for generic method instances.
6846         (mono_custom_attrs_from_param): Likewise.
6847
6848 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
6849             Raja R Harinath  <harinath@hurrynot.org>
6850
6851         Fix #354757
6852         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
6853         * class.c (mono_class_inflate_generic_method_full): Initialize it
6854         when a fully-open method is instantiated.
6855         * metadata.c (inflated_method_equal, inflated_method_hash): Update
6856         to new field.
6857         * reflection.c (inflate_mono_method): Don't create a temporary context.
6858
6859 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
6860
6861         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
6862         Compute correct value, to prepare for imethod->reflection_info going away.
6863
6864 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
6865
6866         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
6867
6868 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
6869
6870         * verify.c: Implement skip visibility flag.
6871
6872 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
6873
6874         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
6875         which contains an extra field to tell the kind of exception that should be thrown.
6876
6877         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
6878
6879 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
6880
6881         * loader.c (mono_method_get_param_names): Initialize 'klass' after
6882         'method' is updated.
6883
6884 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
6885
6886         * class.c (mono_class_layout_fields): Set class->min_align for classes using
6887         explicit layout as well. Fixes #360375.
6888
6889 2008-02-11  Geoff Norton  <gnorton@novell.com>
6890
6891         * loader.c: Guard and dereference against inflated generic methods
6892
6893 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
6894
6895         * class.c: Include Retargetable spec in assembly name.
6896         * assembly.c: Always include PublicKeyToken spec in assembly name
6897         (with value "null" if assembly is not signed), and include
6898         Retargetable spec.
6899         * icall-def.h: Added icall for Assembly.get_fullname.
6900         * icall.c: Added icall returning the fullname of an assembly.
6901
6902 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
6903
6904         * class.c (mono_class_setup_vtable_general): Add a missing call to
6905         mono_class_setup_methods () which is needed in the AOT case.
6906
6907 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
6908
6909         * verify.c (mono_type_get_stack_name): Added. Return the name for the
6910         stack type of the given MonoType.
6911
6912         * verify.c (verify_type_compatibility_full): Handle the void type.
6913
6914         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
6915         way stack merging works.
6916
6917         * verify.c (store_local): Improved verification message.
6918
6919         * verify.c (do_branch_op): If the merging is invalid, the method
6920         is unverifiable and not invalid. Improved error message.
6921
6922         * verify.c (merge_stacks): Properly merge a boxed valuetype and
6923         a reference type diferent than System.Object. Improved error
6924         message.
6925
6926 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
6927
6928         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
6929
6930         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
6931         type of an enum even if the argument is byref.
6932
6933         * verify.c: Replace all explicit uses of enumtype and enum_basetype
6934         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
6935
6936         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
6937
6938         *verify.c (verify_type_compatibility_full): Make enum types
6939         compatible with their base types.
6940
6941         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
6942         types are compatible for the special case of a boxed valuetype and
6943         System.Object.
6944
6945         * verify.c (verify_stack_type_compatibility): The function
6946         is_compatible_boxed_valuetype was extracted from here.
6947
6948         * verify.c (push_arg): Only set ctx->has_this_store if the method
6949         is not static.
6950
6951         * verify.c (do_ldelem): Fixed a typo in an error message and added
6952         strict check for mixing int32 and native int as the array type
6953         and ldelem type.
6954
6955         * verify.c (merge_stacks): Consider boxed valuetypes in the
6956         compatibility checks.
6957
6958 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
6959         * profiler.h: (MonoGCEvent): Added start-stop the world events.
6960
6961 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
6962         *class.c: use_new_interface_vtable_code: renamed the env var to have
6963         a "MONO_" prefix, and fix the logic to enable it by default.
6964
6965 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
6966         *class.c:
6967         mono_class_setup_vtable_general: rewrote the way in which interface
6968         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
6969         makes the code more maintainable.
6970         For now the old code is still there, and can be activated setting
6971         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
6972
6973 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
6974
6975         * verify.c: guarded some debug functions around and #ifdef.
6976
6977         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
6978
6979 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
6982         changes for now since they seem to break too many things.
6983
6984 2008-02-05  Mark Probst  <mark.probst@gmail.com>
6985
6986         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
6987         mono_marshal_find_nonzero_bit_offset): Added macro and function
6988         for finding the byte- and bit-offset of a bitfield within a
6989         struct.
6990
6991 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
6992
6993         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
6994         (mono_marshal_get_struct_to_ptr): Ditto.
6995
6996         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
6997         cctor_signature.
6998
6999 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7000
7001         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
7002         between methods for non-corlib types.
7003
7004 2008-02-02  Geoff Norton  <gnorton@novell.com>
7005
7006         * loader.c (mono_method_get_param_names): Populate the parameter name for 
7007         generic parameters as well. (Fixes #342536)
7008
7009 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
7010
7011         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
7012
7013         * verify.c (do_invoke_method): Fix for calling with byref structs.
7014
7015         * verify.c (do_cast): push a boxed value type based on the type token and not
7016         the type of stack.
7017
7018 2008-01-31  William Holmes  <billholmes54@gmail.com>
7019
7020         * process.c (process_module_string_read): Check the size returned form 
7021           VerQueryValue to avoid out of memory exception. 
7022
7023 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7024
7025         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
7026         Handle properly modules which are not in the moduleref table. Fixes
7027         #356938.
7028
7029 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7030
7031         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
7032         the dynamic case which is now in managed code.
7033         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
7034
7035         * marshal.c (mono_string_to_bstr): Fix a warning.
7036         (init_com_provider_ms): Ditto.
7037
7038         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
7039
7040         * exception.c (mono_get_exception_out_of_memory): New helper function.
7041
7042 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
7043
7044         * marshal.c: Add support for BSTR marshalling
7045         using other COM systems.
7046
7047         Code is contributed under MIT/X11 license.
7048
7049 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7050
7051         * object.c (mono_runtime_invoke_array): reverted previous
7052         commit as it breaks the build.
7053
7054 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7055
7056         * object.c (mono_runtime_invoke_array): Verify arguments for
7057         invalid types. Fixes #348522.
7058
7059 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7060
7061         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
7062         non-final virtual calls using call. 
7063
7064         * verify.c (do_invoke): fixed some TODOs.
7065
7066         * verify.c (push_arg): set has_this_store for "ldarga 0".
7067
7068 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7069
7070         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
7071         which belong to an inflated class. Fixes #356531.
7072
7073 2008-01-26  Robert Jordan  <robertj@gmx.net>
7074
7075         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
7076         which resort to FindFirstFile when a certain error condition
7077         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7078         Code is contributed under MIT/X11 license.
7079
7080 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7081
7082         * marshal.c (emit_marshal_string): Fix out string marshalling
7083         to use specified encoding. Fixes #323900.
7084
7085         Code is contributed under MIT/X11 license.
7086
7087 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7088
7089         * class.c (mono_class_inflate_generic_method_full): Don't modify
7090         iresult->context after cache check.
7091
7092 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7093
7094         * class.c (mono_class_inflate_generic_method_full): Change the
7095         struct assignments to memcpy for better visibility and add some comments.
7096
7097 2008-01-23  Dick Porter  <dick@ximian.com>
7098
7099         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7100         procedure, and make it work on windows.
7101
7102 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7103
7104         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7105         a MonoReflectionTypeBuilder since it is always of that type.
7106
7107         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7108
7109         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7110
7111         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7112         
7113         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7114
7115         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7116
7117         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7118         instantiations from the type cache.
7119
7120 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7121
7122         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7123
7124         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7125
7126 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7127
7128         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7129
7130         * verify.c (mono_method_verify): removed old TODO
7131
7132 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7133
7134         * verify.c (do_newobj): add visibility check.
7135
7136 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7137
7138         * verify.c (do_load_function_ptr): add visibility check.
7139
7140 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7141         *class.c:
7142         mono_generic_class_get_class: hook profiler events.
7143         mono_field_get_offset: added to support heap-shot in the new profiler.
7144         *class.h: exported mono_field_get_offset.
7145         * reflection.c:
7146         mono_reflection_setup_internal_class: hook profiler events.
7147
7148 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7149
7150         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7151         argument here too and use it to avoid checking for pending exceptions if 
7152         possible.
7153
7154 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7155
7156         * assembly.c (build_assembly_name): add arg for passing the assembly
7157         flags. Do not consider a PublicKey with value "null" valid.
7158         (mono_assembly_name_parse_full): added boolean argument that will be
7159         set if the assembly name contains a PublicKeyToken spec. Added support
7160         for the Retargetable spec for which only Yes or No are allowed as valid
7161         value. Consider assembly name invalid if Retargetable spec is set, but
7162         either version, culture or public key (token) are not specified.
7163         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7164         with implementation in assembly.c.
7165         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7166         from MonoAssemblyName.
7167         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7168         introduced argument for mono_assembly_name_parse_full to know if the
7169         assembly name has a PublicKeyToken spec, and if it has instruct
7170         fill_reflection_assembly_name to use default value for keyToken (if
7171         PublicKeyToken is null).
7172
7173 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7174
7175         * verify.c (mono_method_verify): fixed ovf ops with
7176         float values. They are unverifiable now.
7177
7178 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7179
7180         * class.c (set_failure_from_loader_error): add BadImageException to the
7181         list of exceptions that can cause a type to fail to load.
7182
7183         * class.c (mono_class_get_exception_for_failure): same.
7184
7185 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7186
7187         * verify.c (in_any_exception_block): added, check if offset
7188         is part of any exception handling clause.
7189
7190         * verify.c (get_stack_type): added VAR and MVAR types.
7191
7192         * verify.c (do_stobj): better error messages.
7193
7194         * verify.c (do_cpobj): added, check cpobj.
7195
7196         * verify.c (do_initobj): added, check initobj.
7197
7198         * verify.c (do_sizeof): added, check sizeof.
7199
7200         * verify.c (do_localloc): added, check localloc.
7201
7202         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7203
7204 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7207         save_lmf/restore_lmf opcodes.
7208
7209         * threads.c (mono_threads_install_notify_pending_exc): New function to
7210         install a callback notifying the JIT there is a pending exception on a thread.
7211         (mono_thread_request_interruption): Call the new callback.
7212         (mono_thread_get_and_clear_pending_exception): New function to return the
7213         exception pending on a thread.
7214
7215         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7216         to turn off checking for pending exceptions.
7217         (mono_marshal_get_native_wrapper): Ditto.
7218
7219 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7220
7221         * threads-types.h: Get rid of the unnecessary extern declarations.
7222
7223 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7224
7225         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7226         return field from parent class if not private.
7227         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7228         returns fields from parent class if they are not private.
7229         (method_nonpublic): added function to determine if a given method
7230         should be considered non-public. Returns false for private methods
7231         on parent class, and internal methods from parent on the 1.0 profile.
7232         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7233         use method_nonpublic function to determine whether method should be
7234         returned.
7235         (property_accessor_public): use newly introduced method_nonpublic
7236         function to determine whether accessor is non-public. 
7237         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7238         event from parent class if not private. Only return static event if
7239         Static flag is set, and only return static event from parent class if
7240         FlattenHierarchy flag is set.
7241         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7242         include non-private events from parent class.
7243
7244 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7245
7246         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7247         warning.
7248
7249 2008-01-16  Wade Berrier <wberrier@novell.com>
7250
7251         * security.c: Add assembly.h header to appease some warnings
7252
7253 2008-01-16  Dick Porter  <dick@ximian.com>
7254
7255         * process.c (process_module_string_read): Remove trailing null
7256         when saving string.
7257
7258 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7259
7260         * class-internals.h: A new data structure describing the layout of
7261         a runtime generic context (MonoRuntimeGenericContextTemplate).
7262
7263         * metadata-internals.h: Added a hash table to MonoDomain that maps
7264         from open generic classes to their runtime generic context
7265         templates.
7266
7267         * object.c: Building of the runtime generic context, including
7268         proper handling of generic type arguments of superclasses.
7269         Building of the runtime generic context according to the template.
7270
7271 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7272
7273         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7274         Fixes #350856.
7275
7276         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7277         mono_portability_find_file (). Fixes #325466.
7278         (mono_image_get_public_key): Fix a warning.
7279
7280 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7281
7282         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7283         Fixes #353550.
7284         (mono_class_from_name_case): Ditto.
7285
7286 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7287
7288         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7289           common storage for the tables used in the System/NumberFormatter class.
7290
7291 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7292
7293         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7294
7295 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7296
7297         * verify.c (get_boxable_mono_type): check if the token is valid.
7298
7299         * verify.c (set_stack_value): changed to add an error if an
7300         invalid type is set on stack. Changed all callers due to signature change.
7301
7302         * verify.c (do_stobj): implement stobj validation.
7303
7304 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7305
7306         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7307         set container->is_method, it was set earlier.
7308
7309         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7310         generic methods.
7311
7312         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7313         is_method of the generic container to TRUE for methods.
7314
7315 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7316
7317         * metadata.c (type_in_image): Handle type parameters properly.
7318
7319         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7320         memory ownership of this structure.
7321
7322 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7323
7324         * verify.c (get_boxable_mono_type): make typedref types been just
7325         unverifiable. check for void type.
7326
7327         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7328
7329         * verify.c (do_load_function_ptr): accept method spec tokens.
7330
7331 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7332
7333         * marshal.c (mono_class_native_size): Always set *align even if this is called
7334         recursively.
7335
7336 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7337
7338         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7339         out-of-date.
7340
7341 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7342
7343         * verify.c: removed some old unused tables. A huge bunch of small fixes
7344         to things found while testing the verifier with mono basic.
7345
7346         * verify.c (dump_stack_value): dump null literal flag to.
7347
7348         * verify.c (verify_type_compatibility_full): fix comparison
7349         for types that have a generic super type.
7350
7351         * verify.c (verify_stack_type_compatibility): fix compatibility
7352         between null literals and reference types. fix compatibility between
7353         boxed valuetypes and object. fix corner case test for enums.
7354
7355         * verify.c (do_cmp_op): proper verification of cgt.un in case
7356         of reference types.
7357
7358         * verify.c (do_invoke_method): fix error message.
7359
7360         * verify.c (do_store_indirect
7361
7362         * verify.c (check_is_valid_type_for_field_ops): proper verification
7363         of managed pointers to valuetypes and boxed valuetypes. proper verification
7364         of null literals.
7365
7366         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7367         allow token to be a reference type.
7368
7369         * verify.c (do_cast): proper handling of boxes valuetypes.
7370
7371         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7372         in object[].
7373
7374         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7375         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7376         fixed the decoding of unbox_any
7377
7378 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7379
7380         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7381
7382 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7383
7384         * verify.c (do_newobj): do delegate verification.
7385
7386         * verify.c (verify_delegate_compatibility): perform delegate
7387         verification.
7388
7389         * verify.c (verify_ldftn_delegate): perform tests related to
7390         ldftn delegates.
7391
7392         * verify.c (mono_delegate_signature_equal): perform the
7393         slightly diferent signature comparison required by delegates.
7394
7395         * metadata.c (mono_metadata_type_equal_full): added and exported
7396         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
7397         allows signature only comparison.
7398
7399         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
7400         as MONO_INTERNAL.
7401
7402 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7403
7404         * verify.c: added a bunch of stack_slot_* functions to
7405         make access to stack slot type easier. This is required to
7406         allow optional flags, like null literal, boxed value and
7407         this pointer.
7408         All access paths to IlStackDesc::stype have been changed 
7409         to use these new funcions.
7410         Removed a bunch of unused functions and cleared all warnings.
7411         This patch introduces the usage of the this pointer and 
7412         boxed value flags.
7413
7414 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
7415
7416         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
7417
7418 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7419
7420         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
7421         match managed version.
7422
7423         * appdomain.c: Bump corlib version.
7424         
7425         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
7426         argument.
7427
7428 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
7429
7430         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
7431         Set public key token to zero-length byte array if assembly is not
7432         strongnamed.
7433
7434 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
7437         writing a vtype array elem.
7438
7439 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
7440
7441         * assembly.c (build_assembly_name): return FALSE if length of token is
7442         not 16 (if not "null").
7443         (mono_assembly_name_parse_full): return FALSE if value of version,
7444         culture, token or key is 0.
7445         * icall.c (fill_reflection_assembly_name): add boolean arguments to
7446         specify whether public key and public key token must be set to default
7447         value (zero-length byte array) if not available. Set versioncompat to
7448         SameMachine. If public key is available or the default is set, then
7449         set PublicKey flag.
7450         (ves_icall_System_Reflection_Assembly_FillName): if no public key
7451         is available, use empty byte array as default value. On the 2.0
7452         profile, use default value for public key token if not set.
7453         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
7454         profile, use default value for public key if not set. On the 2.0
7455         profile, use default value for public key token if not set.
7456         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
7457         default values for public key and public key token.
7458
7459 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7460
7461         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
7462         field to keep it in synch with the managed object.
7463
7464         * marshal.c (emit_marshal_object): Add support for byref marshalling of
7465         delegates. Fixes #351520.
7466
7467         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
7468         contains defined memory.
7469         
7470         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
7471
7472         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
7473         
7474         * sgen-gc.c (check_consistency): New helper function to do a consistency check
7475         of the GC data structures.
7476
7477         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
7478
7479         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
7480         
7481         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
7482         barrier.
7483         (mono_array_clone_in_domain): Ditto.
7484         (mono_array_clone_in_domain): Ditto.
7485
7486         * threads.c (start_wrapper): Register the thread start argument as a GC root.
7487         (cache_culture): Use a write barrier.
7488
7489         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
7490         (ves_icall_get_property_info): Ditto.
7491
7492         * object.h (MONO_STRUCT_SETREF): New macro.
7493
7494         * class-internals.h (MonoStats): Add some GC statistics.
7495
7496         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
7497
7498 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
7499
7500         * exception.c (mono_exception_from_name_two_strings):
7501         Break from loop after method is found.
7502
7503 2008-01-04  Dick Porter  <dick@ximian.com>
7504
7505         * process.c (process_module_string_read): Rename variable to
7506         reflect correct usage, after fixing bug 345972.
7507
7508 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
7509
7510         * verify.c (mono_type_create_fnptr_from_mono_method): 
7511         created a MonoType function pointer instance to be used during
7512         verification. The verifier releases this memory at end.
7513
7514         * verify.c (mono_method_is_constructor): extracted repeated
7515         checks for constructor into a single class.
7516
7517         * verify.c (do_push_field): use new extracted method
7518         for constructor check.
7519
7520         * verify.c (do_newobj): same.
7521
7522         * verify.c (do_ldftn): renamed to do_load_function_ptr
7523         and make it verify ldvirtftn too.
7524
7525         * verify.c (mono_method_verify: proper verification
7526         of ldvirtftn. release created MonoMethod instances.
7527
7528 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7529
7530         * verify.c (token_bounds_check): added.
7531
7532         * verify.c (do_ldftn): added.
7533
7534         * verify.c (mono_method_verify): proper verificartion of ldftn.
7535
7536 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7537
7538         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
7539         than the table row count. It's the resposibility of the caller to
7540         make the bounds check and raise the correct error.
7541
7542         * metadata.c (mono_metadata_decode_row_col): Same.
7543
7544         * loader.c (mono_get_method_from_token): perform bounds check
7545         on token for methoddef table.
7546
7547 2007-12-29  Miguel de Icaza  <miguel@novell.com>
7548
7549         * icall.c
7550         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
7551         assert into a negative result, the managed code already coped with
7552         that.
7553
7554         Some folks on Windows reported this error. 
7555
7556 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
7557
7558         * appdomain.c: Bump corlib version.
7559         * icall.c:
7560         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
7561         CultureInfo.CreateCulture to create CultureInfo for name.
7562         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
7563         create CultureInfo for name. Fixes bug #347174.
7564
7565 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7566
7567         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
7568         flags.
7569
7570         * verify.c (is_valid_branch_instruction): allow branching to the
7571         first instruction of the protected block.
7572
7573         * verify.c (is_valid_cmp_branch_instruction): same.
7574
7575         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
7576         avoid double initialization.
7577
7578         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
7579         detect which cases the eval stack should just be copied.
7580
7581         * verify.c (mono_method_verify): check if the eval stack
7582         is empty when entering a protected block.
7583
7584 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7585
7586         * verify.c: added is_clause_in_range, is_clause_inside_range,
7587         is_clause_nested and verify_clause_relationship. They perform
7588         the verifications stated in P1 12.4.2.7.
7589
7590         * verify.c (mono_method_verify): remove some unused variables,
7591         add the new exception clause checks, add instruction border
7592         checks for protected block start/end, improved some error 
7593         messages and fixed a bug in the way invalid instruction access
7594         is detected.
7595
7596 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7597
7598         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
7599         from GC 7.0 if available.
7600
7601         * object.c: Remove an unused define.
7602         
7603         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
7604
7605         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
7606
7607         * null-gc.c (mono_gc_make_descr_for_array): Implement.
7608
7609         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
7610
7611         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
7612         to take the same arguments as the other make_descr functions.
7613
7614         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
7615
7616         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
7617         directly.
7618
7619         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
7620         mini.c.
7621
7622         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
7623         call to boehm-gc.c.
7624
7625         * boehm-gc.c (mono_gc_register_root): Fix a warning.
7626
7627         * null-gc.c (mono_gc_register_root): Fix a warning.
7628
7629         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
7630
7631         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
7632         (mono_gc_base_init): Call GC_init ().
7633
7634         * null-gc.c: Define mono_gc_register_root () as a no-op.
7635
7636         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7637
7638 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
7639
7640         * verify.c: add prototype for merge_stacks at top
7641
7642         * verify.c (do_switch): added.
7643
7644         * verify.c (merge_stacks): on some cases the stack merging
7645         was not happening properly. Unequal stack sizes at merge
7646         points should be invalid.
7647
7648         * verify.c (mono_method_verify): added more debug info on stack state.
7649         verify switch properly.
7650
7651 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
7652
7653         * method-builder.h: New file, moved the mono_mb_ declarations here from 
7654         marshal.h.
7655
7656         * boehm-gc.c marshal.c: Include method-builder.h.
7657
7658         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
7659
7660         * marshal.c: Remove some code which is now in method-builder.c.
7661
7662 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7663
7664         * method-builder.c: New file, extraction of the method builder functionality 
7665         from marshal.c.
7666
7667         * marshal.c: Move the mb functions into method-builder.c.
7668
7669         * marshal.h marshal.c: Export some mono_mb_... functions.
7670
7671         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
7672
7673         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
7674         the caller.
7675
7676         * class.c (mono_class_get_full): Check the token type in the dynamic case.
7677
7678         * loader.c (mono_field_from_token): Ditto.      
7679
7680         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
7681         type as well.
7682         
7683         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
7684         Fixes #342565.
7685
7686         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
7687         a helper function for setting it.
7688
7689         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
7690
7691         
7692         * assembly.c: Significally simplify code now that referenced assemblies are 
7693         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
7694
7695         * threads.h: Don't include  the internal threads-types.h header file. Fixes
7696         #349952.
7697
7698 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
7699
7700         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
7701         instructions that were target of branches or are at protected block boundaries.
7702
7703         * verify.c (in_same_block): handle filter clauses.
7704
7705         * verify.c (is_valid_branch_instruction): added. checks the target of
7706         instructions br or brtrue/false.
7707
7708         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
7709         binary branch instructions such as beq and bge.
7710
7711         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
7712         and made it pin the instruction as been part of the exception block.
7713
7714         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
7715         of in_same_block.
7716
7717         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
7718         of in_same_block.
7719
7720         * verify.c (do_ret): ret from a protected block is unverifiable and
7721         not invalid.
7722
7723         * verify.c (do_static_branch): verify br and br.s instructions.
7724
7725         * verify.c (merge_stacks): add extra param to support detection
7726         of branches in the middle of instructions.
7727         
7728         * verify.c (mono_method_verify): verify branches and exception blocks
7729         that target the middle of instructions. Proper verification of br and br.s.
7730
7731 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
7732
7733         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
7734         skip_visibility field.
7735         (reflection_methodbuilder_from_dynamic_method): Ditto.
7736
7737         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
7738         registrations. Fixes #348193.
7739
7740         * threads.h: Move the internal mono_thread_get_pending_exception () to
7741         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
7742
7743 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
7744
7745         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
7746         icall registration. Fixes #348193.
7747
7748         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
7749         for corlib classes into object. Fixes #349621.
7750
7751 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
7752
7753         * icall.c (property_accessor_nonpublic): new function to determine
7754         whether an accessor allows a property to be considered non-public.
7755         Returns false for private accessor(s) from parent class, and internal
7756         accessor(s) from parent on 2.0 profile (and higher).
7757         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
7758         to determine whether property should be included if NonPublic flag
7759         is set. Fixes bug #349078.
7760
7761 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
7762
7763         * verify.c (init_stack_with_value): added.
7764
7765         * verify.c (mono_method_verify): extracted common
7766         code for exception initialization into init_stack_with_value.
7767
7768         * verify.c (mono_method_verify): initialize the exception
7769         for handler clauses as well.
7770
7771         * verify.c (mono_method_verify): fix the exception clause
7772         ordering rules, it should use handler end offset and not
7773         start offset.
7774
7775 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
7776
7777         * rawbuffer.c: remove useless warning.
7778
7779 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
7780
7781         * threads.h, threads-types.h: move functions to the correct header
7782         (fixes bug#349952).
7783
7784 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7785
7786         * verify.c (mono_method_verify): proper verification
7787         of exception handling clauses ranges and fallthru in
7788         and out of protected blocks.
7789
7790 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7791
7792         * verify.c (mono_method_verify): fixed compilation issue.
7793
7794 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7795
7796         * verify.c (mono_method_verify): a printf slipped in, changed
7797         to use verifier debug macro.
7798
7799 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
7800
7801         * verify.c (is_correct_leave): check for filter clauses.
7802
7803         * verify.c (do_filter): added.
7804
7805         * verify.c (mono_method_verify): property verification of leave.
7806
7807
7808 2007-12-18  Mark Probst  <mark.probst@gmail.com>
7809
7810         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
7811         Win32 build, until we figure out how to do the proper thing on
7812         Win32.
7813
7814 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
7815
7816         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
7817         by the previous patch.
7818         
7819         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
7820         the assembly resolve handler for refonly assemblies.
7821
7822 2007-12-17  Mark Probst  <mark.probst@gmail.com>
7823
7824         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
7825         Make sure only one thread is allowed to commence shutdown, and
7826         don't allow new threads to be started once shutdown is in
7827         progress.
7828
7829 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
7830
7831         * verify.c (is_correct_endfilter): added.
7832
7833         * verify.c (is_unverifiable_endfilter): added.
7834
7835         * verify.c (do_endfilter): added.
7836
7837         * verify.c (mono_method_verify): property verification of endfilter
7838         and fixed a corner case or endfinally.
7839
7840 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
7841
7842         * verify.h: new flags to support fail fast of unverifiable code and
7843         do non-strict verification. Non-strict verification is required to
7844         have MS runtime compatibility. There are a huge amount of unverifiable
7845         code that it accepts as verifiable. The strict mode verifies the code
7846         as the specs says.
7847         Non-strict mode will be required in cases where code needs to be
7848         accepted as verifiable but fails under strict mode.
7849
7850         * pedump.c: added support to fail fast and non-strict verification.
7851
7852         * verify.c: added support for both fail fast and non-strict verification.
7853
7854 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
7855
7856         * verify.c (is_correct_endfinally): added.
7857
7858         * verify.c (mono_method_verify): property verification of endfinally.
7859
7860 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7861
7862         * verify.c (in_any_block): check for filter clauses.
7863
7864         * verify.c (is_correct_rethrow): added.
7865
7866         * verify.c (mono_method_verify): property verification of rethrow.
7867
7868         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
7869
7870 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
7871
7872         * verify.c (do_throw): added.
7873
7874         * verify.c (mono_method_verify): property verification of throw
7875
7876 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
7877
7878         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
7879         assemblies. Fixes #346425.
7880
7881 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
7882
7883         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
7884         FieldBuilders.
7885
7886         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
7887
7888         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
7889         prevent asserts when this is called with a token which might not be valid.
7890
7891         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
7892         lookup_dynamic_token_class with valid_token == FALSE.
7893
7894         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
7895
7896         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
7897
7898         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
7899         
7900 2007-12-10  Mark Probst  <mark.probst@gmail.com>
7901
7902         * gc.c: Don't delay threadpool thread finalization unless Mono is
7903         shutting down.
7904
7905 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7906
7907         * threads.c: turn an assert into a non-fatal warning.
7908
7909 2007-12-09  Robert Jordan  <robertj@gmx.net>
7910
7911         * icall.c (GetVirtualMethod): Add missing argument validation.
7912
7913 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7914
7915         * verify.c (do_cast): added.
7916
7917         * verify.c (mono_method_verify): property verification of castclass and isinst.
7918
7919
7920 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7921
7922         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
7923
7924         * verify.c (do_stelem): added.
7925
7926         * verify.c (mono_method_verify): property verification of stelem.X.
7927
7928 2007-12-07  Mark Probst  <mark.probst@gmail.com>
7929
7930         * class.c, class-internals.h: Introduce an environment variable
7931         (MONO_GENERIC_SHARING) through which the extent of generic code
7932         sharing can be controlled (share all classes, share only corlib
7933         classes, or share nothing).
7934
7935         * object.c: Only create runtime generic context for classes for
7936         which sharing is enabled.
7937
7938 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7939
7940         * verify.c (do_ldelem): refactor it to work with ldelem.any.
7941
7942         * verify.c (mono_method_verify): property verification of ldelem.any.
7943
7944 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
7945
7946         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
7947         added ldelem.X opcodes.
7948
7949         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
7950
7951         * verify.c: proper verification of ldelem.X 
7952
7953 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
7956
7957 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7958
7959         * verify.c (mono_method_verify): null literal requires special handling,
7960         the value pushed on stack need to be flagged as so.
7961
7962         * verify.c (do_ldelema): Verify ldelema properly.
7963
7964 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7965
7966         * verify.c: Verify ldlen properly.
7967
7968 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
7969
7970         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
7971         to the target object's type. Fixes #346160.
7972
7973 2007-12-05  Dick Porter  <dick@ximian.com>
7974
7975         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
7976         Solaris needs the same workaround as BSD-derived systems.  Fixes
7977         bug 323524, patch by Burkhard Linke
7978         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
7979
7980 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
7981
7982         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
7983         handle to use when error dialog is shown; otherwise, update mask
7984         to show no error dialog when an error occurs.
7985
7986 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
7987
7988         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
7989
7990         * class.c (mono_class_get_field_default_value): New helper function to initialize
7991         field->def_type and field->data.
7992
7993 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
7994
7995         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
7996         the general one.
7997
7998         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
7999
8000         * marshal.c: Avoid depending on delegate->method_info being set.
8001
8002         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
8003         
8004         * object.c (mono_delegate_ctor): Set delegate->method.
8005
8006         * object-internals.h (struct _MonoDelegate): Add 'method' field.
8007
8008         * appdomain.c: Bump corlib version.
8009
8010 2007-11-27  Raja R Harinath  <harinath@gmail.com>
8011
8012         * metadata.c (mono_generic_inst_equal_full): Short-circuit
8013         equality check if we're comparing canonicalized MonoGenericInsts.
8014
8015 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8016
8017         * class.c (generic_array_methods): Call mono_class_setup_methods () before
8018         accessing class->methods.
8019
8020 2007-11-22  Dick Porter  <dick@ximian.com>
8021
8022         * threads.c: Ensure that the synch_cs is set before trying to use
8023         it.
8024
8025 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
8026
8027         * profiler.c: r89126 broke the statistial profiler, unbreak.
8028
8029 2007-11-22  Martin Baulig  <martin@ximian.com>
8030
8031         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
8032
8033         * mono-debug.c
8034         (mono_debug_debugger_version): Bump to 3.
8035         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
8036         -> mono_debugger_class_initialized().
8037
8038         * mono-debug-debugger.c
8039         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
8040
8041         * class.c
8042         (mono_debugger_start_class_init_func): Removed.
8043         (mono_debugger_class_loaded_methods_func): Added.
8044         (mono_class_setup_methods): Call it here.
8045
8046 2007-11-22  Martin Baulig  <martin@ximian.com>
8047
8048         * mono-debug.c
8049         (mono_debug_add_delegate_trampoline): New public method.
8050         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
8051
8052         * mono-debug.h
8053         (MonoSymbolTable): Added `global_data_table'.
8054         (MonoDebuggerTypeKind): Removed.
8055
8056 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
8057
8058         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
8059         these methods.
8060
8061         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8062         
8063 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8064
8065         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
8066
8067 2007-11-20  Martin Baulig  <martin@ximian.com>
8068
8069         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
8070
8071         * mono-debug-debugger.c
8072         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
8073         (mono_debugger_remove_breakpoint): Likewise.
8074         (mono_debugger_check_breakpoints): Likewise.
8075         (mono_debugger_register_class_init_callback): New public method.
8076         (mono_debugger_remove_class_init_callback): Likewise.
8077         (mono_debugger_add_type): Likewise.
8078
8079         * mono-debug-debugger.h
8080         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8081
8082 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8083
8084         * class.c: more interface implementations needed for the
8085         array enumerator (fixes bug #341112).
8086
8087 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8088
8089         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8090         fix ParamName of ArgumentNullExceptions.
8091
8092 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8093
8094         * reflection.c (mono_reflection_encode_sighelper): Generate the
8095         modopts and modreqs.   I have a useless test that crashes monodis,
8096         but that shows the code working.
8097
8098 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8101         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8102
8103 2007-11-15  Dick Porter  <dick@ximian.com>
8104
8105         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8106         When joining a thread, it's the thread that's calling Join that
8107         gets WaitSleepJoin state not the target.  Fixes the standalone
8108         test case in bug 334740, and hopefully the whole bug too.
8109
8110 2007-11-15  Dick Porter  <dick@ximian.com>
8111
8112         * process.c: Read file version info from the files pointed at by
8113         process modules, not the current process.  Fixes bug 315969.
8114
8115         Use windows typedef names in some places to fix warnings on the
8116         windows build.
8117
8118 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8119
8120         * image.c, metadata-internals.h: Added a generic_class_cache hash
8121         to MonoImage for looking up generic classes when sharing generics.
8122
8123 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8124
8125         * sgen-gc.c: warning cleanups.
8126
8127 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8130         inherited properties.
8131
8132 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8133
8134         * object.c, class-internals.h: Added more information to the
8135         runtime generic context.
8136
8137 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8138
8139         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8140         instead of just the target method. Generalize the abstract method handling to
8141         handle any non-static method.
8142
8143         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8144         mono_marshal_get_delegate_invoke () signature change.
8145
8146 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8147
8148         * class.c, class-internals.h: Made
8149         mono_type_get_basic_type_from_generic () public.  Fixed member
8150         access check for shared generics.
8151
8152         * loader.c: Don't insert field into field cache if it's part of a
8153         non-inflated generic class.
8154
8155         * domain.c, domain-internals.h: The generic sharing context is now
8156         part of the jit info data structure.  Added two accessor
8157         functions.
8158
8159 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8160
8161         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8162         the array Get/Set/Address methods, since the JIT inlines them.
8163
8164         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8165
8166         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8167         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8168
8169         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8170         mono_marshal_get_delegate_invoke signature change.
8171
8172         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8173         an additional argument. Add support for invoking abstract methods.
8174
8175         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8176
8177         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8178
8179 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8180
8181         * class.c: Do field layout for open generic classes as well.
8182
8183 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8184
8185         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8186         other objects, because the threadpool is still around.  Put them
8187         in a list instead and after finalizing all other objects in the
8188         root domain shut down the thread pool and then finalize the
8189         threads.  Fixes bug #337383.
8190
8191         * threads.c, thread-types.h: New mono_thread_create_internal()
8192         function for marking a thread with the threadpool flag before it
8193         started.  Set synch_cs to NULL after freeing it.
8194
8195         * threadpool.c: Mark threadpool threads before they start.
8196
8197 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8198
8199         * reflection.h, reflection.c: don't export random functions
8200         and lazy load dbnull and missing objects.
8201
8202 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8203
8204         * class.c: Initialize COM types if COM interfaces
8205         are present (not just COM classes).
8206         
8207         Code is contributed under MIT/X11 license.
8208
8209 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8210         * reflection.c:
8211         create_dynamic_mono_image: hook module profiler events (dynamic case).
8212         mono_image_basic_init: hook assembly profiler events (dynamic case).
8213
8214 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8215         * profiler.c:
8216         simple_appdomain_unload: completely terminate the profiler
8217         instead of only processing the statistical samples.
8218         simple_shutdown: make sure this is really called exactly once,
8219         even in multithreaded applications, and always listen to
8220         appdomain events.
8221         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8222         here, the "[un]load" functions will do it.
8223         Fixes bugs #333791 and #325261.
8224
8225 2007-11-07  Geoff Norton  <gnorton@novell.com>
8226
8227         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8228         rather than depend on __APPLE__.
8229
8230 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8231
8232         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8233
8234 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8235
8236         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8237         UTF16 MonoString. Fix the crash from bug #335488
8238
8239 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8240
8241         * marshal.c: Correct (for non-Win32 OS) length != size in 
8242         mono_string_from_bstr. Fix #339530.
8243
8244 2007-11-06  Geoff Norton  <gnorton@novell.com>
8245
8246         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8247         to succeed
8248
8249 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
8250
8251         * process.c: Added run-time GetProcessId API detection for Windows.
8252
8253 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8254
8255         * reflection.c  (mono_param_get_objects): If a parameter has the
8256         attribute [System.Runtime.InteropServices.Optional] we should
8257         set the DefaultValue of the ParameterInfo to be
8258         System.Reflection.Missing instead of DBNull.
8259
8260         See bug #339013.
8261
8262         (mono_get_reflection_missing_object): New method,
8263         returns the System.Reflection.Missing.Value singleton instance.
8264
8265 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8266
8267         * culture-info-table.h : regenerated.
8268
8269 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8270
8271         * icall.c: Use GetEnvironmentStrings on windows
8272         so we are using the same environment block as 
8273         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8274         #333740.
8275         
8276         Code is contributed under MIT/X11 license.
8277
8278 2007-10-31  Martin Baulig  <martin@ximian.com>
8279
8280         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8281
8282         * mono-debug-debugger.h
8283         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8284
8285 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8286
8287         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8288         classes.
8289
8290 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8291
8292         * culture-info-table.h : regenerated.
8293
8294 2007-10-30  Robert Jordan  <robertj@gmx.net>
8295
8296         * icall-def.h, icall.c:
8297         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8298
8299         Code is contributed under MIT/X11 license.
8300
8301 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8302
8303         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8304         inflated class instead of inflating them again.
8305         
8306         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8307         dynamic case.
8308
8309         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8310         Call setup_supertypes () after klass->parent is set.
8311         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8312
8313         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8314         for inflated instances of not yet created dynamic generic classes.
8315         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8316         times from inflated_method.
8317         (methodbuilder_to_mono_method): Ditto.
8318
8319 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8320
8321         * gc.c: code cleanup and removed old untested option of not creating the
8322         finalizer thread.
8323
8324 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8325
8326         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8327         creating a jump trampoline for dynamic methods.
8328
8329 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8330
8331         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8332         generic TypeBuilders when called from another method of the same type (bug #335131).
8333
8334
8335 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8336
8337         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8338         doesn't seem to work perfectly.
8339         
8340         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8341         called multiple times.
8342         (methodbuilder_to_mono_method): Ditto.
8343         (resolve_object): Inflate FieldBuilder's.
8344
8345 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8346
8347         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8348         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8349         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8350
8351 2007-10-26  Dick Porter  <dick@ximian.com>
8352
8353         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8354         Thread initialisation changes
8355
8356 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8357
8358         * verify.c: fix compatibility check between arrays and System.Array
8359
8360 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8361
8362         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8363         too. Fixes #336999.
8364
8365 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8366
8367         * object.c (mono_value_box): Use typed allocation here.
8368
8369 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8370
8371         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8372         trampoline instead of compiling the method right away.
8373
8374         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8375
8376 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8377
8378         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8379         related fields for dynamic classes. Fixes #334493.
8380
8381 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8382
8383         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8384         
8385         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8386
8387         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8388         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8389
8390         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8391
8392         * reflection.c (create_generic_typespec): Initialize klass->generic_container
8393         if needed.
8394         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
8395
8396 2007-10-18  Jonathan Chambers <joncham@gmail.com>
8397
8398         * marshal.c: Use correct key when removing item
8399         from ccw_hash.
8400         
8401         Code is contributed under MIT/X11 license.
8402
8403 2007-10-17  William Holmes  <billholmes54@gmail.com>
8404
8405         *marshal.c: Adding a case to marshal booleans to U1
8406
8407         Code is contributed under MIT/X11 license.
8408
8409 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
8410
8411         * class.c (mono_class_from_name): Search the modules compromising dynamic
8412         assemblies. Fixes #331601.
8413
8414 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
8417         exception if the type name contains an assembly component. Fixes #334203.
8418
8419         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
8420         modules inside dynamic assemblies. Fixes #334200.
8421         
8422         * reflection.c: Set image->public_key and image->public_key_length;
8423
8424         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
8425         fields.
8426
8427         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
8428         
8429 2007-10-16  Mark Probst  <mark.probst@gmail.com>
8430
8431         * metadata.c: Implemented correct comparing of generic classes.
8432         An inflated generic class can be equal to a non-inflated one if it
8433         is inflated with generic type variables as type arguments.  Fixes
8434         bug #333798.
8435
8436 2007-10-15  Dick Porter  <dick@ximian.com>
8437
8438         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
8439         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
8440         81646.
8441
8442         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
8443         instead of a monitor lock.  This means that monitor_try_enter and
8444         co can set the thread state safely.
8445         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
8446         thread_interrupt_requested, so interrupt actually works.
8447
8448         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
8449         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
8450         state accessor function
8451
8452 2007-10-15  Martin Baulig  <martin@ximian.com>
8453
8454         * mono-debug.h
8455         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
8456         the debugger with the current runtime.
8457
8458 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8459
8460         * object.c, object-internals.h: added the ability to set a single
8461         trampoline for all the slots in a vtable.
8462
8463 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8464
8465         * marshal.c: deal with a possible race condition during multicast
8466         delegate invocation.
8467
8468 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8469
8470         * class.c: ensure value type methods don't have the synchronized
8471         flag set.
8472
8473 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8474
8475         * string-icalls.c, string-icalls.h: reverted unapproved patch that
8476         breaks the build.
8477
8478 2007-10-11  Joel Reed  <joelwreed@comcast.com>
8479
8480         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
8481         to take an options parameter so that empty entries can be removed during
8482         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
8483
8484 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8485
8486         * marshal.c: make sure we don't store the signature from a dynamic
8487         method into the runtime invoke cache (bug #327189).
8488
8489 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8490
8491         * marshal.c: make sure the wrapper methods are properly initialized.
8492
8493 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8494
8495         * metadata.c, metadata-internals.h: Generalized
8496         mono_type_stack_size() to mono_type_stack_size_internal() which
8497         takes an additional argument specifying whether it allows open
8498         types.
8499
8500 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8501
8502         * verify.c (do_invoke_method): handle typedbyref params
8503         correctly and check for unverifiable return values.
8504
8505         * verify.c (do_newobj): fix a warning.
8506
8507 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8508
8509         * verify.c: don't tread typedbyref as allways unverifable,
8510         so uses, like (ld/st)loc.0 are valid. verify for the cases
8511         that it matters, like boxing related operations.
8512
8513 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8514
8515         * verify.c: add verification of the newobj opcode. verification
8516         of delegate instantation still missing due ldftn and virldftn not
8517         pushing the function type on stack
8518
8519 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8520
8521         * class-internals.h: Runtime generic context data structure
8522         definition.
8523
8524         * object.c: Initialization of runtime generic context at runtime
8525         vtable creation time.
8526
8527 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
8528         * class.c (mono_class_create_from_typedef,
8529         mono_class_from_generic_parameter, mono_ptr_class_get,
8530         mono_fnptr_class_get, mono_bounded_array_class_get)
8531         * domain.c (mono_domain_create, mono_domain_free)
8532         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
8533         * image.c (do_mono_image_load, mono_image_close):
8534         Hooked up load-unload profiler events.
8535
8536 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8537
8538         * domain.c: track statistics about the actual amount of native code
8539         allocated.
8540
8541 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8542
8543         * class.c: the valuetype enumerators don't have the additional
8544         supertypes interfaces.
8545
8546 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8547
8548         * class.c: need more interfaces setup for the IEnumerator<T>
8549         object created for arrays (tests/ienumerator-interfaces.2.cs).
8550
8551 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
8552
8553         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
8554
8555 2007-10-05  Alp Toker  <alp@atoker.com>
8556
8557         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8558         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8559         #315863.
8560
8561 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8562
8563         * verify.c (verify_type_compatibility_full): verification of
8564         compatibility improved, validates correctly non-strict checks between
8565         native int and I4 types different than (unsigned)int32.
8566
8567         * verify.c (do_store_indirect): added, do all verification of
8568         ldind.X opcodes. 
8569
8570         * verify.c (get_load_indirect_mono_type): renamed to
8571         get_indirect_op_mono_type, as it now returns the MonoType for 
8572         ldind.X and stind.X opcodes.
8573
8574 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8575
8576         * reflection.c: Fix the encoding of generic type definition for
8577         TypeBuilders.
8578
8579         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
8580         mono_image_typedef_or_ref but allows to specify if typespec lookups should
8581         be made. Typespec check is done prior to typeref cache lookup.
8582
8583         * reflection.c (mono_image_typedef_or_ref): now just delegate to
8584         mono_image_typedef_or_ref_full.
8585
8586         * reflection.c (encode_generic_class): encode the generic class
8587         directly instead of calling encode_type.
8588
8589         * reflection.c (encode_type): encode the generic type definition
8590         MonoClass as a generic instantiation.
8591
8592         * reflection.c (create_typespec): cache typespec tokens in
8593         the assembly->typespec cache. Don't create typespec for a generic
8594         instance MonoClass. Create typespec for the generic type defintion.
8595
8596         * reflection.c (create_generic_typespec): encode the generic
8597         class directly instead of calling encode_type.
8598
8599         * reflection.c (mono_image_create_token): encode the generic
8600         type definition not using a typespec for MonoType instances.
8601
8602
8603 2007-10-04  Raja R Harinath  <rharinath@novell.com>
8604
8605         Fix #328812
8606         * class.c (mono_image_init_name_cache): Don't return nested
8607         'protected internal' classes.
8608         (mono_class_from_name_case): Likewise.
8609
8610 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
8611
8612         * icall-def.h, icall.c : get_bundled_machine_config() is now the
8613           common function used by both DefaultConfig in System.dll and
8614           InternalConfigurationHost in System.Configuration.dll.
8615
8616 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8617
8618         * class.c: automatically add to vectors only a few essential explicit
8619         generic interfaces. The rest of the interfaces that arrays should
8620         provide are currently implicitly added (but still not lazily, see the
8621         design in the discussion of bug#325495 for the details of what is
8622         needed for that). Additionally, implicit interfaces are assigned the
8623         same vtable slot as the explicit interfaces (as they are compatible):
8624         this enables huge memory savings since we don't need to instantiate
8625         as many memthods and as large vtables anymore. Also, Since
8626         GetEnumerator<T> returns an instance of a type that is required to
8627         support a similarly large set of interfaces as arrays, we add
8628         implicit interfaces and interface offset sharing support to those
8629         types, too. This change adds all the required interfaces so that
8630         the anonarray.cs test case in the bug report works (we don't add
8631         all the interfaces to arrays of arrays 3-level deep and more because
8632         of the memory requirements explained in the bug and since they are much
8633         less common: the lazy-loading support will enabled them to work, too).
8634
8635 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8636
8637         * verify.c (merge_stacks): major clean up, all type compatibility
8638         checks are done by verify_type_compatibility. This fix my earlier lack
8639         of understanding of the CLR type system and merge_stacks no longer looks
8640         scary.
8641
8642         * verify.c: fixed some bad spelling.
8643
8644 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8645
8646         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
8647         a given stack slock.
8648         
8649         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
8650         verify_type_compatibility_full. This removed a near indentical function and fixed
8651         handling of Int32 and IntPtr across all opcodes.
8652
8653 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8654
8655         * class.c: only vectors have the additional generic interfaces.
8656
8657 2007-10-01  Jonathan Chambers <joncham@gmail.com>
8658
8659         * mono-config.c: Use g_strcasecmp instead of
8660         strcasecmp like everywhere else to fix
8661         compilation with MSVC.
8662         
8663         Code is contributed under MIT/X11 license.
8664
8665 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8666
8667         * object.c, object-internals.h: refactored the IMT code to enable
8668         building a single slot at a time and lazily creating the IMT trampolines
8669         and thunks.
8670
8671 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
8672
8673         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
8674
8675         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
8676         Fixes #328501.
8677         
8678 2007-09-29  Raja R Harinath  <harinath@gmail.com>
8679
8680         * loader.c (method_from_methodspec): Rearrange to avoid
8681         un-necessary exposition.  Don't assert out if the method's
8682         declaring type is a generic type definition.
8683
8684 2007-09-28  Martin Baulig  <martin@ximian.com>
8685
8686         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
8687
8688 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
8689
8690         * class-internals.h: optimize field layout of MonoClass to
8691         requires less cachelines at runtime and save a few bytes on 64 bit
8692         systems.
8693
8694 2007-09-28  Jb Evain  <jbevain@novell.com>
8695
8696         * reflection.c: when encoding type names in custom attributes,
8697         if the type is a closed generic type, its generic arguments
8698         have to be serialized as AssemblyQualifiedName, so that when
8699         they are deserialized, it's possible to re-create them properly.
8700         Fixes #329450.
8701
8702
8703 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8704
8705         * object.c, class-internals.h: added delegate-creation counter.
8706
8707 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8708
8709         * class.c: cleanup of the code that synthetizes interfaces for
8710         arrays in 2.0: saves quit a bit of corlib mempool memory.
8711         Code to fix bug #325495 ifdeffed out for now until the issues
8712         with memory usage and O(n^2) behaviour are fixed.
8713
8714 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8715
8716         * marshal.c: when possible, do not duplicate the name of the methods
8717         in the method builder and in the generated MonoMethod.
8718
8719 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8720         * verify.c: added support for type checking ldind_* opcodes.
8721
8722 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8723
8724         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
8725         which is used to distinguish the fully open instantiation of a TypeBuilder
8726         with the rest. This temporary hack is required to restore the property that
8727         the fully open instantiation is the same type of the generic type definition.
8728
8729         * class-internals.h (mono_generic_class_is_generic_type_definition):
8730         new function as part of the internal API.
8731
8732         * class.c (inflate_generic_type): return NULL when the generic inst is
8733         fully open. The fully open generic type is now the same as the generic type
8734         definition for non TypeBuilder types.
8735
8736         * class.c (mono_generic_class_get_class): removed assert since it is
8737         no longer valid, gklass->cached_class can point to the generic type definition.
8738
8739         * class.c (mono_generic_class_is_generic_type_definition): new.
8740
8741         * metadata.c (mono_generic_class_hash): added is_tb_open field
8742         to the hash calculation.
8743
8744         * metadata.c (free_generic_class): if the generic class is associated
8745         with the generic type definition, its field will come from the mempool and
8746         must not be freed.
8747
8748         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
8749         new, this function identifies the corner case of a TypeBuilder fully open
8750         instantiation.
8751
8752         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
8753         for lookup. Set gclass->cached_class to be the container class in case of
8754         the fully open instantiation of non TypeBuilder types.
8755
8756         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
8757         to compare generic classes.
8758
8759         * reflection.c (method_encode_methodspec): remove assert that
8760         no longer is valid.
8761
8762         * reflection.c (mono_reflection_generic_class_initialize): add
8763         an aditional assert to ensure the proper type is used.
8764
8765 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
8766
8767         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
8768         to enjoy it.
8769
8770 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8771
8772         * verify.c (push_arg): Fixed support for ldarga
8773         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
8774         MonoType used as first arg in case of instance calls.
8775
8776 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8777
8778         * verify.c: Support for verifying VAR and MVAR types, 
8779
8780 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
8781
8782         * icall.c (ves_icall_get_property_info): Set the reflected type of the
8783         accessors correctly.
8784
8785 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8786
8787         * threads.c: support OSX and other systems in
8788         mono_thread_get_stack_bounds (bug #328026).
8789
8790 2007-09-25  Martin Baulig  <martin@ximian.com>
8791
8792         * mono-debug.h
8793         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
8794
8795 2007-09-24  Martin Baulig  <martin@ximian.com>
8796
8797         * mono-debug.h
8798         (MonoDebugClassEntry): Moved the definition of this struct into
8799         mono-debug.c to make it private.
8800
8801         * mono-debug.c
8802         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
8803         type table per symbol file, we don't need to store the symfile id
8804         any longer.
8805
8806 2007-09-24  Martin Baulig  <martin@ximian.com>
8807
8808         Create one type table per symbol file, since a `MonoClass *' gets
8809         invalid when its image is unloaded.
8810
8811         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
8812         (MonoDebugHandle): Added `type_table'.
8813
8814 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
8815
8816         * mempool.c, mempool.h: added mono_mempool_new_size () API
8817         to be able to specify a smaller initial size for the pool.
8818         Adjusted the code to slowly increase pool size before using
8819         the previous default size.
8820         * image.c: use a small initial size for image mempools.
8821
8822 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
8823
8824         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
8825         Fixes ##320990.
8826
8827         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
8828         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
8829
8830 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
8831
8832         * metadata.c (mono_type_create_from_typespec): Remove an invalid
8833         free. Fixes #327438.
8834
8835 2007-09-21  Raja R Harinath  <harinath@gmail.com>
8836
8837         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
8838         generic instantiations, etc.
8839         <MONO_TYPE_ARRAY>: Likewise.
8840
8841 2007-09-21  Martin Baulig  <martin@ximian.com>
8842
8843         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
8844         these structs were never defined.
8845         (MonoDebugHandle): Removed the `_priv' field, it was never used.
8846
8847 2007-09-21  Martin Baulig  <martin@ximian.com>
8848
8849         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
8850
8851 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
8852
8853         * image.c: removed the guid hash tables: we can get the same info
8854         without the additional memory usage hit (partially fixes also bug #327052).
8855
8856 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
8857
8858         * profiler.h, profiler-private.h, profiler.c: add a new profiler
8859         event to handle unloading methods. After the event is called, the
8860         corresponding MonoMethod* must be considered invalid.
8861         * loader.c (mono_free_method): call the new mono_profiler_method_free
8862         event.
8863
8864 2007-09-20  Mark Probst  <mark.probst@gmail.com>
8865
8866         * domain-internals.h: New flag in MonoJitInfo which marks shared
8867         generic methods.  New hash table (shared_generics_hash) in
8868         MonoDomain to keep track of shared generic methods.  Prototypes
8869         for functions to register and lookup shared generic methods.
8870
8871         * domain.c: Support for registering and looking up shared generic
8872         methods via a hash table (shared_generics_hash) in MonoDomain.
8873
8874         * class-internals.h: New exception to signal failure of shared
8875         compilation of a generic method.  New counters for generics
8876         sharing in MonoStats.
8877
8878 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
8879
8880         * image.c, metadata-internals.h: don't keep a file descriptor open
8881         for loaded assemblies (bug#325988).
8882
8883 2007-09-19  Raja R Harinath  <rharinath@novell.com>
8884
8885         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
8886         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
8887         use the corresponding datatypes.
8888         (type_in_image): Update to changes.
8889         (CleanForImageUserData): Simplify.
8890         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
8891         Avoid quadratic behaviour in handling the "stolen" list by
8892         separating the filter predicate out, and by prepending the stolen
8893         items rather than appending them.
8894         (steal_ginst_in_image): Likewise.
8895         (mono_metadata_clean_for_image): Update to changes.
8896
8897 2007-09-19  Martin Baulig  <martin@ximian.com>
8898
8899         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
8900
8901 2007-09-19  Martin Baulig  <martin@ximian.com>
8902
8903         * mono-debug.c (mono_debug_cleanup): Don't call
8904         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
8905
8906 2007-09-19  Raja R Harinath  <harinath@gmail.com>
8907
8908         Fix crash on 'make run-test' in mcs/errors
8909         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
8910         Avoid more potential allocations in mono_class_from_mono_type.
8911         (ginst_in_image): Update to changes.
8912         (gclass_in_image): Rearrange slightly.
8913
8914 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8915
8916         * class.c (mono_class_init): Move the code that sets up class->methods to 
8917         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
8918
8919         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
8920         canonical instance of an inflated generic signature.
8921         (mono_type_create_from_typespec): Remove an invalid free.
8922
8923         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
8924
8925 2007-09-18  Marek Habersack  <mhabersack@novell.com>
8926
8927         * domain-internals.h: added a declaration of the
8928         mono_assembly_load_full_nosearch internal function.
8929
8930         * assembly.c (mono_assembly_load_with_partial_name): use
8931         mono_try_assembly_resolve return value properly.
8932         (mono_assembly_load_full_nosearch): copied the function body from
8933         mono_assembly_load_full, without the code to invoke assembly
8934         search hooks.
8935         (mono_assembly_load_full): calls the above new function and if the
8936         assembly is not resolved, invokes the search hooks.
8937
8938         * appdomain.c (mono_runtime_init): restore the global postload
8939         assembly search handlers.
8940
8941 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
8942
8943         * class.c (mono_class_init): Make sure class->methods and class->properties
8944         are never NULL in the generics case.
8945
8946         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
8947
8948 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
8949
8950         * metadata.c (free_generic_class): Disable some code to fix the build.
8951
8952         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
8953
8954         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
8955         from the image mempool.
8956
8957         * metadata.c (free_generic_class): Free more data from the inflated class.
8958
8959         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
8960
8961         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
8962         mempool.
8963         (mono_type_create_from_typespec): Ditto.
8964
8965         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
8966         MonoImage to the caller.
8967         (mono_init_internal): Save the opened image in a global variable.
8968         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
8969
8970         * reflection.c (resolve_object): Fix a leak.
8971
8972         * metadata.c: Fix the freeing of data in the generics caches.
8973         
8974         * metadata.c (free_generic_inst): Comment this out to fix the build.
8975         (free_generic_class): Ditto.
8976
8977         * metadata.c: Free cached generic methods, instantinations and classes when
8978         they are removed from the caches.
8979         (mono_metadata_free_type): Free the type itself.
8980
8981         * class.c: Free the result of mono_class_inflate_generic_type () in a few
8982         places.
8983
8984 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
8985
8986         * boehm-gc.c: restrict managed allocs to __thread supporting
8987         architectures.
8988
8989 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
8992         (mono_generic_class_get_class): Fix a leak.
8993
8994         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
8995         mono_metadata_free_type ().
8996         (mono_metadata_inflate_generic_inst): Fix a leak.
8997
8998 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
8999
9000         * mono-debug.c (free_header_data): Fix a leak missed earlier.
9001
9002         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
9003         mempool.
9004
9005         * mono-debug.c (mono_debug_close_image): Fix call to 
9006         g_hash_table_remove ().
9007
9008 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9009
9010         * icall-def.h: redirect all the string ctor to the managed
9011         CreateString () methods.
9012         * string-icalls.c, string-icalls.h: removed dead code for string
9013         ctors and icalls.
9014
9015 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9016
9017         * mono-debug.c: Fix memory leaks.
9018
9019 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9020
9021         * threads-types.h: Implement mono_hazard_pointer_set and 
9022         mono_hazard_pointer_clear macros using do/while(0) to fix
9023         compilation with MSVC.
9024         
9025         Code is contributed under MIT/X11 license.
9026
9027 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9028
9029         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
9030         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
9031
9032 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9033
9034         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
9035         icalls.
9036
9037 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9038
9039         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
9040         managed-code allocated as well.
9041
9042 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * class.c (mono_class_is_assignable_from): Add support for generic variance.
9045
9046 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
9047
9048         * boehm-gc.c: fixed the build after the AOT changes.
9049
9050 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9051
9052         * wrapper-types.h: Add an ALLOC wrapper type.
9053
9054         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
9055         reference managed allocator methods.
9056
9057 2007-09-12  Marek Safar  <marek.safar@gmail.com>
9058
9059         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
9060         of Type array and not MonoType, a fix suggested by Hari.
9061         
9062 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9063
9064         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
9065         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
9066         
9067         Code is contributed under MIT/X11 license.
9068
9069 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9070
9071         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
9072
9073 2007-09-12  Marek Habersack  <mhabersack@novell.com>
9074
9075         * image.c (do_mono_image_open): if assembly file fails to open and
9076         MONO_IOMAP is in effect, try to find the path in a
9077         case-insensitive way.
9078
9079         * appdomain.c (mono_runtime_init): do not install postload hooks -
9080         tests show that MS.NET doesn't use anything of that sort to
9081         trigger the AppDomain.AssemblyResolve event.
9082         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9083         made non-static.
9084         (mono_runtime_init): init portability helpers here.
9085
9086         * assembly.c (mono_assembly_load_with_partial_name): if other   
9087         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9088         to resolve the assembly.
9089
9090         * domain-internals.h: added mono_try_assembly_resolve and marked
9091         it as internal.
9092
9093 2007-09-11  Jb Evain  <jbevain@novell.com>
9094
9095         * object-internals.h (MonoReflectionDynamicMethod): add
9096         a `MonoReflectionType *owner` field. The owner is used
9097         * reflection.c:
9098         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9099         method as the class declaring the dynamic method.
9100         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9101         dynamic method to the declaring type of the methodbuilder.
9102
9103 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9104
9105         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9106         rules for calling methods via reflection.
9107
9108 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9109
9110         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9111         Inflate MonoType's.
9112
9113 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9114
9115         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9116         provide a managed method that does fast allocations without needing
9117         a managed->unmanaged transition. Boehm GC implementation currently
9118         enabled for ptrfree objects on sane architectures.
9119
9120 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9121
9122         * marshal.c, marshal.h: exported a couple of useful functions and
9123         added mono_mb_get_label () to easily handle backward branches.
9124
9125 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9126
9127         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9128
9129 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9130
9131         * loader.c (find_method): Fixed the regression introduced while
9132         fixing bug #81466.
9133
9134 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9135
9136         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9137         well.
9138         
9139         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9140         icall.c reflection.c: Pass a MonoGenericContext argument to 
9141         mono_lookup_dynamic_token ().
9142
9143         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9144         #82744.
9145         
9146 2007-09-09  Robert Jordan  <robertj@gmx.net>
9147
9148         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9149         for generic methods.
9150
9151         * object.c (mono_object_get_virtual_method): Handle generic methods.
9152         Fixes bug #78882.
9153
9154         Code is contributed under MIT/X11 license.
9155
9156 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9157
9158         * image.c: fix locking in mono_image_load_file_for_image ().
9159
9160 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9161
9162         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9163         used only as a cache: added an icall to fill it.
9164
9165 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9166
9167         * reflection.h: exposed mono_reflection_free_type_info
9168         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9169         since mono_reflection_bind_generic_parameters makes a copy of it.
9170         * reflection.c (free_type_info): subinfos should be freed.
9171         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9172         made non static.
9173         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9174         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9175         this fixes #82695 and #81726.
9176    
9177
9178 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9179
9180         * process.h, process.c:  added support for user profile/info in
9181           ProcessStartInfo. For now only Windows works.
9182
9183 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9184
9185         * metadata.c: consider the generic arguments when comparing
9186         signatures (bug #82614).
9187
9188 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9189
9190         * cil-coff.h, image.c: updated assembly loader to cope with the
9191         PE32+ 64 bit file format.
9192
9193 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9194
9195         * assembly.c, class.c, domain.c, loader.c: remove useless
9196         inclusion of cil-coff.h.
9197
9198 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9199
9200         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9201         if interface is marked with CoClassAttribute. 
9202    
9203         Code is contributed under MIT/X11 license.
9204
9205 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9206
9207         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9208         if it's seen twice in major collections.
9209
9210 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9211
9212         * sgen-gc.c: big objects are not copied to the gray area, but they
9213         need to be considered for scanning, too, if they are brought alive
9214         by an object ready for finalizations or a survived one.
9215
9216 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9217
9218         * sgen-gc.c: properly account the number of disappearing links when
9219         they are nullified.
9220
9221 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9222
9223         * sgen-gc.c: share the code to scan the registered roots between the
9224         different types of collections.
9225
9226 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9227
9228         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9229
9230 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9231
9232         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9233         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9234
9235 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9236
9237         * security-manager.c (mono_security_manager_get_methods):
9238         LinkDemandSecurityException now has 2 arguments instead of 3.
9239
9240 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9241
9242         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9243         platforms which need it.
9244
9245 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9246
9247         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9248         dtor.
9249
9250 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9251
9252         * threads.c: free the thread static data on thread exit.
9253
9254 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9255
9256         * class.c: walk the hierarchy to find the generic definition for
9257         a class (fixes runtime part of bug #82498).
9258
9259 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9260
9261         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9262         ...
9263
9264         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9265
9266 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9267
9268         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9269
9270 2007-08-24  Robert Jordan  <robertj@gmx.net>
9271
9272         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9273
9274 2007-08-24  Jb Evain  <jbevain@novell.com>
9275
9276         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9277         for byref types.
9278
9279 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9280
9281         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9282         #82286.
9283
9284 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9285
9286         * assembly.c: Fix a warning.
9287         
9288 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9289
9290         * appdomain.c: parse the <runtime> section looking for the probing
9291         element with the 'privatePath' attribute, which sets additional
9292         directories in which the runtime should look for assemblies.
9293
9294 2007-08-23  Robert Jordan  <robertj@gmx.net>
9295
9296         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9297         Fixes #82499.
9298
9299 2007-08-23  Martin Baulig  <martin@ximian.com>
9300
9301         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9302         _mono_debug_init_corlib() and remove it from the header file.
9303
9304 2007-08-23  Martin Baulig  <martin@ximian.com>
9305
9306         * mono-debug-debugger.c
9307         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9308         don't notify the debugger about it.
9309
9310         * mono-debug-debugger.h
9311         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9312
9313 2007-08-23  Robert Jordan  <robertj@gmx.net>
9314
9315         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9316         Code is contributed under MIT/X11 license.
9317
9318 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9319
9320         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9321
9322 2007-08-22  Martin Baulig  <martin@ximian.com>
9323
9324         * mono-debug.c: Store debugging info on a per-domain basis and
9325         free it on domain unload.  Add support for unloading symbol files.
9326
9327         * mono-debug.h
9328         (MonoDebugList): New typedef.
9329         (MonoSymbolTable):
9330         - add `data_tables and `type_table'.
9331         - replace 'symbol_files' and `num_symbol_files' with a
9332           `MonoDebugList *'.
9333         (mono_debug_data_table): Removed.
9334         (mono_debug_list_add): New public function.
9335         (mono_debug_list_remove): New public function.
9336         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9337         (mono_debug_init_2_memory): Renamed into
9338         mono_debug_open_image_from_memory().
9339         (mono_debug_close_image): New public function.
9340         (mono_debug_domain_create): Likewise.
9341         (mono_debug_domain_unload): Likewise.
9342         (MONO_DEBUGGER_VERSION): Bump to 60.
9343
9344         * mono-debug-debugger.h
9345         (MonoDebuggerEvent):
9346         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9347         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9348         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9349         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9350           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9351         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9352           meaning.
9353         (mono_debugger_add_symbol_file): Removed.
9354         (mono_debugger_add_type): Removed.
9355         (mono_debugger_lookup_type): Removed.
9356         (mono_debugger_lookup_assembly): Removed.
9357
9358         * domain.c
9359         (mono_domain_create): Call mono_debug_domain_create().
9360         (mono_init_internal): Call mono_debug_init_corlib().
9361
9362         * assembly.c
9363         (mono_assembly_close): Call mono_debug_close_image().
9364
9365 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9366
9367         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9368         mmap call.
9369
9370 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9371
9372         * sgen-gc.c: ensure section->pin_queue_end is initialized
9373         correctly when non pinning objects in the section have been found.
9374
9375 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9376
9377         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9378         containing a list of directories separated by ':'. MSDN docs say
9379         the directories should be separated with ';'. Part of a bugfix for
9380         bug #81446
9381
9382 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9383
9384         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9385         it should MonoType and not MonoClass.
9386
9387 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9388
9389         * culture-info-table.h : regenerated.
9390
9391 2007-08-20  William Holmes  <billholmes54@gmail.com>
9392
9393         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
9394          to call ReplaceFile Kernel32 on windows or in io-layer.
9395         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
9396         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
9397          as an internal call.
9398
9399         Code is contributed under MIT/X11 license.
9400
9401 2007-08-20  Jb Evain  <jbevain@novell.com>
9402
9403         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
9404         and MONO_EXCEPTION_FIELD_ACCESS.
9405
9406         * debug-helpers.[c|h]: new mono_field_full_name function.
9407
9408 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9409
9410         * class.c: Removed class_security_level() and moved it to
9411         security-core-clr.c.
9412
9413         * security-core-clr.c, security-core-clr.h: class_security_level()
9414         is now public and renamed to mono_security_core_clr_class_level().
9415         It also looks for security attributes in the classes a class is
9416         nested in.
9417
9418 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9419
9420         * security-core-clr.c, security-core-clr.h: CoreCLR security
9421         utility functions.
9422
9423         * Makefile.am: Added security-core-clr.[ch].
9424
9425         * security-manager.c, security-manager.h: Functions and enum for
9426         setting and getting the security mode.
9427
9428         * class.c: CoreCLR security checks.
9429
9430 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9431
9432         * icall-def.h, process.c, process.h: implemented icall to get
9433         user/system processor times.
9434
9435 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9436
9437         * domain.c, threads.c, class-internals.h, domain-internals.h: New
9438         reader-lock-free jit_info_table.
9439
9440 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
9443
9444         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
9445
9446         * object-internals.h (MonoException): Add missing _data member.
9447
9448 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9449
9450         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
9451         checking that only methods with matching qname or fqname are picked
9452         from implemented interfaces.
9453
9454 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9455
9456         * verify.c (do_newarr):added, do type verification of
9457         newarr ops, push the right value on the eval stack.
9458         * verify.c (mono_method_verify): use do_newarr
9459
9460
9461 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9462
9463         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
9464         factored the common code into get_boxable_mono_type, which
9465         is now using mono_type_get_full, this fixed byref related tests.
9466
9467 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9468
9469         * class.c: added mono_type_get_full, this function has the same
9470         behavior of mono_class_get_full but the returned MonoType has
9471         all metadata of the associated token in case of a typespec token.
9472         * class.c: added mono_type_retrieve_from_typespec, used by 
9473         mono_type_get_full to retrieve the token type.
9474         * class.c (mono_class_create_from_typespec): changed to use
9475         mono_type_retrieve_from_typespec.
9476         * class.c (mono_ldtoken): changed to use mono_type_get_full
9477         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
9478         * class-internals.h: exported mono_type_get_full for internal use.
9479
9480 2007-08-16  Jb Evain  <jbevain@novell.com>
9481
9482         * domain.c (supported_runtimes): add entry for
9483         the 'moonlight' runtime version.
9484
9485 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9486
9487         * verify.c (mono_method_verify): small typo sliped in.  
9488
9489 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9490
9491         * verify.c (do_unbox_value): added, do type verification of
9492         unboxing ops
9493         * verify.c (mono_method_verify): use do_unbox_value
9494
9495
9496 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9497
9498         * verify.c (dump_stack_value): fixed typo, was printing string
9499         instead of object on stack.
9500         * verify.c (do_box_value): moved the byref check up as it leads
9501         to invalid code and should be done earlier.
9502         * verify.c: improved error messages for and ldobj
9503
9504 2007-08-15  William Holmes  <billholmes54@gmail.com>
9505
9506         * marshal.c (emit_marshal_custom): Omit the call to 
9507           marshal_native_to_managed when calling native to managed 
9508           and the argument is specified as an out argument.
9509
9510         Code is contributed under MIT/X11 license.
9511
9512 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9513
9514         * verify.c: fixed the type checks for generics, function pointers and vectors.
9515         Added type verification for ldobj and ldtoken. The verifier
9516         would segfault if header or signature of a method contained references
9517         to non-existant types.
9518
9519 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9520
9521         * marshal.c (cominterop_get_ccw): Patch from
9522         Bill Holmes to no walk up interface hierarchy. 
9523         All parent methods should be present in the interface for COM.
9524    
9525         Code is contributed under MIT/X11 license.
9526
9527 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9528
9529         * marshal.c (emit_marshal_com_interface): Patch from
9530         Bill Holmes to handle COM Interfaces as return values
9531         for native->managed calls.
9532    
9533         Code is contributed under MIT/X11 license.
9534
9535 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
9536
9537         * marshal.c (cominterop_get_idispatch_for_object): Implement
9538         for runtime callable wrappers.
9539    
9540         Code is contributed under MIT/X11 license.
9541
9542 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
9543
9544         * pedump.c (main): changed from mono_init to mono_init_from_assembly
9545         so 2.0 types are accessible
9546
9547
9548 2007-08-13  Miguel de Icaza  <miguel@novell.com>
9549
9550         * domain.c (mono_init_internal): Call mono_assembly_load_friends
9551         once we load mscorlib.   Due to the order in which we initialize,
9552         the mono_assembly_load_full routine that loads mscorlib did not
9553         load friends.   We now load it once we load the
9554         mono_defaults.internals_visible_class class. 
9555
9556         * assembly.c: Expose the mono_load_friend_assemblies method.
9557
9558 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
9559
9560         * verify.c: improved the handling of boxing, better
9561         type checking for unary ops and conversion. Fix bug
9562         regarding managed pointer compatibility checking
9563
9564 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9565
9566         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
9567
9568         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
9569
9570 2007-08-09  Raja R Harinath  <rharinath@novell.com>
9571
9572         * reflection.c (dup_type): Remove.
9573         * class.c (dup_type): Remove.
9574         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
9575         instead of the dodgy 'dup_type'.
9576         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
9577         handle the case where 'dup_type' needed the second argument.
9578
9579 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9580
9581         * domain.c: Fix a warning.
9582
9583 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9584
9585         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
9586         checking that methods with the same fqname are not overridden
9587         with a method from an ancestor.
9588
9589 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
9590
9591         * threads.c (free_thread_static_data_helper): Avoid a crash if
9592         thread->static_data is not yet set.
9593
9594 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
9595
9596         * marshal.c: Use correct image when emitting
9597         native wrapper for COM calls.
9598    
9599         Code is contributed under MIT/X11 license.
9600
9601 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
9602
9603         * icall-def.h, security.c, security.h :
9604           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
9605
9606 2007-08-07  Martin Baulig  <martin@ximian.com>
9607
9608         * mono-debug-debugger.h
9609         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
9610
9611         * domain.c (mono_domain_free): Call
9612         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
9613
9614 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9615
9616         * verify.c (check_underflow, check_overflow): error message now returns IL offset
9617         * verify.c (in_same_block): code should test if either offset is inside the clauses
9618         * verify.c (mono_method_verify): push the exception into the eval stack of exception
9619         and filter blocks
9620
9621 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9622
9623         * image.c (mono_image_close): Fix a leak.
9624
9625         * object.c (mono_runtime_invoke_array): Avoid using alloca.
9626
9627         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
9628
9629 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9630
9631         * domain.c, threads.c, threads-types.h: fix memory retention issue
9632         with thread static variables not being cleared on domain unload.
9633         Reuse thread static slots after domain unload.
9634
9635 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9636
9637         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
9638         nullable type.
9639
9640         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
9641         now done in mono_runtime_invoke_array.
9642
9643         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
9644         receiver is a nullable type.
9645
9646         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
9647         generic parameter.
9648
9649 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
9650
9651         * marshal.c: Implement COM Objects as return type for 
9652         managed->unmanaged calls. Added Release calls for COM Object
9653         out/return values in managed->unmanaged calls.
9654
9655         Code is contributed under MIT/X11 license.
9656
9657 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9658
9659         * threads.h, threads-type.h: move the hazard pointer declarations
9660         to the private header.
9661
9662 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9663
9664         * file-io.c, appdomain.c: memory leak fixes.
9665
9666 2007-08-02  Dick Porter  <dick@ximian.com>
9667
9668         * socket-io.c
9669         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
9670         SO_REUSEADDR setting into io-layer/sockets.c.
9671
9672 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9673
9674         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
9675         from Object when called on a generic parameter. Fixes #82211.
9676
9677 2007-08-01  Dick Porter  <dick@ximian.com>
9678
9679         * file-io.c (convert_share): Test FileShare values bit-by-bit.
9680         Fixes bug 79250 yet again.
9681
9682 2007-07-30  Martin Baulig  <martin@ximian.com>
9683
9684         Merged the `debugger-dublin' branch.
9685
9686         * mono-debug.h
9687         (MonoDebugDataTable): New typedef.
9688         (MonoDebugMethodAddressList): New typedef.
9689         (MonoDebugWrapperData): Removed.
9690         (MonoDebugSymbolTable): Removed `current_data_table',
9691         `current_data_table_size', `current_data_table_offset'.
9692         (MonoDebugDataItemType): Moved into mono-debug.c.
9693         (MonoDebugMethodJitInfo): Remove `address'.
9694         (mono_debug_data_table): New global variable.
9695         (mono_debug_lookup_method_addresses): New public function.
9696         (mono_debug_find_method): Take a `MonoMethod *', not a
9697         `MonoDebugMethodInfo *'.
9698
9699         * mono-debug.c: Drop support for the old symbol tables.
9700
9701 2007-06-28  Martin Baulig  <martin@ximian.com>
9702
9703         * mono-debug.c (mono_debug_debugger_version): New public variable.
9704
9705 2007-07-31  William Holmes  <billholmes54@gmail.com>
9706
9707         * metadata.c Changed mono_type_create_from_typespec to not insert
9708           the type into the hash map until after
9709           do_mono_metadata_parse_type has completed.
9710         Fixes Bug #82194
9711         Code is contributed under MIT/X11 license.
9712
9713 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9714
9715         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
9716         generic parameter. Fixes #82211.
9717
9718 2007-07-27  Jb Evain  <jbevain@novell.com>
9719
9720         * pedump.c (dump_metadata, dump_metadata_header): dump
9721         versions contained in the metadata header.
9722
9723 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9724
9725         * threads.c: register small_id_table with the GC.
9726
9727 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9728
9729         * threads.c, threads.h, class-internals.h, object-internals.h:
9730         Hazard pointers, to be used by lock-free parallel algorithms.
9731
9732 2007-07-26  Dick Porter  <dick@ximian.com>
9733
9734         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
9735         routine on non-windows platforms, as I've not managed to think of
9736         a non-kludgy way of doing this.  Finishes off bug 78739.
9737
9738 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9739
9740         * object.c: properly setup interface_bitmap in proxy vtables.
9741
9742 2007-07-25  Marek Habersack  <mhabersack@novell.com>
9743
9744         * appdomain.c (get_shadow_assembly_location): do not use TickCount
9745         to create unique shadow copy target directories, use the domain's
9746         serial number instead. Each domain gets a unique target directory
9747         that way.
9748
9749         * domain.c (mono_domain_create): added code to increment domain
9750         shadow copy serial number and cache the value in the current
9751         domain structure.
9752
9753         * domain-internals.h (struct _MonoDomain): added a new field -
9754         shadow_serial to hold the serial number used in generation of
9755         shadow-copy directories. This is to make sure that the directory
9756         name is unique for each and every domain created. We avoid a race
9757         condition with overriding assemblies already in use by other app
9758         domains.
9759
9760 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
9761
9762         * class.c (mono_bounded_array_class_get): fixed memory leak when 
9763         binding generic parameters.
9764
9765 2007-07-24  Raja R Harinath  <rharinath@novell.com>
9766
9767         * metadata.c (do_mono_metadata_parse_generic_class): Use
9768         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
9769         error.
9770
9771 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9772
9773         * loader.c, class-internals.h, reflection.c: removed the per-method
9774         generics hashtable: we use the global one through the call of
9775         mono_class_inflate_generic_method ().
9776
9777 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9778
9779         * class.c, metadata.c, class-internals.h: introduce yet another
9780         generics global cache for inflated methods (fixes 98% of the perf
9781         issue in bug #81806).
9782
9783 2007-07-23  Raja R Harinath  <rharinath@novell.com>
9784
9785         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
9786         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
9787         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
9788         return a MonoGenericInst containing (a copy) of those types.
9789         (mono_metadata_inflate_generic_inst): Update to changes.
9790         (mono_metadata_parse_generic_inst): Likewise.
9791         (mono_get_shared_generic_inst): Likewise.
9792         * reflection.c (mono_class_bind_generic_parameters): Likewise.
9793         (mono_reflection_bind_generic_method_parameters): Likewise.
9794         * metadata-internals.h: Likewise.
9795         * icall.c (free_generic_context): Kill.
9796         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
9797
9798         * reflection.c (reflection_methodbuilder_to_mono_method): Use
9799         mono_metadata_type_dup.
9800         * marshal.c (mono_mb_create_method): Likewise.
9801
9802         * metadata.c (mono_metadata_type_dup): Rename from
9803         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
9804         MonoImage.  Handle a few more cases, esp. when no mempool is given.
9805         * marshal.c, metadata-internals.h: Update to changes.
9806
9807 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9808
9809         * class.c: fixed a small leak for array classes and removed warning.
9810
9811 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9812
9813         * loader.c (mono_method_get_param_token): Make this work on generic methods.
9814         Return 0x8000000 for return parameters. Fixes #82161.
9815
9816 2007-07-21  Marek Habersack  <grendello@gmail.com>
9817
9818         * appdomain.c (get_shadow_assembly_location): append the current
9819         ticks value to the path. Avoids overwriting the same assemblies by
9820         several threads at the same time.
9821
9822 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9823         and Raja R Harinath  <rharinath@novell.com>
9824
9825         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
9826         Simplify slightly.
9827         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
9828         property for testing if a method is a generic method definition.
9829
9830 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9831
9832         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
9833
9834 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9835
9836         * verify.c: used function from private branch, reverted to the one in class.h 
9837
9838 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9839
9840         * verify.c: a typo slipped in and the code wont compile
9841
9842 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9843
9844         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
9845         disabled box instruction as it is doing the wrong thing
9846         improved stack dump messages, now it is easier to debug type related issues
9847
9848
9849 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
9850
9851         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
9852
9853 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9854
9855         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
9856         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
9857         grouped with class and valuetype. This change will simply 
9858         the code as it should be handled just like unmanaged pointers.
9859
9860 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9861
9862         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
9863
9864 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
9865
9866         * verify.c: several stack merge issues fixed, reference comparisons now
9867         check the type size. strict type check now works correctly.
9868         added more uses of IS_MANAGED_POINTER macro.
9869         fixed issues pointed by running the test suite against .net.
9870         
9871
9872 2007-07-19  Mark Probst  <mark.probst@gmail.com>
9873
9874         * class.c, loader.c, class-internals.h: Removed the
9875         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
9876         defines.
9877
9878         * icall.c: Better error checking in some internal reflection
9879         methods.
9880
9881 2007-07-18  William Holmes  <billholmes54@gmail.com>
9882
9883         * filewatcher.c : removed unused variable 'filename' in 
9884           ves_icall_System_IO_FSW_SupportsFSW
9885
9886 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
9887
9888         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
9889         obsolete, removed.
9890
9891 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
9892
9893         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
9894         
9895         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
9896
9897 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
9898
9899         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
9900         Implement generics support.
9901         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
9902
9903         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
9904         type_args and method_args arguments.
9905         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
9906         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
9907         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
9908
9909 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
9910
9911         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
9912           It adds a rootimage parameter to mono_reflection_get_type_internal,
9913           adds new function mono_reflection_get_type_with_rootimage and use
9914           the rootimage to resolve the types instead of the current image
9915
9916 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
9917
9918         * culture-info-table.h: Forgot to update after r78304.
9919
9920 2007-07-13  Raja R Harinath  <rharinath@novell.com>
9921
9922         * class.c (mono_class_is_open_constructed_type)
9923         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
9924
9925 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
9926
9927         * class.c (mono_bounded_array_class_get):  method fails if used with
9928         an incomplete TypeBuilder enum (no basetype field), fixed it by 
9929         avoiding calculating the size for such array as it cannot be instantiated.
9930         Fix bug #82015
9931
9932 2007-07-12  Raja R Harinath  <rharinath@novell.com>
9933
9934         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
9935         field.
9936         * metadata.c, reflection.c: Update to changes.
9937
9938 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
9939
9940         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
9941         mono_class_is_valid_enum, they are used to valide a enum when loading.
9942         * reflection.c: used new functions to throw TypeLoadException when and
9943         invalid enum is build with TypeBuilder. Fixes #82018
9944   
9945 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9946
9947         * object.c: forgot commit of mono_class_setup_methods () to access
9948         iface->methods.
9949         * object-internals.h: added a few more handy fields to
9950         MonoIMTCheckItem.
9951
9952 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
9953
9954         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
9955         iface->methods.
9956
9957 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9958
9959         * class-internals.h, object-internals.h, object.c: IMT-based
9960         interface invocation core from Massimiliano Mantione
9961         (massi@ximian.com) with a reworked arch-specific interface,
9962         bsearch implementation and a few bugfixes and memory savings by me.
9963
9964 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
9965
9966         * class.c (mono_class_create_from_typedef): mono would segfault if 
9967         an enum did not have a __value field. It now throws a TypeLoadException
9968         for such cases. Fix bug #82022
9969
9970 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9971
9972         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
9973
9974 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9975
9976         * class.c (mono_class_init): If a class is already inited but has
9977         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
9978
9979 2007-07-09  Mark Probst  <mark.probst@gmail.com>
9980
9981         * class.c: Properly handle the case of an unimplemented interface
9982         method.  Fixes: 81673.
9983
9984 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9985
9986         * class-internals.h, object.c: cleanup patch from massi: use
9987         MonoVTable->interface_bitmap since the vtable interfaces offset array
9988         is going away.
9989
9990 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
9993         GetMDStreamVersion icall instead.
9994
9995 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
9996
9997         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
9998         not use mono_dl_build_path() with a full library name: makes
9999         fallbacks to libgaim and libfam work.
10000
10001 2007-07-06  William Holmes  <billholmes54@gmail.com>
10002
10003         * assembly.c: Added a continue statement in probe_for_partial_name when
10004          parse_assembly_directory_name fails.  Fixes : 82002
10005
10006 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
10007
10008         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
10009         and added a verification  for TYPEDBYREF.
10010         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
10011         make native int interchangeable with int32 and some small cleanup and formating.
10012         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
10013         handle byref of byref.
10014         * verify.c (push_local): handle byref of byref.
10015         * verify.c (do_binop): invalid mix of values is unverifiable
10016         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
10017         added visibility checks
10018         * verify.c (field related method): added visibility checks
10019         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
10020
10021 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
10022
10023         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
10024         string.
10025
10026 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10027
10028         * profiler.c (mono_profiler_load): Fix an off-by-one error.
10029
10030         * marshal.c (emit_marshal_string): When returning a string from managed code,
10031         allways make a copy even for unicode strings. Fixes #81990.
10032
10033 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
10034
10035         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
10036         of byref generic inst types (bug #81997).
10037
10038 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10039
10040         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
10041         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
10042
10043 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
10044
10045         * marshal.c (emit_marshal_string): Add support for unicode strings in
10046         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
10047
10048 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
10049
10050         * verify.c: field load/store are now verified, missing only access checks now
10051
10052 2007-06-28  Martin Baulig  <martin@ximian.com>
10053
10054         * mono-debug.c (mono_debug_debugger_version): New public variable.
10055
10056 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
10057
10058         * locales.c: When constructing DateTimeFormat or NumberFormat for
10059         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
10060         MonoCultureInfo contructed from the current locale is always
10061         read-only and has UseUserOverride set to true. All MonoCultureInfo
10062         instances returned for GetCultures have both IsReadOnly and
10063         UseUserOverride set to true. Fixes part of bug #81930.
10064
10065 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
10066
10067        * icall-def.h: Update System.__ComObject icalls
10068        * marshal.c: Avoid managed transition (and object creation)
10069        when looking up COM interface in RCW.
10070        * marshal.h: Ditto.
10071        
10072        Code is contributed under MIT/X11 license.
10073
10074 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
10075
10076         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
10077         to avoid crashes during assembly unloading.
10078
10079 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10080
10081         Fix MethodInfo.IsGenericMethodDefinition
10082         * reflection.c (mono_reflection_bind_generic_method_parameters):
10083         Rearrange code to ensure we always uses a generic method definition.
10084         * class.c (mono_class_inflate_generic_method_full): Set
10085         'generic_container' field only for generic method definitions.
10086         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10087         Use presense of 'generic_container' field as indication of being a
10088         generic method definition.
10089
10090 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10091
10092         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10093
10094         * object-internals.h: Reflect changes in the layout of the managed Delegate
10095         class.
10096         
10097         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10098         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10099         runtime memory used by the dynamic method. Fixes #77146.
10100
10101 2007-06-21  Dick Porter  <dick@ximian.com>
10102
10103         * file-io.h: 
10104         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10105         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10106         81767.
10107
10108 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10109
10110         * reflection.c (method_encode_methodspec): Add a tripwire.
10111         * class.c (inflate_generic_type): The fully open generic type is
10112         not the same as the generic type definition.
10113
10114 2007-06-21  Martin Baulig  <martin@ximian.com>
10115
10116         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10117
10118         * mono-debug-debugger.h
10119         (MonoDebuggerBreakpointInfo): Removed.
10120         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10121         (mono_debugger_remove_breakpoint): Likewise.
10122         (mono_debugger_breakpoint_callback): Likewise.
10123         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10124
10125 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10126
10127         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10128         generic type is not the same as the generic type definition.
10129         * class.c (mono_generic_class_get_class): Likewise.
10130
10131 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10132
10133         * icall.c: The second argument to 
10134         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10135         is a MonoType not a MonoClass.
10136
10137 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10138
10139         * verify.c: support for function pointers in the verifier
10140
10141 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10142
10143         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10144
10145 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10146
10147         * assembly.c: removed Mono.Data.SqliteClient from the list of
10148         forward-compatible assemblies as it breaks the ABI (bug #81899).
10149
10150 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10151
10152         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10153         lookup/update with the loader lock.
10154         * reflection.c (mono_class_bind_generic_parameters): No need to
10155         protect mono_metadata_lookup_* with the loader lock.
10156         * class.c (inflate_generic_type): Likewise.
10157         
10158         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10159         on a generic instantiated type.
10160
10161 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10162
10163         *verify.c: produce meanfull error messages on verification error
10164         *verify.c: fixed some cases of verification errors reported as validation errors
10165         *pedump.c: fixed the error name array, now it shows validation errors properly
10166         *verify.h: fixed the contant that should be used for verification errors
10167
10168 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10169
10170         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10171         for bug #77596, 81858 and 80743 (generics data structures on domain
10172         unload).
10173
10174 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10175
10176         Avoid allocating 'MonoGenericContext' on the heap.
10177         * class-internals (_MonoMethodInflated::context): Make field
10178         inline, not a pointer.
10179         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10180         stack.  Use the context embedded within the inflated method as the
10181         hash key, rather than 'new_context'.
10182         * class.c (inflate_generic_context): Simplify.  Return a struct
10183         rather than allocating on the heap.
10184         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10185         doesn't salt away a copy of the context -- simplifying the
10186         lifetime rules of a 'MonoGenericContext *'.
10187         (mono_method_get_context): Return pointer to embedded context.
10188         (setup_generic_array_ifaces): Allocate temporary context on stack.
10189         * reflection.c (inflate_mono_method): Likewise.
10190         (mono_reflection_bind_generic_method_parameters): Likewise.
10191         Use the context embedded within the inflated method as the hash key.
10192
10193         Avoid a source of allocation of 'MonoGenericContext'.
10194         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10195         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10196         * class.c: Update to changes.
10197         (mono_generic_class_get_context): Simplify drastically.  Now just
10198         returns a pointer to the field.
10199         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10200         argument as a const pointer.
10201         (mono_metadata_generic_context_equal): Likewise.
10202         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10203         Update to changes.
10204
10205 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10206
10207         * verify.c improved the handling of brtrue/brfalse, factored out common code
10208
10209 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10210
10211         Kill MonoGenericMethod.
10212         * class-internals.h (MonoGenericContext::method_inst): Rename from
10213         'gmethod' and convert to a MonoGenericInst.
10214         (MonoGenericMethod): Remove.
10215         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10216         * loader.c (method_from_methodspec): Update to changes.  Use a
10217         MonoGenericContext as the key to the hashtable.
10218         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10219         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10220         (mono_metadata_generic_context_hash): Likewise from
10221         'mono_metadata_generic_method_hash'.  Change hash function.
10222         (mono_metadata_load_generic_params): Update to changes.
10223         (mono_get_shared_generic_method): Remove.
10224         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10225         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10226         (inflate_generic_context): Likewise.
10227         (mono_class_inflate_generic_method_full): Likewise.
10228         (setup_generic_array_ifaces): Likewise.
10229         (mono_class_create_from_typespec): Likewise.
10230         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10231         (method_encode_methodspec): Update callsite.
10232         (reflection_methodbuilder_to_mono_method): Update to changes.
10233         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10234         MonoGenericContext as the key to the hashtable.
10235         (inflate_mono_method): Update to changes.
10236
10237         * class-internals.h (MonoGenericMethod::container): Remove.
10238         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10239
10240 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10241
10242         * profiler-private.h, profiler.c, profiler.h: added API to profile
10243         exception events.
10244
10245 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10246
10247         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10248
10249 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10250
10251         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10252         Fixed overflow and underflow not aborting the verification process.
10253
10254 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10255
10256         * class-internals.h (MonoStats): Added stats entries for dynamic
10257         code allocations.
10258
10259 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10260
10261         * loader.c (mono_free_method): Free header->locals and header->clauses.
10262
10263         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10264         dynamic case.
10265
10266         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10267
10268         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10269
10270 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10271
10272         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10273         the tables.
10274
10275 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10276
10277         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10278
10279 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10280
10281         MonoGenericMethod on a diet
10282         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10283         here ...
10284         (_MonoGenericMethod::reflection_info): ... from here.
10285         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10286         Update to changes.
10287         * reflection.c (inflate_mono_method): Likewise.
10288         (mono_reflection_bind_generic_method_parameters): Likewise.
10289
10290 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10291
10292         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10293         *verify.c: factored long ldarg forms to share code with short forms
10294
10295 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10296
10297         *verify.c: fixed code formating factored some duplicate code
10298         into a new function
10299
10300         *verify.h: fixed binary incompatibility introduced earlier
10301
10302         *pedump.c: fixed formating
10303
10304 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10305
10306         Fix assertion when disassembling Mono.C5.dll
10307         * loader.c (method_from_methodspec): Avoid inflating a method
10308         twice with the same context.  If the methodref is inflated, use
10309         the declaring method instead.
10310
10311         * class.c (mono_class_from_generic_parameter): Fix case similar to
10312         bug #81830 handled below, but for method containers.
10313
10314 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10315
10316         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10317         get_shared_generic_class.  Directly inflate the instance.
10318         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10319         (inflate_generic_class): Delete.
10320         (get_shared_generic_class): Delete.  Move setting of
10321         'cached_class' and 'cached_context' ...
10322         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10323
10324         * metadata.c (mono_metadata_lookup_generic_class): Change
10325         signature to take the components of a MonoGenericClass rather than
10326         an allocated MonoGenericClass.  Change semantics to be intern-like.
10327         * reflection.c (mono_class_bind_generic_parameters): Update to
10328         changes.  Make locking region tighter.
10329         * class.c (inflate_generic_class): Update to changes.
10330         (get_shared_generic_class): Likewise.
10331         * metadata-internals.h: Likewise.
10332
10333         * reflection.c (mono_class_bind_generic_parameters): Take and
10334         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10335         (mono_reflection_bind_generic_parameters): Use
10336         'mono_class_bind_generic_parameters' rather than duplicate the code.
10337         * class.c (mono_bounded_array_class_get): Update to changes.
10338         * object-internals.h: Likewise.
10339
10340         * reflection.c (mono_class_bind_generic_parameters): Only support
10341         parameterizing generic type definitions.  Remove support for other
10342         open types.
10343
10344 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10345
10346         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10347
10348         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10349         in the dynamic case.
10350
10351 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10352
10353         * threads.c: When cleaning up thread, reset the Background bit.
10354         Fixes bug #81720.
10355
10356 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10357
10358        * metadata.c: Move variable declarations to top of scope.
10359        * verify.c: Move variable declarations to top of scope.
10360
10361        Code is contributed under MIT/X11 license.
10362
10363 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10364
10365         * reflection.c (mono_class_bind_generic_parameters): Replace
10366         open-coded loop with mono_metadata_inflate_generic_inst.
10367
10368         * class.c (get_shared_generic_class): Don't call
10369         mono_get_shared_generic_inst.  Use the container's own
10370         'class_inst'.
10371
10372         * metadata.c (mono_metadata_load_generic_params): Move
10373         initialization of 'context' field here from ...
10374         * class.c (mono_class_create_from_typedef): ... here, and ...
10375         * loader.c (mono_get_method_from_token): ... here.
10376
10377         * class.c (get_shared_generic_class): Rename from
10378         mono_get_shared_generic_class and make static.
10379         (mono_get_shared_generic_inst): Move to metadata.c.
10380         * loader.c (mono_get_shared_generic_method): Likewise.
10381         * class-internals.h, metadata-internals.h: Update to changes.
10382
10383         Fix #81830
10384         * class.c (mono_class_from_generic_parameter): Don't assume a
10385         generic container owner exists.  Generic containers from monodis
10386         don't have any.
10387
10388 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10389
10390         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10391         * verify.h: new typedefs to returns the non-verifiable status
10392         * verify.c: initial implementation of generics, stack merging and object compatibility check
10393
10394 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10395
10396         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10397         a MonoInternalHashTable again (fixed bug in internal hash table
10398         code).
10399
10400 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10401
10402         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10403         MonoInternalHashTable again (fixed bug in internal hash table
10404         code).
10405
10406 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10407
10408         * class.c, image.c, class-internals.h, domain.c,
10409         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
10410         changes.  Have to figure out what makes them break the SWF
10411         regression.
10412
10413 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10414
10415         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10416         a MonoInternalHashTable now.
10417
10418 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10419
10420         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10421         MonoInternalHashTable now.
10422
10423 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10424
10425         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
10426         invoke_impl code.
10427
10428         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
10429
10430         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
10431         dependent trampoline.
10432
10433         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10434
10435         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
10436
10437 2007-05-29  Robert Jordan  <robertj@gmx.net>
10438
10439         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
10440
10441 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
10444
10445 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
10446
10447        * marshal.c: Fix interface lookup loops for
10448        cominterop_get_com_slot_for_method and 
10449        cominterop_get_method_interface. Only need to lookup
10450        if type is a class, else use interface type method is on.
10451
10452        Code is contributed under MIT/X11 license.
10453
10454 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
10455
10456         * reflection.c: HasSecurity can be present even if no specially 
10457         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
10458         SecurityAttribute). Fix CAS regression tests on buildbot.
10459
10460 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10461
10462        * appdomain.c: Add configure checks for header files.
10463        * image.c: Add configure checks for header files.
10464        * file-io.c: Add configure checks for header files.
10465        * debug-mono-symfile.c: Add configure checks for header files.
10466        * threadpool.c: Add configure checks for header files.
10467        * console-io.c: Add configure checks for header files.
10468        * profiler.c: Add configure checks for header files.
10469        * rawbuffer.c: Add configure checks for header files.
10470        * icall.c: Add configure checks for header files.
10471        * rand.c: Add configure checks for header files.
10472        * socket-io.c: Add configure checks for header files.
10473
10474        Code is contributed under MIT/X11 license.
10475
10476 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
10477
10478         * reflection.c (mono_custom_attrs_from_builders): Remove the 
10479         assertion as it breaks the build.
10480         
10481         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
10482
10483         * reflection.c (lookup_custom_attr): Make a copy here too.
10484
10485         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
10486         dynamic images.
10487
10488         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
10489         images.
10490
10491         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
10492         info.
10493
10494 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10495
10496         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
10497         (load_cattr_value): Ditto.
10498
10499 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
10502
10503 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
10504
10505         * threads.c: In "start_wrapper", set apartment_state to MTA if
10506         apartment_state is Unknown and we're running on 2.0 profile or
10507         higher.
10508         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
10509         to main method, then set apartment_state to Unknown on 1.0 profile,
10510         and MTA on 2.0 profile.
10511
10512 2007-05-16  Jb Evain  <jb@nurv.fr>
10513
10514         * class-internals.h (MonoDefaults): Add an attribute_class and
10515           customattribute_data_class.
10516         * domain.c (mono_init_internal): Populate them.
10517         * reflection.c: Use them to remove duplicates. Make a vew
10518         MonoClass variables `static'.
10519
10520 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10521
10522         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
10523         step in implementing IMT, so that all isinst checks now can go
10524         through the bitmap.
10525         This was needed because vtables for TransparentProxy need to look
10526         like the vtable of the "target" class, so they need to point to
10527         its interface bitmap directly.
10528
10529         * object.c: inside "mono_class_create_runtime_vtable" and
10530         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
10531
10532 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
10533
10534         * object-internals.h
10535           culture-info.h : added territory field in MonoCulture and
10536           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
10537         * locales.c : fill territory field above too.
10538         * culture-info-table.h : regenerated.
10539
10540 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
10543         Fixes #81599.
10544
10545 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
10546
10547         * object.c: Always initialize apartment, even if 
10548         there is no custom attributes on entry point.
10549         
10550         Code is contributed under MIT/X11 license.
10551
10552 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
10553
10554         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
10555         * metadata.c: If no encoding is set, check for unicode
10556         on class.
10557         
10558         Code is contributed under MIT/X11 license.
10559
10560 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10561
10562         * threads.c: Handle if mono_thread_current returns NULL 
10563         
10564         Code is contributed under MIT/X11 license.
10565
10566 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10567
10568         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
10569         in start_wrapper. Added mono_thread_init_apartment_state and
10570         mono_thread_cleanup_apartment_state.
10571         * object.c: Initialize thread apartment state on main thread
10572         by checking for STAThreadAttribute on entry point.
10573         * object-internals.h: Add apartment_state field to MonoThread.
10574         * threads-types.h: Add unmanaged definition of 
10575         System.Threading.ApartmentState, MonoThreadApartmentState.
10576         
10577         Code is contributed under MIT/X11 license.
10578         
10579 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
10580
10581         * class.c: Fix windows build.
10582         * class-internals.h: Fix windows build.
10583         
10584         Code is contributed under MIT/X11 license.
10585
10586 2007-05-08  Robert Jordan  <robertj@gmx.net>
10587
10588         * process.c (CreateProcess_internal):
10589         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
10590         .CreateNoWindow was specified. Fixes #81496.
10591
10592 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10593
10594         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
10595         step in implementing IMT, replaced it with two compact arrays
10596         (interfaces_packed and interface_offsets_packed) and a bitmap that
10597         is used for isinst checks (interface_bitmap).
10598
10599         * class.c: (compare_interface_ids): compare function to pass to
10600         bsearch when looking for an interface with a given id.
10601         (mono_class_interface_offset): reimplemented using bsearch on
10602         interfaces_packed, getting the offset from interface_offsets_packed.
10603         (print_implemented_interfaces): utility debugging function.
10604         (setup_interface_offsets): reworked to initialize interfaces_packed,
10605         interface_offsets_packed and interface_bitmap.
10606
10607         * object.c: replaced all accesses to "MonoClass.interface_offsets"
10608         with uses of interfaces_packed and interface_offsets_packed.
10609
10610 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10611
10612         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
10613         mono_class_interface_offset prototype to wrap all accesses to
10614         "MonoClass.interface_offsets".
10615
10616         * class.c: Implemented mono_class_interface_offset, and wrapped all
10617         accesses to "MonoClass.interface_offsets".
10618
10619         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
10620         "MonoClass.interface_offsets".
10621
10622 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
10623
10624         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
10625         GetMethodFromHandle overloads (bug #78637).
10626
10627 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10628
10629         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
10630         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
10631
10632 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
10633
10634         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
10635         #81498.
10636
10637         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
10638         gracefully.
10639         (mono_custom_attrs_from_index): Ditto.
10640
10641         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
10642         Fixes #81501.
10643
10644 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10645
10646         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
10647         is now allocated from a mempool.
10648
10649 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
10650
10651         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
10652         caller holds threads_lock, leading to deadlocks. Fixes #81476.
10653
10654 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10655
10656         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
10657         mono_loader_clear_error () too late. Fixes #81463.
10658
10659 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
10660
10661         * culture-info-table.h : regenerated.
10662
10663 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10664
10665         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
10666         is missing.
10667
10668 2007-04-25  Dick Porter  <dick@ximian.com>
10669
10670         * Makefile.am: Put the mingw enforced-optimisation back into the
10671         PLATFORM_WIN32 section.
10672
10673 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10674
10675         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
10676         patch.
10677
10678         * image.c (mono_image_load_module): New API function to load a module reference.
10679
10680         * image.c (load_modules): Load modules lazily. Fixes #80812.
10681
10682         * class.c (mono_class_from_typeref): Use mono_image_load_module.
10683         
10684         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
10685
10686         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
10687         to mono_image_load_module_dynamic.
10688
10689 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
10690
10691         * marshal.c: Fix calling convention for CCW on non-windows
10692         platforms. STDCALL on windows, CDECL everywhere else to work 
10693         with XPCOM and MainWin COM.
10694         
10695         Code is contributed under MIT/X11 license.
10696
10697 2007-04-23  Martin Baulig  <martin@ximian.com>
10698
10699         Fix #80969.
10700
10701         * loader.c
10702         (method_from_memberref): Added `gboolean *used_context' argument.
10703         (mono_get_method_from_token): Likewise.
10704         (mono_get_method_full): Don't insert the method in the cache when
10705         `used_context' is true.
10706
10707 2007-04-23  Raja R Harinath  <rharinath@novell.com>
10708
10709         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
10710
10711         * reflection.c (mono_reflection_bind_generic_parameters): Don't
10712         create new MonoTypes for returned types.
10713         * class.c (mono_generic_class_get_class): Export mono-internal.
10714         * class-internals.h: Update to changes.
10715
10716 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
10717
10718         * threadpool.c, threadpool.h, icall-def.h: patch from
10719         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
10720
10721 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
10722
10723         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
10724         
10725         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
10726
10727         * threads.c (mono_thread_get_stack_bounds): New helper function.
10728
10729         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
10730         Correctly compute stack bounds when attaching. Fixes #81394.
10731
10732 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
10733
10734         * reflection.c: fix handling of doubles in custom attributes
10735         for the arm-fpa format (bug #81368).
10736
10737 2007-04-18  Raja R Harinath  <rharinath@novell.com>
10738
10739         * reflection.c (assembly_add_win32_resources): Mildly relax an
10740         bounds check to let the end pointer point just past the end of the
10741         allocated buffer.  (may fix #81384)
10742
10743 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
10744
10745         * culture-info-table.h : regenerated.
10746
10747 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
10748
10749         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
10750         the thread is aborted early.
10751
10752 2007-04-05  Dick Porter  <dick@ximian.com>
10753
10754         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
10755         FindFirstFile()/FindNextFile() to find entries.  This lets the
10756         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
10757         81038.
10758
10759         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
10760         the parameters of
10761         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
10762
10763 2007-04-04  Martin Baulig  <martin@ximian.com>
10764
10765         * debug-helpers.c
10766         (mono_method_desc_full_match): Add support for nested classes.
10767
10768 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
10769
10770         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
10771
10772 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
10773
10774         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
10775         waiting for too many threads.
10776
10777 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
10778
10779         * environment.c: Fix return value check on uname so we can get the 
10780         executing version on Solaris operating systems.
10781
10782 2007-03-28  Jb Evain  <jbevain@gmail.com>
10783
10784         * class.c (mono_type_get_name_recurse): Complete the
10785         fix for the creation of assembly qualified names for
10786         pointer types. Fixes #81208.
10787
10788 2007-03-27  Dick Porter  <dick@ximian.com>
10789
10790         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
10791         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
10792         changed.
10793
10794         * threads.c
10795         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
10796         the value of ReleaseMutex().
10797
10798 2007-03-27  Dick Porter  <dick@ximian.com>
10799
10800         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
10801         in little-endian order, not network endian, so must be converted
10802         to host endian here.  Fixes bug 80593.
10803
10804 2007-03-22  Jb Evain  <jbevain@gmail.com>
10805
10806         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
10807         qualified names for pointer types. Fixes #81208.
10808
10809 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
10810
10811         * marshal.c: Add support for PreserveSigAttribute. 
10812         
10813         Code is contributed under MIT/X11 license.
10814
10815 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
10816
10817         * process.c: Fix endianness issues. Fixes #81126.
10818
10819         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
10820         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
10821
10822         * image.c (mono_image_lookup_resource): Make this work on big-endian
10823         machines.Change API contract so the caller needs to free the return value.
10824         
10825         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
10826         API change.
10827         
10828 2007-03-14  Martin Baulig  <martin@ximian.com>
10829
10830         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
10831         mono_type_get_desc() as well.
10832
10833 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
10834
10835         * icall.c:  Fix environ access in VS.  
10836         
10837 2007-03-13  Alp Toker  <alp@atoker.com>
10838
10839         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
10840         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
10841         #63841.
10842
10843 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
10844
10845         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
10846         circular references among dynamic methods. Fixes #81091.
10847
10848         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
10849
10850 2007-03-09  Martin Baulig  <martin@ximian.com>
10851
10852         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
10853
10854 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
10855
10856         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
10857         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
10858         
10859         Code is contributed under MIT/X11 license.
10860         
10861 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
10862
10863         * loader.c: Reapply patch for bug #79424.
10864
10865 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10866
10867         * metadata.c (mono_type_to_unmanaged): Only convert object to
10868         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
10869
10870 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
10871
10872         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
10873         (and incorrectly set) is_reference field from MonoGenericInst.
10874
10875 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
10878         a little earlier.
10879
10880         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
10881
10882         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
10883
10884 2007-03-05  Miguel de Icaza  <miguel@novell.com>
10885
10886         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
10887         FileOptions.1 value to mean "temporary", map that to
10888         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
10889
10890         Fixes 80688
10891
10892 2007-03-03  Marek Habersack  <mhabersack@novell.com>
10893
10894         * appdomain.c: implement MS .Net style shadow copying. Copies of
10895         the assemblies are made in a subdirectory of the dynamic base
10896         directory, the assembly names are preserved.
10897         Copy .mdb and .config files along with the assemblies being shadowed.
10898
10899 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
10900
10901         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
10902         (emit_marshal_handleref): Ditto.
10903
10904         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
10905         on Visual C++. Fixes #80671.
10906
10907 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
10908
10909         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
10910         for clone operations.
10911
10912 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
10913
10914         * marshal.c: Fix warnings.
10915
10916 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
10917
10918         * loader.c: allow case-insensitive matching of the dll name
10919         in dllmap handling when prefixed with "i:".
10920
10921 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
10922
10923         * threads.c: Fix #ifdef for dummy_apc function for VS.
10924
10925 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
10926
10927         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
10928
10929 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
10930         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
10931         giving precedence to the methods with a fully qualified name
10932         (InterfaceName.MethodName) when building the interface sections
10933         of the vtable.
10934
10935 2007-02-16  Dick Porter  <dick@ximian.com>
10936
10937         * threadpool.c (append_job): Fix fast-path array handling, so it's
10938         less likely the array will grow exponentially when the load is
10939         heavy.
10940
10941 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
10942
10943         * metadata-internals.h, loader.c: fix dllmap lookup order
10944         for non-function maps, too, and prepare for fallback code.
10945
10946 2007-02-12  Robert Jordan  <robertj@gmx.net>
10947
10948         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
10949         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
10950         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
10951         GlobalFree. Fixes a part of bug #77075.
10952
10953 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
10954
10955         * loader.c: implemented typedef parent in field memberref.
10956
10957 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
10958
10959         * marshal.c: Fix warnings and remember to call Release on
10960         IUnknown of RCW.
10961         
10962         Code is contributed under MIT/X11 license.
10963
10964 2007-02-10  Miguel de Icaza  <miguel@novell.com>
10965
10966         * class-internals.h: Add MonoHandleRef definition, and
10967         handleref_class to mono_defaults. 
10968
10969         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
10970         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
10971
10972         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
10973         (do nothing on this stage)
10974         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
10975         (emit_marshal_handleref): New method, used for argument handling
10976         of HandleRefs. 
10977
10978 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
10979
10980         * class.c (mono_class_setup_parent): Lazily init com types.
10981         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
10982         init com types.
10983         * object.c (mono_remote_class_vtable): Lazily init com types.
10984         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
10985         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
10986         * domain-internals.h: Expose mono_init_com_types.
10987         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
10988         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
10989         Add support for COM Callable Wrapper marshalling.
10990         * marshal.h: Add icall definitions.
10991         * gc.c: Handle freeing of CCWs in finalizer code.
10992         
10993         Code is contributed under MIT/X11 license.
10994
10995 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
10996
10997         * reflection.c: changed all the signature encoding code to use
10998         a variable-sized buffer.
10999
11000 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11001
11002         * marshal.c: locking fixes: never take the loader lock
11003         or other runtime locks when holding the marshal lock
11004         (fixes bug#80664).
11005
11006 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
11007
11008         * marshal.c: make the delegate function pointer mapping
11009         work for the moving GC.
11010
11011 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
11012
11013         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
11014         for bug #80618.
11015
11016 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11017
11018         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
11019         gmodule.
11020
11021 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11022
11023         * threadpool.c: made the code moving-GC safe.
11024
11025 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
11026
11027         * assembly.c, boehm-gc.c, class-internals.h, class.c,
11028         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
11029         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
11030         warning cleanup.
11031         * reflection.c: warning cleanup, some threading and moving GC fixes.
11032
11033 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
11034
11035         * class.c, loader.c: create the needed Set/Get/Address array methods
11036         as well as the .ctors in mono_class_init (), fixes bug #80567.
11037
11038 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11039
11040         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
11041         we doesn't decrease its alignment. Should fix the sparc build.
11042
11043 2007-01-24  Dick Porter  <dick@ximian.com>
11044
11045         * socket-io.c
11046         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
11047         Create the returned object if we need to ignore an unsupported
11048         socket option.  Fixes a segfault reported by Atsushi.
11049
11050 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11051
11052         * class.c, object.c: restrict GC-tracked fields to
11053         UIntPtr fields used inside corlib, so we provide better
11054         type info to the GC and also allow broken packing as in
11055         bug #80580.
11056
11057 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
11058
11059         * sgen-gc.c: removed duplicated function.
11060
11061 2007-01-19  Miguel de Icaza  <miguel@novell.com>
11062
11063         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
11064         value that means that the value is not supported, but that we
11065         should not return a failure, but instead report this as a
11066         successful operation.
11067
11068 2007-01-19  Raja R Harinath  <rharinath@novell.com>
11069
11070         Fix tests/bug79956.2.il
11071         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
11072         (mono_generic_class_get_class): If the generic definition in an
11073         enum, copy over other fields related to it.
11074
11075 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11076
11077         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11078         genericinst enums (bug #79215).
11079
11080 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11081         * class.c: Fix bug 80307.
11082
11083 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11084
11085         * image.c: if the file table is not present, try to load
11086         all the modules, since we don't have info about them
11087         having or not metadata (bug #80517).
11088         * assembly.c: allow mono_assembly_load_references () to
11089         work for netmodules.
11090
11091 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11092
11093         * image.c, metadata-internals.h, object.c: execute module
11094         cctors when running on the 2 runtime if present (bug #80487).
11095
11096 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11097
11098         * icall.c: optimized InitializeArray() on bigendian.
11099
11100 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11101
11102         * icall.c: fix for the broken ARM FPA double format.
11103
11104 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11105
11106         * icall.c: handle endian issues for r4 and r8 types, too, in
11107         the InitializeArray() icall.
11108
11109 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11110
11111         * loader.c (mono_loader_error_prepare_exception): Clear the error
11112         once we have extracted the information from it, do this before we
11113         call into the JIT's class loading mechanisms.
11114
11115         * object.c (mono_class_create_runtime_vtable): Do not clear the
11116         loader error before calling mono_class_get_exception_for_failure
11117         as the loader error is needed inside
11118         mono_class_get_exception_for_failure to throw the error (thinko).
11119
11120         Fixes #80521
11121         
11122 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11123
11124         * reflection.c: align fields rva data so it's faster to load at
11125         runtime.
11126
11127 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11128
11129         Prepare to simplify GenericMethod handling.
11130         * class-internals.h (mono_method_get_context): New accessor function.
11131         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11132         rather than directly accessing '->context' field.
11133
11134         * class-internals.h (_MonoGenericParam.method): Move ...
11135         (_MonoGenericContainer): ... here.  Add into union with klass field.
11136         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11137         Update to changes.
11138
11139 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11140
11141         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11142         the wrapper type enum and reduce relocations.
11143
11144 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11145
11146         * reflection.c (inflate_mono_method): Reuse method instantiation
11147         from the generic method, if available.
11148
11149 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11150
11151         * marshal.c (emit_marshal_variant): Fix conv_arg
11152         type in last commit, based on whether parameter is byref.
11153         
11154 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11155
11156         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11157         marshalling.
11158         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11159         MONO_TYPE_OBJECT back for VARIANT support.
11160
11161 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11162
11163         * marshal.c, marshal.h, icall-def.h: Implement 
11164         Marshal.ReAllocCoTaskMem.
11165
11166 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11167
11168         * marshal.c: memory retention fixes: use the proper
11169         image cache for runtime_invoke method lookups.
11170
11171 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11172
11173         * mempool.c: added code to help debug mempool allocations.
11174
11175 2007-01-11  Dick Porter  <dick@ximian.com>
11176
11177         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11178         support (experimenting with faking it with IP_MTU_DISCOVER for
11179         systems that don't have IP_DONTFRAGMENT.)
11180         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11181         icall.
11182
11183         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11184
11185         * socket-io.h: Add new fields to MonoSocketAsyncResult
11186         corresponding to the new ones in Socket.cs.
11187
11188 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11189
11190         Fix IronPython regression mentioned in #80249
11191         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11192         'cached_context' field, since it may have been initialized as a
11193         side-effect of metadata parsing.
11194
11195         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11196         (_MonoGenericClass.cached_class): Move here and rename from lone
11197         remaining field of ...
11198         (_MonoInflatedGenericClass): ... this.  Remove.
11199         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11200         to changes.
11201
11202         Fix mcs/tests/test-128.cs regression.
11203         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11204         2007-01-10 change below.
11205         [MONO_TYPE_OBJECT]: Recurse into array case.
11206
11207 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11208
11209         * class-internals.h (mono_get_inflated_generic_class): Remove.
11210         * class.c (mono_get_inflated_generic_class): Remove.
11211         (mono_generic_class_get_class): Rename from
11212         mono_class_create_generic.
11213         (mono_class_from_mono_type) [GENERICINST]: Use it.
11214         * reflection.c, metadata.c: Update to changes.  Use
11215         'mono_class_from_mono_type'.
11216
11217 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11218
11219         * reflection.c: use passed type when encoding an array element
11220         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11221
11222 2007-01-09  Robert Jordan  <robertj@gmx.net>
11223
11224         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11225         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11226         Fixes bug #80392.
11227
11228 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11229
11230         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11231
11232         * object.c (set_value): Avoid aliasing between type->data.klass
11233         and type->data.generic_class.
11234
11235         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11236
11237 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11238
11239         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11240         between type->data.klass and type->data.generic_class.
11241
11242 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11243
11244         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11245         value in out parameters.
11246
11247 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11248
11249         Simplify invariant for MonoGenericClass::klass field.
11250         * class.c (mono_class_create_generic): Verify 'klass' is null.
11251         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11252         initialize 'klass' field.
11253
11254 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11255
11256         Ongoing work to avoid redundant data and simplify invariants.
11257         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11258         'generic_class', and change type to a GenericInst.
11259         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11260         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11261
11262 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11263
11264         * class.c : skip io-layer under PLATFORM_WIN32.
11265
11266 2007-01-03  Tor Lillqvist  <tml@novell.com>
11267
11268         Fix #80305: In a bundled executable, look in the bundled exe
11269         assembly to determine the runtime version. Add the possibility to
11270         bundle also the machine.config file.
11271         
11272         * assembly.c (mono_assembly_open_from_bundle): Make
11273         non-static. Allow being called even if we have no bundled
11274         assemblies, and return NULL right away in that case.
11275
11276         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11277         here.
11278
11279         * domain.c (app_config_parse): Take an assembly exe file name as
11280         parameter instead of a config file name. Check for a bundled
11281         config file for that assembly by calling
11282         mono_config_string_for_assembly_file() (see below) before looking
11283         for one in the file system.
11284         (get_runtimes_from_exe): Corrsponding change to call of
11285         app_config_parse().
11286         (get_runtimes_from_exe): Check for bundled assembly exe file first
11287         by calling mono_assembly_open_from_bundle(). If no bundled
11288         assembly exe file is found, call mono_image_open() as before to
11289         look it up in the file system.
11290
11291         * mono-config.c: Add variable bundled_machinec_onfig.
11292         (mono_config_string_for_assembly_file): New function.
11293         (mono_config_for_assembly): Move code snippet that looks for a
11294         bundled assembly .config file into the above new function. Call
11295         it.
11296         (mono_register_machine_config, mono_get_machine_config): New
11297         functions to set and retrieve
11298
11299         * assembly.h: Declare mono_register_machine_config().
11300
11301         * mono-config.h: Declare mono_get_machine_config() and
11302         mono_config_string_for_assembly_file().
11303
11304         * icall.c: No declaration of environ necessary on Win32. It is
11305         declared (as a macro expanding to a function call) in stdlib.h.
11306         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11307         New internal mono function. Returns the value of
11308         mono_get_machine_config() as a Mono string.
11309
11310         * icall-def.h: Add get_bundled_machine_config().
11311
11312 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11313
11314         Remove redundant field
11315         * class-internals.h (_MonoGenericContext.container): Remove field.
11316         * loader.c (mono_method_get_signature_full): Don't parse a
11317         "container" for a signature parse when the signature is inflated
11318         immediately.
11319         (method_from_methodspec): Likewise, for a generic_inst.
11320         * class.c, metadata.c, reflection.c: Update to changes.
11321
11322 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11323
11324         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11325         'cached_context', and change semantics -- it starts off NULL, and
11326         is initialized on demand.
11327         * class.c (mono_generic_class_get_context): New accessor to
11328         replace 'context' field accesses.
11329         (mono_class_get_context): New helper.
11330         (*): Update to changes.
11331         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11332
11333 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11334
11335         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11336         before the memcpy.   Fixes Marshal2 regression.
11337
11338 2007-01-02  Jb Evain  <jbevain@gmail.com>
11339
11340         * blob.h: add a MONO_TYPE_ENUM definition
11341         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11342         fix the encoding of arrays of enums in custom attributes.
11343
11344         Fixes #79666.
11345
11346 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11347
11348         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11349         string is null terminated, but only cut the string short if it
11350         overflows the buffer.   
11351         
11352         (mono_string_to_byvalstr): Also fix this routine.   The code here
11353         was not properly terminating a string (it was only terminated
11354         because of the previous catch-all memset). 
11355
11356         I left the memset, because I do not know if applications expect
11357         the runtime to clear this region. 
11358
11359         Fixes #79944.
11360
11361         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11362         Clear the error before returning to unmanaged code to prevent the
11363         runtime from being confused later on (fixes  80420).
11364         (ves_icall_type_from_name): Always call mono_loader_clear_error
11365         after parsing a type that could have failed.
11366         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11367
11368         * loader.c (mono_loader_clear_error): Fix indentation.
11369
11370 2006-12-28  Martin Baulig  <martin@ximian.com>
11371
11372         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11373
11374 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11375
11376         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11377         getting a token for an EnumBuilder.
11378
11379 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11380
11381         * reflection.c: be more careful in case resource generation
11382         fails to create the data array.
11383
11384 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11385
11386         * sgen-gc.c: write barrier for clone and fix unregister handles.
11387
11388 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11389
11390         * reflection.c: some fixes needed in the generics code for the moving GC.
11391
11392 2006-12-22  Robert Jordan  <robertj@gmx.net>
11393
11394         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
11395         account. Fixes bug #80299.
11396
11397 2006-12-21  Raja R Harinath  <rharinath@novell.com>
11398
11399         Fix WaitHandle usage in delegates.
11400         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
11401         * object.c (mono_wait_handle_new): Use the property set method to
11402         initialize the handle.
11403         (mono_wait_handle_get_handle): New.
11404         * threadpool.c (mono_async_invoke): Use it.
11405         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
11406         Likewise.
11407         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
11408
11409 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
11410
11411         * marshal.c (emit_marshal): Call emit_marshal_variant and
11412         emit_marshal_com_interface when applicable.
11413         (emit_marshal_variant, emit_marshal_com_interface): Add
11414         methods for this case and remove if's from emit_marshal_object.
11415         
11416 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
11417
11418         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
11419
11420 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
11421
11422         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
11423         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
11424         and GlobalFree on Windows. Remove FIXME.
11425
11426 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11427
11428         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
11429         implementation for managed objects.
11430
11431 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11432
11433         * object.c: implemented code to be used for checking
11434         that no reference field overlaps with non-references.
11435
11436 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11437
11438         * threadpool.c: fix queue code to be compatible with the
11439         moving GC.
11440
11441 2006-12-18  Miguel de Icaza  <miguel@novell.com>
11442
11443         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
11444         in structures by throwing ArgumentNullException.
11445
11446         (emit_marshal_safehandle): Also when they are null parameters.
11447
11448         (emit_marshal_safehandle): Add support for ref
11449         SafeHandles parameters
11450
11451 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11452
11453         * profiler.c: updated to use the mono-dl API instead of
11454         gmodule.
11455
11456 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11457
11458         * profiler.c: updated to use the mono-dl dynamic loading
11459         API instead of gmodule.
11460
11461 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11462
11463         * profiler.c: use readlink, older versions of glib don't have
11464         g_file_read_link ().
11465
11466 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11467
11468         * profiler.c: try to detect the path to mono if libc fails to provide
11469         a useful name (bug #80286).
11470
11471 2006-12-16  Raja R Harinath  <rharinath@novell.com>
11472
11473         Fix #80242
11474         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
11475         instance, use the generic type definition instead.
11476         (ves_icall_Type_GetNestedTypes): Likewise.
11477         * class.c (mono_class_create_generic): Always set the
11478         nested_classes of a generic instance to NULL, even if the generic
11479         type definition has nested types.
11480
11481 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
11482
11483         * marshal.c (mono_string_from_bstr): Revert previous Windows change
11484         and fix on Linux.
11485         
11486 2006-12-15  Miguel de Icaza  <miguel@novell.com>
11487
11488         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
11489         my arguments were in the wrong order.   I also fixed the Windows
11490         version which seems to have had the same issue.
11491
11492         (mono_free_bstr): On Unix, this is g_free.
11493         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
11494         conversions (for the tests in corlib to pass).
11495
11496 2006-12-14  Miguel de Icaza  <miguel@novell.com>
11497
11498         * marshal.c (emit_ptr_to_object_conv): For now, ignore
11499         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
11500         exception if a ref SafeHandle in a struct has changed).
11501         
11502         (emit_struct_conv): Do not perform layout checks for classes
11503         derived from SafeHandle, as those are specially handled. 
11504
11505         (emit_object_to_ptr_conv): Add support for
11506         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
11507
11508         (emit_marshal_safehandle): Implement conversion of return values
11509         of safehandles (MARSHAL_ACTION_CONV_RESULT).
11510         
11511         * threads.c: WaitHandle now is compiled with two different handles
11512         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
11513         for 2.0.
11514         
11515         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
11516         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
11517         these routines to cope with both kinds of fields.
11518
11519 2006-12-12  Miguel de Icaza  <miguel@novell.com>
11520
11521         * metadata.c (mono_type_to_unmanaged): Handle the case where
11522         type->data.klass is a SafeHandle, and in that case, return the
11523         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
11524         MONO_MARSHAL_CONV_SAFEHANDLE. 
11525
11526 2006-12-11  Miguel de Icaza  <miguel@novell.com>
11527
11528         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
11529         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
11530         calling emit_marshal_object.
11531
11532         (emit_marshal_safehandle): Implement marshalling of
11533         SafeHandle parameters (no ref support yet).
11534
11535         (MarshalAction): Document the defines as I implement
11536         them for SafeHandle.
11537
11538         (emit_marshal_object): indentation police.
11539
11540         * class-internals.h: Define MonoSafeHandle.
11541         Add safehandle_class to MonoDefaults type.
11542
11543         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
11544         list of classes to check for fields. 
11545
11546         * domain.c (mono_init_internal): Add SafeHandle to the list of
11547         mono_defaults loaded.
11548
11549 2006-12-15  Raja R Harinath  <rharinath@novell.com>
11550
11551         Fix #80253
11552         * reflection.c (mono_reflection_bind_generic_parameters): If the
11553         generic type definition is a type builder, ensure that it is fully
11554         initialized before instantiating it.  Kill some dead code.
11555
11556 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11557
11558         * object.c: clear the loader_error () before loading
11559         more metadata stuff (bug #80258).
11560
11561 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
11562
11563         * icall.c, icall-defs.h: type modifiers icalls for
11564         parameters and properties.
11565
11566 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11567
11568         * object.c, icall.c: fixed warnings.
11569
11570 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11571
11572         * marshal.c: fixed a couple of leaks and coding style in a few places.
11573
11574 2006-12-08  Dick Porter  <dick@ximian.com>
11575
11576         * process.c: Cope with NULL ProcessStartInfo arguments on windows
11577         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
11578         80173.
11579
11580 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11581
11582         * process.c: ProcessStartInfo may have only filename set and
11583         arguments can be NULL.
11584
11585 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11586
11587         * icall.c: fix leak found by Robert Jordan.
11588
11589 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11590
11591         * marshal.c, marshal.h: generate managed method to access an element
11592         of a multi-dimensional array.
11593
11594 2006-11-30  Paolo Molaro (lupus@ximian.com)
11595
11596         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
11597
11598 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11599
11600         * icall.c: back out GetFields () fix until the serialization code is
11601         fixed to not depend on the incorrect behaviour.
11602
11603 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11604
11605         * profiler.c: provide defaults if none are set.
11606
11607 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11608
11609         * Makefile.am, attrdefs.h: new public header file with
11610         constants for attributes for use by embedders.
11611
11612 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11613
11614         * icall.c: GetFields () fix for bug #80064.
11615
11616 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
11617
11618         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
11619         removed long unused icalls.
11620
11621 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
11622   
11623         * marshal.c: 
11624                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
11625                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
11626                 can be generated without a delegate class.
11627                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
11628         
11629         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11630
11631 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11632
11633         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
11634         #80069.
11635
11636 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11637
11638         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
11639         icall-def.h: added icalls needed by System.GC.
11640
11641 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
11642
11643         * loader.c: ensure the class in catch clauses is handled
11644         correctly for generics methods (fixes bug#79980).
11645
11646 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11647
11648         * monitor.h, monitor.c: added mono_locks_dump () function
11649         to help debug deadlocks involving managed locks.
11650
11651 2006-11-13  Dick Porter  <dick@ximian.com>
11652
11653         * file-io.c (get_file_attributes): If the file is a symlink try
11654         and get the stat data for the target, but also add the
11655         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
11656         the specs for the windows symlink support, but will probably have
11657         to be reworked when I have test data from a vista machine.  Fixes
11658         bug 79887.
11659
11660 2006-11-13  Dick Porter  <dick@ximian.com>
11661
11662         * gc.c (mono_domain_finalize): 
11663         * marshal.c (mono_delegate_begin_invoke): 
11664         * threadpool.c (socket_io_init, mono_thread_pool_init)
11665         (mono_thread_pool_finish): 
11666         * monitor.c (mono_monitor_try_enter_internal): 
11667         * threads.c (mono_thread_resume, mono_thread_init)
11668         (mono_thread_suspend_all_other_threads)
11669         (mono_thread_execute_interruption): 
11670         * appdomain.c (mono_domain_unload): Check for NULL error returns
11671         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
11672         75733.
11673
11674 2006-11-11  Miguel de Icaza  <miguel@novell.com>
11675
11676         * process.c
11677         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
11678         Only close the handle if the value of the handle is not
11679         INVALID_HANDLE_VALUE.  This just makes the process a bit more
11680         robust.
11681
11682         Improvement for #75733, so that we do not run into this problem. 
11683
11684         
11685         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
11686         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
11687         internal variables.  Fixes #79462 
11688         
11689
11690 2006-11-09  Dick Porter  <dick@ximian.com>
11691
11692         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11693         Use poll() not select().  Fixes bug 79397.
11694
11695 2006-11-09  Raja R Harinath  <rharinath@novell.com>
11696
11697         Fix #79872
11698         * assembly.c (mono_assembly_load_from_full): Check that the given
11699         image has an assembly manifest.
11700
11701 2006-11-09  Ankit Jain  <jankit@novell.com>
11702
11703         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
11704         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
11705         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
11706
11707 2006-11-07  Dick Porter  <dick@ximian.com>
11708
11709         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11710         Put the old resolver behaviour back for pre-2.0 profiles.
11711
11712 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
11713
11714         * threadpool.c: precise GC and locking fixes.
11715
11716 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
11717
11718         * class.c: don't load types that have an explicit unaligned
11719         managed reference. Provide better info in the TypeLoad exception.
11720         Part of the fix for bug #79744.
11721         * object.c: use the correct check for class type load issues.
11722
11723 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11724
11725         * class.c: enforce alignment of fields with managed references
11726         even when Pack=1 is forced by the user (bug #77788).
11727
11728 2006-11-03  Dick Porter  <dick@ximian.com>
11729
11730         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11731         If the address reverse lookup fails, return it as the hostname
11732         anyway.  Fixes bug 79721.
11733
11734 2006-11-03  Dick Porter  <dick@ximian.com>
11735
11736         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
11737         Fix build on Windows.
11738
11739 2006-11-02  Dick Porter  <dick@ximian.com>
11740
11741         * icall-def.h: 
11742         * object-internals.h: 
11743         * exception.c (mono_get_exception_thread_interrupted): 
11744         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
11745         Fixes bug 74525.
11746
11747         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
11748         Check for pending Thread.Interrupt.
11749
11750 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
11751         * loader.c: Fixed bug 79684.
11752
11753 2006-10-27  Dick Porter  <dick@ximian.com>
11754
11755         * file-io.c (get_file_attributes): Force symlinks to directories
11756         to be returned as a regular file.  Fixes bug 79733.
11757 2006-10-26  Dick Porter  <dick@ximian.com>
11758
11759         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
11760         CreateFile to open a directory then we need to set the
11761         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
11762
11763 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11764
11765         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
11766         friends.
11767
11768 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11769
11770         * sgengc.c: small cleanup of timer code.
11771
11772 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11773
11774         * sgen-gc.c: fix some warnings and start adding support for
11775         complete object removal on domain unload.
11776
11777 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
11778
11779         * assembly.c: build_assembly_name should not consider a version
11780         number without build or revision number invalid. Fixes bug #79715.
11781
11782 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
11783
11784         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
11785         call kernel32 function OutputDebugString directly.
11786         
11787         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11788         
11789 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
11790
11791         * reflection.c: small cleanup, using a function to insert a MonoString
11792         in the string heap.
11793
11794 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
11795
11796         * reflection.c: moving GC fixes.
11797
11798 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11799
11800         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
11801         all the objects with finalizers belonging to an unloading appdomain.
11802
11803 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11804
11805         * sgen-gc.c: added ability to allocate even when the nursery is fully
11806         pinned and fixed a couple of bugs.
11807
11808 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11809
11810         * threads.h: Revert the last change for now.
11811
11812         * threads.h (mono_thread_get_pending_exception): Rename this to
11813         mono_thread_get_undeniable_exception ().
11814
11815 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
11816
11817         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
11818         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
11819         when fname does not refer to valid assembly. This result in a more
11820         meaningful error message.
11821         * exception.c: added mono_get_exception_bad_image_format2 which 
11822         constructs a BadImageFormatException using the ctor taking a custom
11823         message and the file name. Passing in a NULL msg results in a default
11824         message.
11825         * exception.h: define mono_get_exception_bad_image_format2 function.
11826         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
11827         when file name pointed to an invalid IL image. Use 
11828         mono_get_exception_file_not_found2 to construct FileNotFoundException,
11829         as this results in a more meaningful error message.
11830
11831 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11832
11833         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
11834         #79465.
11835
11836 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
11837
11838         * metadata.c (mono_type_size): Change the align parameter to guint32 for
11839         consistency with the other _size functions.
11840         (mono_type_stack_size): Ditto.
11841
11842         * class.c object.c icall.c: Fix warnings caused by the above change.
11843
11844         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
11845
11846         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
11847
11848         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
11849
11850 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
11851
11852         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
11853         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
11854         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
11855         threadpool.h, threads-types.h: mark more internal functions.
11856
11857 2006-10-11  Dick Porter  <dick@ximian.com>
11858
11859         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11860         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
11861         reproduce the bug even before applying the fix.)
11862
11863 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
11864
11865         * reflection.c: allow retrieving attributes for arguments in generic
11866         methods (bug #79241).
11867
11868 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
11869
11870         * debug-mono-symfile.c: properly check fopen () result (found by
11871         coverity).
11872
11873 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
11874
11875         * reflection.c: make error message clearer and fixed two
11876         issuelets found by Coverity.
11877
11878 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
11879
11880         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
11881
11882 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
11883
11884         * object-internals.h, gc-internal.h, profiler-private.h:
11885         mark internal functions.
11886
11887 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11888
11889         * reflection.c: put data in the text section.
11890         * icall.c: recognize more types in type_from_typename ().
11891         * process.c, marshal.c: added some GC FIXMEs.
11892
11893 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11894
11895         * loader.c: check for NULL before initializing.
11896
11897 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
11898
11899         * gc.c (finalizer_thread): Use a non-alertable wait here.
11900
11901         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
11902         until the correct solution is found.
11903
11904 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
11905
11906         * reflection.c (mono_module_get_object): Avoid an assert when operating on
11907         modules with no metadata. Fixes #79596.
11908
11909         * image.c (load_metadata_ptrs): Put back the error message when
11910         the #- heap is encountered since the support is not complete yet.
11911
11912 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
11913
11914         * gc.c: do not allow the user to SuppressFinalize () a
11915         delegate because it would leak the trampoline if present.
11916
11917 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
11918
11919         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
11920         PropertyPtr table.
11921
11922 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
11923
11924         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
11925
11926         * metadata.c (mono_metadata_get_param_attrs): Ditto.
11927
11928         * row-indexes.h: Add definitions for *Ptr tables.
11929
11930         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
11931
11932         * metadata.c (mono_metadata_translate_token_index): New helper function to
11933         translate table indexes used in uncompressed metadata.
11934         (mono_metadata_decode_table_row): Ditto.
11935         (mono_metadata_decode_table_row_col): Ditto.
11936
11937         * metadata.c: Add table schema for *Ptr tables.
11938
11939         * class.c loader.c: Use the new helper function to access the affected metadata
11940         tables.
11941         
11942         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
11943         #38532.
11944         
11945 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
11946
11947         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
11948         sequences which can be unbounded in size. Fixes #79583.
11949
11950 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
11951
11952         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
11953         static initialization.
11954
11955         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
11956
11957         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
11958
11959         * domain.c (mono_domain_free): Free up type_init_exception_hash.
11960
11961         * object.c (mono_runtime_class_init): Implement correct semantics when a static
11962         ctor fails, i.e. throw the same exception on subsequent accesses.
11963         
11964 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
11965
11966         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
11967         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
11968         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
11969         Handle marshalling of interfaces and VARIANTs contained in structs.
11970         
11971         Code is contributed under MIT/X11 license.
11972         
11973 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
11976         
11977         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
11978         mempool.
11979
11980 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11981
11982         * console-io.c: ignore previous SIGINT handler.
11983
11984 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
11985
11986         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
11987         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
11988         #79460, #79461, #79485.
11989
11990         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
11991
11992         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
11993         #79217.
11994
11995 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
11996
11997         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
11998         could be generated from it.
11999
12000 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
12001
12002         * rand.c: fix read loop to correctly handle EINTR.
12003
12004 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12005
12006         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
12007         internal calls are defined to keep methods closer to the declaring
12008         type and allow a significant reduction in runtime relocations and
12009         memory usage.
12010
12011 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
12012
12013         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
12014         exception message to have FileNotFoundException use the default
12015         assembly load error message. Fixes bug #79426.
12016         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
12017
12018 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12019
12020         * threadpool.c: (start_thread_or_queue) use the root domain when
12021         creating the thread instead of the async object one.
12022
12023 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
12024
12025         * class.c, object.c, class-internals.h, reflection.c:
12026         for arrays, store element_size inside MonoClass (speedup
12027         for array object creation).
12028
12029 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
12030
12031         * icall.c: fixed CodeBase to use the file name and not the module
12032         name (bug #79365).
12033
12034 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12035
12036         * mono-debug.c, mono-debug.h: export find_method as
12037         mono_debug_find_method ().
12038
12039 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12040
12041         * debug-helpers.c, class-internals.h: added a few functions useful
12042         when debugging under gdb.
12043
12044 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12045
12046         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
12047         characters that need special handling.
12048
12049 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12050
12051         * mono-config.c: make the os/cpu specification more flexible,
12052         allowing lists and negation.
12053
12054 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
12055
12056         * marshal.c: COM Interop fixes. Handle case where method->klass.
12057         is interface. Handle BSTR/MonoString when null. Use CDECL as 
12058         calling convention on non-windows platforms. This is for
12059         compatibility with XPCOM and MainWin COM.
12060         
12061         Code is contributed under MIT/X11 license.
12062         
12063
12064 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
12067         correctly. Fixes #79217.
12068
12069         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
12070
12071 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
12072
12073         * mono-config.c: allow both an os and cpu attribute for dllmap
12074         and dllentry elemnets to enable a single config file to be used
12075         for multiple architectures.
12076
12077 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12078
12079         * loader.c: MonoLoaderError was cleared too soon on load failure.
12080         Fixes bug #79424.
12081
12082 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12083
12084         * icall.c: use the defining class vtable when accessing a
12085         static field, not a pobblibly derived class.
12086
12087 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * icall.c string-icalls.c: Remove references to unicode.h.
12090
12091         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12092
12093         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12094
12095         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12096         indicating the image where custom marshaller types should be looked up.
12097         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12098         custom marshallers, instead of corlib. Fixes #79425.
12099
12100 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12103
12104 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12105
12106         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12107         Implement Environment.ProcessorCount.
12108         
12109         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12110         Implement Environment.ProcessorCount.
12111         
12112         * icall.c: 
12113         Add Environment.ProcessorCount icall.
12114         
12115         Patch by Jason McFall.
12116
12117 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12118
12119         * assembly.c: don't append .exe/.dll when the filename already contains
12120         one of those extensions.
12121
12122 2006-09-12  Martin Baulig  <martin@ximian.com>
12123
12124         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12125         to array interfaces.
12126
12127 2006-09-11  Martin Baulig  <martin@ximian.com>
12128
12129         * reflection.c (mono_image_build_metadata): Create the
12130         MethodImpl's after emitting all types and methods, so we don't
12131         need another fixup pass for them.
12132
12133 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12134
12135         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12136         change.
12137
12138 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12139
12140         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12141         unload.
12142
12143 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12144
12145         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12146         args is not set. Fixes #78926.
12147
12148 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12149
12150         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12151
12152         * image.c (load_class_names): Move this to class.c, and rename it to 
12153         'mono_image_init_name_cache'.
12154         (load_modules): Fix a warning.
12155
12156         * class.c icall.c image.c: Initialize image->name_cache lazily.
12157
12158         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12159         on its name using information in the AOT file.
12160
12161         * class.c (mono_class_from_name): Use the new hook function.
12162
12163 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12164
12165         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12166         correctly.
12167
12168         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12169         Fixes #79289.
12170         
12171 2006-09-06  Martin Baulig  <martin@ximian.com>
12172
12173         * icall.c (mono_lookup_internal_call): Small fix.
12174
12175 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12176
12177         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12178         double g_free.
12179
12180 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12181
12182         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12183         when --debug is specified.
12184
12185 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12186
12187         * class.c (setup_generic_array_ifaces): Fix a warning.
12188
12189 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12190
12191         * Temporarily remove the patch to assemly.c that checks the
12192         assembly versions as it breaks our gacutil.
12193
12194 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12195
12196         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12197
12198         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12199         a net 1.0 runtime.
12200
12201         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12202         created using the default ctor. Fixes #79152.
12203         (mono_string_builder_to_utf16): Ditto.
12204
12205 2006-09-01  Martin Baulig  <martin@ximian.com>
12206
12207         Fix handling of the generic array interfaces.
12208
12209         * class-internals.h
12210         (MonoDefaults): Removed `generic_array_class' and added
12211         `generic_ilist' class.
12212
12213         * class.c
12214         (mono_bounded_array_class_get): Add the new generic array interfaces.
12215         (setup_generic_array_ifaces): New static method; create vtable
12216         entries for each method in the generic array interfaces.
12217
12218         * metadata.c
12219         (select_container): Allow "parent-less" generic methods.
12220
12221         * marshal.c
12222         (mono_marshal_get_generic_array_helper): New public method.
12223
12224         * icall.c
12225         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12226         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12227         moved the interncall into System.Array.
12228
12229 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12230
12231         A few more cases of avoiding work on types with ->byref set.
12232         Has the real fix for #79238
12233         * icall.c (is_generic_parameter): New helper.
12234         (ves_icall_Type_GetGenericParameterPosition): Use it.
12235         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12236         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12237         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12238         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12239         reference types.
12240         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12241         reference types.
12242         (ves_icall_Type_get_IsGenericInstance): Likewise.
12243         (ves_icall_Type_get_IsGenericType): Likewise.
12244
12245 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12246
12247         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12248         class if possible.
12249
12250         * mempool.h (mono_mempool_get_allocated): New helper function.
12251
12252         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12253         change.
12254
12255         * mempool.c: Fix warnings and the calculation of stats.
12256
12257         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12258
12259         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12260
12261         * loader.c (mono_get_method_from_token): Update method_count stat.
12262
12263         * class-internals.h (MonoStats): Add some stats.
12264
12265 2006-08-31 Robert Jordan  <robertj@gmx.net>
12266
12267         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12268         with managed variants.
12269         All code is contributed under the MIT/X11 license.
12270         
12271 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12272
12273         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12274         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12275
12276         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12277
12278         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12279         with cycles in classes.
12280
12281         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12282
12283         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12284         missing a [MarshalAs] directive. Fixes #79203.
12285
12286         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12287         klass->marshal_info. Fixes #79217.
12288
12289 2006-08-30  Martin Baulig  <martin@ximian.com>
12290
12291         Committing a patch from Joachim Ante <joe@otee.dk>:
12292         Add support for binary data symbol stores.
12293
12294         * debug-mono-symfile.c
12295         (mono_debug_open_mono_symbol_file): Renamed into
12296         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12297         arguments.
12298
12299         * mono-debug.c
12300         (mono_debug_open_image): Added `raw_contents' and `size' args.
12301         (mono_debug_init_2_memory): New public function.
12302
12303 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12304
12305         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12306
12307 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12308
12309         * appdomain.c: implement support for ShadowCopyFiles.
12310
12311 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12312
12313         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12314         when value is NULL (and should remove CID #51).
12315
12316 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12317
12318         * image.c: moved 2 functions to ../utils.
12319
12320 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12321
12322         * gc.c: cope with the target object of a GC handle being NULL
12323         (bug #78877).
12324
12325 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12326
12327         * class.c: recursively check parent's explicit implementations
12328         of interface methods (fixes bug #79125).
12329
12330 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12331
12332         * filewatcher.c: Avoid warnings when building, do not redefine
12333         constants that are defined.
12334
12335         Remove warnings.
12336
12337 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12338
12339         * image.c: don't fail when the link points to an absolute path.
12340
12341 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12342
12343         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12344         Fix CID #3.
12345
12346 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12347
12348         * image.c (full_path): A new method used to obtain the actual path
12349         of an assembly even in the presence of symbolic links.  
12350
12351         This is necessary for the case where we are running a binary that
12352         has been GACed, but we are using the "published" path name
12353         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12354         file in the GAC.
12355
12356         This was the source of the failure for the `xsp' command with the
12357         recent AppDomain changes, as far as the runtime was concerned,
12358         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12359         $prefix/mono/gac/blah/version/blah.exe.
12360
12361         (do_mono_image_open): use full path
12362
12363 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12364
12365         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12366
12367 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12368
12369         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12370         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12371
12372 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12373
12374         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12375         small structures. Fixes #78990.
12376
12377 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12378
12379         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12380
12381         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12382
12383 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12384
12385         * appdomain.c:
12386         * marshal.c: don't load all the assemblies from a domain into newly
12387         created ones. The new domains might have different rules and load
12388         assemblies from different locations. Fixes bug #76757.
12389
12390         Patch by Lluis. Conflicts resolved by Brian Crowell.
12391
12392 2006-08-16  Alp Toker  <alp@atoker.com>
12393
12394         * socket-io.c: First half of the fix for #79084.
12395         Set sa_size to the length of the content, not that of the struct.
12396         Don't add NULL suffix to the content, this should be done in
12397         managed code if needed.
12398
12399 2006-08-14  Raja R Harinath  <rharinath@novell.com>
12400
12401         Fix part of #79012
12402         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
12403         mono_metadata_parse_type returns NULL.
12404
12405 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
12406
12407         * normalization-tables.h : new file for string normalization data.
12408         * locales.c, locales.h, icall.c :
12409           added load_normalization_resource() for string normalization,
12410           and icall as well.
12411         * Makefile.am : added normalization-tables.h to the sources.
12412
12413 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * marshal.c: Add more helper functions to reduce code duplication and use them
12416         everywhere.
12417
12418 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
12419
12420         * marshal.c: Fix non-x86 stdcall warnings.
12421         
12422         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
12423         them everywhere.
12424
12425 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
12426
12427         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
12428         type check on multi-dimensional arrays. Fixes #79000.
12429
12430 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12431
12432         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
12433         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
12434         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
12435         * class-internals.h: add is_com_object to class structure.
12436         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
12437         null checks to COM object marshalling. Fix .ctor call on RCW.
12438         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
12439         
12440         All code is contributed under the MIT/X11 license.
12441
12442 2006-08-09  Dick Porter  <dick@ximian.com>
12443
12444         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
12445         racing mono_monitor_allocator_lock() somewhere, so don't delete
12446         the critical section for now.  Found by running and exiting
12447         monodevelop.
12448
12449 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
12450
12451         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
12452         (ves_icall_System_ComObject_FindInterface): Ditto.
12453         (ves_icall_System_ComObject_CacheInterface): Ditto.
12454
12455         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
12456         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
12457
12458 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12459
12460         * threadpool.c: treat pipes from process asynchronous reads as sockets
12461         when reading from them, so we get select/poll or epoll to wait for
12462         data.
12463
12464 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
12465
12466         * loader.c: Fix a typo (CID #233) in the null check.
12467
12468 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
12469
12470         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
12471         Hopefully fixes #78949.
12472         
12473         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
12474         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
12475         bytes. Fixes #78972.
12476
12477 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12478
12479         * filewatcher.c: we need to set errno here.
12480
12481 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12482
12483         * filewatcher.c: let Win32Exception get the error value.
12484
12485 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12486
12487         * filewatcher.c: translate errno into win32 errors for Win32Exception
12488         to know what happened.
12489
12490 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12491
12492         * threadpool.c: Fix more warnings.
12493
12494         * assembly.c (search_loaded): Fix warnings.
12495
12496         * threadpool.c (mono_thread_pool_finish): Fix warnings.
12497         (mono_async_invoke): Ditto.
12498
12499 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
12500
12501         * object.c (mono_remote_class_vtable): Need to create proxy vtable
12502         entries for __ComObject type in addition to ComImport types.
12503         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
12504         about hash table.
12505         
12506         All code is contributed under the MIT/X11 license.
12507
12508 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12509
12510         * image.c: avoid tentative loading of modulerefs that contain
12511         no metadata (P/Invoke library names).
12512
12513 2006-07-28  Dick Porter  <dick@ximian.com>
12514
12515         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
12516         mono_loader_lock() somewhere, so don't delete the critical section
12517         for now.  Found by running and exiting monodevelop.
12518
12519 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12520
12521         * filewatcher.c: define the inotify syscalls when we're building on
12522         linux and have sys/syscall.h. The build system might not have support
12523         for inotify but the target system might have it.
12524
12525 2006-07-26  Miguel de Icaza  <miguel@novell.com>
12526
12527         * domain.c: Documentation updates.
12528
12529         * loader.c (mono_free_method): Do not release the method
12530         information if we are being profiled, as profilers will use this
12531         information at shut down to present some data to the user.
12532
12533         This is needed so that the profiler does not crash, as the
12534         profiler tends to keep MonoMethods around, and they might become
12535         invalid if we free these.
12536
12537         (mono_get_method_constrained): Return the original CIL stream
12538         method as well, so verification can be performed against it.
12539
12540 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12541
12542         * filewatcher.[ch]: support for inotify file system watcher.
12543         * icall.c: add new internal calls for the inotify file system watcher.
12544
12545 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12546
12547         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
12548         #78888.
12549
12550 2006-07-20  Dick Porter  <dick@ximian.com>
12551
12552         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
12553         warning.
12554
12555 2006-07-20  Dick Porter  <dick@ximian.com>
12556
12557         * threads.c (start_wrapper): Do the thread cleanup while we still
12558         hold a reference to its object.  Fixes bug 78123.
12559
12560 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
12561
12562         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
12563         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
12564           "managed-to-managed".
12565         * icall.c: Redirect string constructors that take sbyte* to
12566           ves_icall_System_String_ctor_RedirectToCreateString.
12567         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
12568           to CreateString () methods with matching signature.
12569         * reflection.c: Use original security informations for
12570           MONO_WRAPPER_MANAGED_TO_MANAGED.
12571         * security-manager.c: Use original security informations for
12572           MONO_WRAPPER_MANAGED_TO_MANAGED.
12573         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
12574           that is a placeholder and only its address should be used.
12575         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
12576           that is a placeholder and only its address should be used.
12577
12578 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12579
12580         Begin implementing COM Interop.
12581         * appdomain.c: Increment corlib version.
12582         * class.c: Set ComImport classes' parent to __ComObject.
12583         * loader.c: Mark cominterop methods as such.
12584         * domain.c: Add __ComObject class to MonoDefaults structure.
12585         * image.c: Add 2 hashtables to the image for COM Interop related methods
12586         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
12587         using the mempool allocator
12588         
12589         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
12590         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
12591         declaration for mono_metadata_type_dup_mp.
12592         
12593         * debug-helpers.c: Added strings for two additional wrapper types
12594         * object.c: Create proxy objects for ComImport classes
12595         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
12596         and added __ComObject class to MonoDefaults structure.
12597         
12598         * object-internals.h: Finish MonoRealProxy definition, and add definition of
12599         MonoComInteropProxy and MonoComObject.
12600         
12601         * marshal.c: Added support for COM Interop
12602         (signature_cominterop): Converts managed signature to corresponding
12603         unmanaged COM signature.
12604         (cominterop_get_function_pointer): gets unmanaged function pointer via
12605         COM object vtable
12606         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
12607         (cominterop_get_method_interface): returns interface type that method is defined on
12608         (mono_mb_emit_cominterop_call): emits native call to function pointer
12609         gotten from vtable
12610         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
12611         that matches signature of unmanaged function.
12612         (cominterop_get_native_wrapper): wrapper around adjusted method call.
12613         (cominterop_get_invoke): forwards call from proxy to __ComObject
12614         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
12615         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
12616         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
12617         
12618         * marshal.h: Added Marshal icall declarations.
12619         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
12620         so we can access them in finalizer
12621         
12622 2006-07-14  Dick Porter  <dick@ximian.com>
12623
12624         * object.c (mono_type_initialization_cleanup): Fix a race
12625         condition by temporarily commenting out the critical section
12626         deletion.
12627
12628 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
12629
12630         * reflection.c (create_custom_attr): Fix some warnings.
12631         (create_custom_attr_data): Ditto.
12632         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
12633         types. Fixes #78855.
12634
12635 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
12636
12637         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
12638
12639         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
12640
12641 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * reflection.c (resolve_object): Add support for DynamicMethod.
12644
12645         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
12646         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
12647
12648 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
12649
12650         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
12651         don't leak GPtrArray's pdata has we have no use (nor free) for it.
12652
12653 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
12654
12655         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
12656         Fixes #77888.
12657
12658 2006-06-30  Raja R Harinath  <rharinath@novell.com>
12659
12660         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
12661         slightly: remove a shadow local variable.
12662
12663 2006-06-29  Raja R Harinath  <rharinath@novell.com>
12664
12665         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
12666         definition that introduces the virtual function slot.
12667         Also fix Coverity #105.
12668
12669 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
12670
12671         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
12672         for dynamic assemblies. Fixes #78724.
12673
12674 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
12675
12676         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
12677         Fixes #78722.
12678
12679 2006-06-21  Martin Baulig  <martin@ximian.com>
12680
12681         * reflection.c
12682         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
12683         fixes #76484.
12684
12685 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12686
12687         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
12688
12689 2006-06-20  Raja R Harinath  <rharinath@novell.com>
12690
12691         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
12692         nor TYPEREFs.
12693         * class.c (mono_class_create_from_typespec): Add 'context' argument.
12694         Inflate result if necessary.
12695         (mono_class_get_full): Remove old version.  Rename from
12696         'mono_class_get' and add 'context' argument.  Pass it to
12697         ..._create_from_typespec.
12698         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
12699         (mono_ldtoken): Revert change below.
12700
12701 2006-06-20  Martin Baulig  <martin@ximian.com>
12702
12703         * class.c (mono_ldtoken): Don't pass the generic context to
12704         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
12705
12706 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
12707
12708         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
12709         and later freeing it. Fixes #78638.
12710
12711 2006-06-15  Miguel de Icaza  <miguel@novell.com>
12712
12713         * icall.c (mono_class_get_throw): Revert over-zealous error
12714         throwing, the caller for mono_class_get_throw will cope with
12715         errors when classes are not properly initialized already.
12716
12717         The code still copes with loader exceptions though.
12718
12719         Fixes the regression in reftype1 and reftype3 from the CAS tests.
12720         
12721 2006-06-14  Miguel de Icaza  <miguel@novell.com>
12722
12723         Fixes the `make run1' version of RuntimeAbort (to be commited,
12724         source is in Bugzilla).
12725         
12726         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
12727         FALSE on class loading failure instead of returning true.
12728
12729         * class.c (mono_class_create_from_typedef): It is possible for
12730         mono_metadata_interfaces_from_typedef_full to fail if a class is
12731         not found, cope with this.
12732         
12733
12734 2006-06-14  Dick Porter  <dick@ximian.com>
12735
12736         * socket-io.c: 
12737         * process.c: Fix a bunch of signed/unsigned warnings from gcc
12738         4.1.1
12739
12740 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
12741
12742         * culture-info-table.h : oops, forgot to make it nsync with r61548.
12743
12744 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12745
12746         * icall.c: Another fix for building mono in Visual Studio.
12747
12748 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12749
12750         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
12751         
12752 2006-06-09  Martin Baulig  <martin@ximian.com>
12753
12754         * debug-mono-symfile.c: Put this back and really fix it this
12755         time. Sorry for all the trouble.
12756
12757 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12758
12759         * icall.c (mono_class_get_throw): Fix a warning.
12760         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
12761         ReflectionTypeLoadException if needed. Fixes #78606.
12762
12763         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
12764         (mono_class_init): Ditto.
12765
12766         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
12767         ref_only exceptions.
12768         (mono_loader_clear_error): Make this work even if there is no error.
12769
12770 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
12771
12772         * object-internals.h marshal.c marshal.h icall.c: Implement method 
12773         Marshal.GetComSlotForMethodInfo using internal call.
12774
12775 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
12776
12777         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
12778         a function for signalling it.
12779
12780         * class.c (mono_class_from_typeref): Use the new kind of loader error when
12781         a referenced assembly is not found.
12782
12783         * loader.c (mono_loader_error_prepare_exception): Add support for 
12784         LOADER_ERROR_ASSEMBLY. Fix formatting.
12785
12786 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
12787
12788         * domain.c appdomain.c class-internals.h marshal.c: Add support 
12789         for VARIANT marshalling on windows and increment corlib version
12790         since Variant struct was added.
12791
12792 2006-06-03  Miguel de Icaza  <miguel@novell.com>
12793
12794         * debug-mono-symfile.c: Revert Martin's previous patch which broke
12795         stack trace line information:
12796
12797         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
12798         (Martin) when looking up B which is between A and C, return A not C.
12799
12800         Bug is #78573.
12801
12802         Thanks to Alexander Olk for tracking this down.
12803
12804 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12805
12806         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
12807         
12808         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
12809         avoid clobbering its value.
12810         (mono_string_to_lpstr): Fix a warning on windows.
12811
12812 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
12815
12816         * reflection.c loader.c: Removed references to 'dummy' flag.
12817
12818         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
12819
12820         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
12821         it gets GC tracking.
12822
12823         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
12824         GC tracking.
12825         
12826         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
12827
12828         * marshal.c threadpool.c: Update callers of mono_async_result_new.
12829
12830         * appdomain.c: Bump corlib version.
12831
12832 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
12833
12834         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
12835         CEE_STIND_REF when working with object references.
12836
12837 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
12840         Fixes #78539.
12841
12842 2006-05-30  Miguel de Icaza  <miguel@novell.com>
12843
12844         * loader.c (method_from_memberref): Fix argument value for
12845         mono_loader_set_error_method_load (I was passing the MonoClass
12846         instead of the class name char *).
12847
12848 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
12849
12850         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
12851         CEE_STIND_REF when working with object references.
12852
12853 2006-05-30  Martin Baulig  <martin@ximian.com>
12854
12855         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
12856         mono_method_full_name() change and replace the ':' with a '.'
12857         here.
12858
12859 2006-05-30  Martin Baulig  <martin@ximian.com>
12860
12861         * debug-mono-symfile.c
12862         (mono_debug_symfile_lookup_location): Fix the algorithm:
12863         when looking up B which is between A and C, return A not C.
12864
12865 2006-05-29  Martin Baulig  <martin@ximian.com>
12866
12867         * mono-debug.h
12868         (MonoDebugMethodInfo): Make the typedef public.
12869         (MonoDebugSourceLocation): New public struct.
12870
12871         * mono-debug.c
12872         (mono_debug_source_location_from_address): Removed.
12873         (mono_debug_source_location_from_il_offset): Removed.
12874         (mono_debug_il_offset_from_address): Removed.
12875         (mono_debug_address_from_il_offset): Removed.
12876         (mono_debug_lookup_method): New public function.
12877         (mono_debug_lookup_source_location): New public function; replaces
12878         the old mono_debug_source_location_from_*() functions; see the
12879         inline documentation.
12880         (mono_debug_free_source_location): New public function.
12881         (mono_debug_print_stack_frame): New public function; see the
12882         inline documentation.
12883
12884         * debug-mono-symfile.c
12885         (mono_debug_find_source_location): Renamed into
12886         mono_debug_symfile_lookup_location(); only take a
12887         `MonoDebugMethodInfo *' and an `offset' argument; added inline
12888         documentation.
12889         (mono_debug_find_method): Renamed into
12890         mono_debug_symfile_lookup_method().
12891
12892 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
12893
12894         * assembly.c (mono_assembly_open_full): Dont overwrite the status
12895         returned by mono_image_open_full ().
12896
12897         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
12898         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
12899         #78517.
12900
12901         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
12902         #78518.
12903
12904 2006-05-27  Miguel de Icaza  <miguel@novell.com>
12905
12906         * class.c (mono_class_from_typeref): handle missing images
12907         earlier, deals with bug #78418.   Refactor code; 
12908
12909         Fix a warning introduced in my previous commit (some stale code
12910         from before I revisited my patch).
12911
12912         * class.c (mono_class_create_from_typedef): On failure, remove the
12913         class from the MonoImage->class_cache as the class is not
12914         initialized;   Fixes the leak pointed out by Paolo.
12915
12916 2006-05-25  Dick Porter  <dick@ximian.com>
12917
12918         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
12919         DeleteCriticalSections until I figure out which one may still be
12920         sometimes locked when mono_thread_cleanup is called.
12921
12922 2006-05-24  Dick Porter  <dick@ximian.com>
12923
12924         * threads.c (mono_thread_cleanup): Move the threading cleanup out
12925         of mono_thread_manage and back into its own function, so it can be
12926         called after the finalizer thread has finished.
12927
12928         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
12929
12930 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
12931
12932         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
12933         Fixes #78495.
12934
12935         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
12936         with non-blittable elements.
12937         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
12938
12939 2006-05-24  Martin Baulig  <martin@ximian.com>
12940
12941         * mono-debug-debugger.h (MonoDebuggerEvent): Added
12942         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
12943
12944         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
12945         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
12946         `mono_debugger_event_handler' to NULL.
12947
12948 2006-05-24  Martin Baulig  <martin@ximian.com>
12949
12950         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
12951
12952 2006-05-24  Martin Baulig  <martin@ximian.com>
12953
12954         * mono-debug-debugger.h
12955         (mono_debugger_create_notification_function): Added
12956         `MonoCodeManager *' argument.
12957
12958 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
12959
12960         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
12961
12962 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
12963
12964         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
12965         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
12966         implementation.
12967
12968 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
12969
12970         * icall.c: precise GC support: objects can't be stored in unmanaged
12971         memory anymore, even if they are kept alive by other references: since
12972         they can move the GC needs to be able to always find them.
12973
12974 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12975
12976         * object.c: precise GC support for static fields. Support
12977         for moving GCs: write barriers and pinned allocation for interned
12978         strings.
12979
12980 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12981
12982         * domain.c, domain-internals.h: precise GC support for the MonoDomain
12983         structure.
12984
12985 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12986
12987         * class.c, gc.c: sgen and precise GC updates.
12988
12989 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12990
12991         * marshal.h, marshal.c: added write barrier wrapper and precise type
12992         fixes.
12993
12994 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
12995
12996         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
12997         support.
12998
12999 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13000
13001         * reflection.c: precise and sgen GC updates.
13002
13003 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13004
13005         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
13006
13007 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
13008
13009         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
13010
13011 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
13012
13013         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
13014         MONO_TYPE_OBJECT. Fixes #78462.
13015
13016 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
13019         and blittable types.
13020
13021 2006-05-17  Miguel de Icaza  <miguel@novell.com>
13022
13023         * class.c (mono_class_get_exception_for_failure): Implement parts
13024         of a TODO: if the loader error is set (instead of the class
13025         error), we return a Loader exception that can be properly thrown
13026         elsewhere.
13027
13028         This was exposed by some Winforms 2.0 code that I tried to run
13029         (Atsushi pointed me to it).
13030
13031 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
13032
13033         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
13034         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
13035         
13036         * marshal.c (emit_marshal_vtype): Add limited support for 
13037         UnmanagedType.LPStruct. Fixes #78427.
13038
13039         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
13040         Applied a patch from kangaroo to fix #77523.
13041
13042 2006-05-17  Martin Baulig  <martin@ximian.com>
13043
13044         * threads.c
13045         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
13046         (debugger_thread_created): Removed.
13047         (debugger_thread_exited): Removed.
13048
13049 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
13050
13051         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13052
13053         * object-internals.h (MonoReflectionResource): Sync with managed version.
13054
13055 2006-05-12  Wade Berrier <wberrier@novell.com>
13056
13057         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
13058
13059 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
13060
13061         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
13062         functions try to allocate from the image mempool.
13063
13064 2006-05-12  Dick Porter  <dick@ximian.com>
13065
13066         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
13067
13068 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
13069
13070         * object.c: The FieldGetter and FieldSetter methods require the full
13071         name of the class, not only the name. Fixes bug #78277.
13072
13073 2006-05-11  Miguel de Icaza  <miguel@novell.com>
13074
13075         * loader.c (method_from_memberref): Do not pass the NULL klass to
13076         mono_loader_set_error_() methods.  Pass the non-NULL value
13077         (class). 
13078
13079 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13080
13081         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13082         (mono_assembly_close): Null out assembly->image->references after freeing it.
13083
13084         * image.c (mono_image_close): Free image->references.
13085         
13086         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13087
13088 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13089
13090         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13091         before checking if it's NULL (g_assert).
13092
13093 2006-05-10  Martin Baulig  <martin@ximian.com>
13094
13095         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13096         I thought I already killed that two months ago, but now it somehow reappeared.
13097
13098 2006-05-10  Martin Baulig  <martin@ximian.com>
13099
13100         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13101
13102 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13103
13104         * reflection.c: Allocate memory for dynamically created methods in the image
13105         mempools.
13106
13107 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13108
13109         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13110         don't use the ad pointer before checking if it's NULL (g_assert).
13111
13112 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13113
13114         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13115         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13116
13117         * marshal.c: Allocate all signatures from mempools.
13118
13119         * marshal.c: Allocate some more signatures from mempools.
13120
13121 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13122
13123         * object.c (mono_load_remote_field): The code used to provide a
13124         temporary variable for returning results if the user did not
13125         provide a result pointer.  But our temporary variable was allocted
13126         on the satck.
13127
13128         Fix calling code to always pass a result area.   Coverity ID 103.
13129
13130 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13131
13132         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13133         value, not the old. Fixes #78312.
13134         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13135
13136         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13137         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13138         per-image cache.
13139
13140         * assembly.c (mono_assembly_close): Free image->references.
13141
13142         * assembly.c (mono_assembly_names_equal): Fix a warning.
13143         (mono_assemblies_cleanup): Cleanup more global data.
13144
13145         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13146
13147         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13148         ptr_cache and image->modules.
13149
13150         * image.c (mono_image_init): Allocate array_cache lazily.
13151         
13152 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13153
13154         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13155         behavior was changed recently and has bad side effects.
13156
13157 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13158
13159         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13160         
13161         * assembly.c (mono_assembly_close): Remove a debug printf.
13162
13163         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13164
13165         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13166         to also allow for temporary references between mono_image_open ()/close ().
13167
13168         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13169
13170 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13171
13172         * marshal.c: Fix support for dynamic methods.
13173
13174         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13175
13176         * marshal.c (mono_marshal_cleanup): New cleanup function.
13177
13178         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13179         image mempools.
13180
13181         * class.c (mono_class_init): Fix leaking class->nested_classes.
13182
13183         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13184
13185         * image.c (mono_image_init): Initialize the new cashes.
13186
13187         * image.c (mono_image_close): Destroy the new cashes.
13188
13189         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13190
13191         * mempool.c (mono_mempool_strdup): New helper function.
13192
13193         * class-internals.h: Add prototype for mono_loader_unlock ().
13194
13195         * domain.c (mono_jit_info_table_find): Fix a warning.
13196         (mono_debugger_check_runtime_version): Ditto.
13197
13198         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13199         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13200         functions to these modules.
13201
13202         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13203         metadata modules.
13204         
13205         * marshal.c (mono_free_bstr): Fix a warning.
13206
13207         * assembly.c (mono_assembly_open_full): Fix another small leak.
13208
13209         * object.c: Fix some unload leaks in the remoting code.
13210
13211         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13212         function.
13213
13214         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13215
13216         * reflection.c: Fix some unload leaks in dynamic assemblies.
13217
13218 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13219
13220         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13221         * marshal.h: Add BSTR support on Win32
13222         * icall.c: Add BSTR icalls
13223         * metadata.h: Add BSTR enums
13224
13225 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13226
13227         Work to catch the crash from #76795 and turn it into an
13228         exception.   As I stubbed out pieces of the VisualBasic support,
13229         I found a number of places where the code was failing and I added
13230         checks to those places. 
13231         
13232         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13233         function return a status code.  If we fail to parse the signature
13234         from mono_metadata_parse_generic_inst, return FALSE.
13235
13236         * loader.c (mono_get_method_from_token): If we fail to load the
13237         method (mono_class_get) return NULL.   
13238
13239         * (method_from_memberref): Return NULL if we are unable to parse
13240         the method signature
13241
13242         (mono_loader_error_prepare_exception): Since we now use the
13243         loader_error flag internally to stop processing, and obtaining
13244         exceptions that might be thrown will walk this code path the
13245         proper way of going from a MonoLoaderError into a
13246         MonoException was convoluted.   This new routine encapsulates the
13247         process of turning the error into an exception and *clearing* the
13248         error afterwards.
13249         
13250 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13251
13252         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13253         with missing assemblies), and to cope with:
13254
13255                 * Missing fieldref from a non-existing assembly.
13256                 * Missing methodref from a non-existing assembly.
13257
13258         The first batch of work to address *some* of the issues from 76661.
13259         
13260         * object.c (mono_class_create_runtime_vtable): If we fail to
13261         initialize the class raise the exception here. 
13262
13263         * metadata.c (mono_class_get_overrides_full): If any methods fail
13264         to load return the failure to the caller.
13265
13266         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13267         flagging assemblies that failed to load.   
13268
13269         Do not crash if we are unable to load the assembly.
13270
13271         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13272         assemblies. 
13273
13274         * loader.c (mono_loader_set_error_type_load): Change the
13275         convention to always pass unallocated strings, so we make our own
13276         copies (I know our own code had duplicated strings before, but
13277         this keeps the normal conventions).
13278         (method_from_memberref): Call mono_loader_set_error_method_load
13279         for all possible failures of loading the class. 
13280         Remove assert, turn into a loader error.
13281
13282         (mono_loader_error_to_exception): Move this routine from mini
13283         (mini_loader_error_to_exception) there was no need to have that in
13284         mini. 
13285
13286         * class.c (mono_class_from_typeref): If we were not able to load
13287         the assembly with mono_assembly_load_reference, call the
13288         mono_loader_set_error_type_load to register the problem.
13289
13290         (mono_class_setup_fields): If we fail to load the type from
13291         mono_metadata_parse_type_full, call mono_class_set_failure and
13292         break from the loop.
13293
13294         If class->exception_type is set, we do not layout the fields as
13295         that might crash the runtime, and instead return (from breaking
13296         from the previous loop).
13297
13298         (mono_class_setup_vtable): This now returns a boolean indicating
13299         whether the table was properly setup.   The decision is driven by
13300         mono_class_get_overrides_full which might run into non-existing
13301         methods. 
13302         
13303         (mono_class_init): Returns TRUE on success or FALSE if there was a
13304         problem in loading the type (incorrect assemblies, missing
13305         assemblies, methods, etc).
13306
13307         When we call mono_class_setup_fields we also check for a potential
13308         error inside this call (either a class exception or a general
13309         loader exception).
13310
13311         (mono_class_create_from_typedef): If the parent fails to load
13312         (calling mono_class_get_full) return NULL.
13313         
13314         ** Important **
13315
13316         calls to mono_metadata_parse_type_full should be checked
13317         everywhere and set the mono_class_set_failure
13318         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13319
13320         The current patch checks the places where my manually constructed
13321         tests show the errors are showing up, but we should do it
13322         everywhere. 
13323
13324         ** Important2 **
13325
13326         mono_class_init return values should be tested everywhere, like
13327         the previous case this is something that we should audit
13328         everywhere and not only on the cases exposed by the tests I
13329         created. 
13330
13331 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13332
13333         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13334         boolean parameter and instead pass the information on `options'
13335         parameter (FileOptions).
13336
13337         * icall.c: Register the new signature for MonoIO.Open.
13338
13339         * debug-helpers.c (dis_one): Trying to understand how coverity
13340         works.  Fix Run 5, item 78.
13341
13342 2006-04-26  Dick Porter  <dick@ximian.com>
13343
13344         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13345         dereference.
13346
13347 2006-04-25  Martin Baulig  <martin@ximian.com>
13348
13349         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13350
13351         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13352         debugger_thread_created().
13353         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13354         special way.
13355         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13356         (mono_debugger_finalize_threads): New function; undo the effects
13357         of mono_debugger_init_threads().
13358         (mono_debugger_create_all_threads): Removed.
13359
13360 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13361
13362         * image.c (mono_image_close): Tidy up trace messages.
13363
13364         * assembly.c (mono_assembly_close): Ditto.
13365
13366         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13367         no longer references an already freed assembly. Fixes #78168.
13368
13369 2006-04-21  Dick Porter  <dick@ximian.com>
13370
13371         * threads.c (mono_thread_detach): Fix reference counting when
13372         detaching threads.
13373
13374 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13375
13376         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13377         #78155.
13378
13379 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13380
13381         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13382         (mono_type_to_stind): Ditto.
13383
13384         * marshal.c: Use the new helper functions to simplify code.
13385
13386         * image.c (mono_image_close): Add some code for help debug assembly unloading
13387         problems.
13388
13389         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13390         image mempool.
13391
13392         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
13393         assembly was already loaded in another appdomain. Fixes #78083.
13394
13395 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
13396
13397         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
13398         referenced assemblies.
13399         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
13400
13401         * domain.c (mono_domain_free): Add a trace message.
13402
13403         * appdomain.c (add_assemblies_to_domain): Ditto.        
13404
13405         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
13406         field.  
13407
13408 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13409
13410         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
13411
13412 2006-04-12  Martin Baulig  <martin@ximian.com>
13413
13414         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
13415         `USE_INCLUDED_LIBGC'.   
13416
13417 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13418
13419         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
13420         the patch contains ../ and a small directory name later. Hopefully fixes
13421         #78035.
13422
13423 2006-04-10  Martin Baulig  <martin@ximian.com>
13424
13425         Clean up the debugger's thread-handling code.
13426
13427         The debugger's thread-handling code has been moved from
13428         ../mini/debug-debugger.c to threads.c.  We now iterate directly
13429         over the `threads' hash, keep track of exiting threads and also
13430         use proper locking.
13431
13432         We can now debug XSP and XSP based applications with the debugger.
13433
13434         * object-internals.h (MonoThread): Added `gpointer end_stack'.
13435
13436         * threads.h
13437         (MonoThreadCallbacks): Removed; this was only used by the debugger.
13438         (mono_install_thread_callbacks): Likewise.      
13439
13440         * threads.c (mono_thread_callbacks): Removed.
13441         (debugger_thread_created, debugger_thread_exited): New static functions.
13442         (start_wrapper): Call debugger_thread_created().
13443         (thread_cleanup): Call debugger_thread_exited().
13444         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
13445         (mono_debugger_init_threads): New public function.
13446         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
13447         iterate directly over the `threads' hash and also use proper locking.
13448
13449         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
13450
13451         * mono-debug-debugger.h
13452         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
13453
13454 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13455
13456         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
13457         argument type=array. Fixes #78057.
13458
13459 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
13460
13461         * culture-info-table.h : regenerated. Fixed bug #69652.
13462
13463 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13464
13465         * loader.c metadata.c: Reapply a variant r59116.
13466         
13467         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
13468
13469         * class.c (mono_class_setup_interface_offsets): New internal function.
13470
13471         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
13472         interfaces too. Fixes #77398.
13473
13474         * reflection.c (encode_cattr_value): Add support for 
13475         parameter type=object, argument type=array.
13476         (load_cattr_value): Ditto. Fixes #77916.
13477
13478         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
13479         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
13480
13481         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
13482         a byval char array and CharSet is Ansi.
13483
13484         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
13485
13486 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
13487
13488         * metadata.c: Add some locking comments.
13489         
13490         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
13491         mempool.
13492         (mono_metadata_free_method_signature): Don't free the signature itself.
13493
13494         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
13495
13496         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
13497         reference the same MonoImage.
13498         (mono_assembly_load_from_full): Add an assert.
13499
13500 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13501
13502         * image.c (mono_image_close): Don't put the image we are about to free into the
13503         loaded_images_guid_hash.
13504
13505         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
13506         to reduce code duplication.
13507
13508         * marshal.c: Register the native functions called by this module as icalls, to
13509         somewhat centralize the creation of MonoMethodSignature's.
13510
13511         * loader.c (mono_method_signature): Add a cache for method signatures.
13512
13513         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
13514         the parameter attributes of a method.
13515         (mono_metadata_parse_method_signature_full): Refactored the computation of
13516         parameter attributes into a separate function. Also avoid one allocation in
13517         most cases.
13518
13519         * assembly.c (mono_assembly_close): Ditto.
13520
13521         * image.c (mono_image_close): Log trace messages with INFO level.
13522
13523         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
13524
13525         * image.c reflection.c: Correct reference counting of image modules.
13526         
13527         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
13528         of this function from the image mempool.
13529         
13530         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
13531         to allow more cached types to be used.
13532
13533         * mono-debug.c (mono_debug_add_method): Appled patch from
13534         David S. Miller  <davem@sunset.davemloft.net>: Access 
13535         minfo->lexical_blocks[] entry elements using read32().
13536
13537 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13538
13539         * loader.c (mono_free_method): No longer free the method header for non-dynamic
13540         methods as it is allocated from the mempool.
13541
13542         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
13543         image mempool.
13544
13545         * metadata-internals.h: Add comments describing the reference counting scheme
13546         used for MonoImage and MonoAssembly.
13547
13548         * image.c assembly.c reflection.c: Rework reference counting of images and 
13549         assemblies so they are freed when the runtime is shut down. Free some 
13550         additional memory structures when an image is unloaded.
13551         
13552 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13553
13554         * class.c loader.c reflection.c: Allocate more data structures in
13555         the image mempool.
13556
13557 2006-03-31  Miguel de Icaza  <miguel@novell.com>
13558
13559         * icall.c
13560         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
13561         build on pre glib 2.4 systems.
13562
13563 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13564
13565         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
13566
13567         * icall.c: Fix some warnings.
13568
13569 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
13570
13571         * culture-info-table.h : regenerated.
13572
13573 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
13574
13575         * threads.c, object-internals.h, verify.c: changed the culture caching
13576         code to use a normal MonoArray for storage so the GC can keep track of
13577         them easily. Fixed bits of the cache logic, too and simplified the
13578         code.
13579
13580 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
13581
13582         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
13583         thread for non-Boehm GCs.
13584
13585 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
13586
13587         * domain.c, object.c, domain-internals.h: reduce the amount of memory
13588         needed to keep track of the data for static fields.
13589
13590 2006-03-29  Raja R Harinath  <rharinath@novell.com>
13591
13592         Fix #75172
13593         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
13594         for interface classes.  Use 'num_methods' instead.
13595         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
13596         before using '->vtable_size' field.
13597
13598 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13599
13600         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
13601         doesn't contain managed pointers, so use a normal hashtable.
13602
13603 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13604
13605         * reflection.c, class-internals.h, domain.c: fixed handling of types
13606         used as values for objects in custom attributes (bug #77915):
13607
13608 2006-03-24  Martin Baulig  <martin@ximian.com>
13609
13610         * class.c (mono_class_setup_fields): Added support for generic
13611         instances; fixes #77580.
13612
13613 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13614
13615         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
13616
13617 2006-03-24  Dick Porter  <dick@ximian.com>
13618
13619         * file-io.c (get_file_attributes): More stat macro breakage.
13620         Fixes bug 77759.
13621
13622 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
13623
13624         * profiler.c: added the file=filename option in the default profiler
13625         to output the profile data to filename.
13626
13627 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13628
13629         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
13630         bug #77877.
13631
13632 2006-03-22  Martin Baulig  <martin@ximian.com>
13633
13634         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
13635         allocated `MonoClassField *' in `fb->handle'.
13636
13637 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13638
13639         * class.c, image.c, metadata-internals.h: implemented new mechanism to
13640         allocate interface ID to save memory and allow better ID reuse on
13641         appdomain unload. setup_generic_vtable () removal from Martin.
13642
13643 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13644
13645         * object.h, appdomain.c, domain.c, exception.c, icall.c,
13646         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
13647         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
13648         write barriers for reference stores with managed objects accessed with
13649         C structures in the runtime and in embedding programs.
13650
13651 2006-03-20  Raja R Harinath  <rharinath@novell.com>
13652
13653         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
13654         'interface_id' and 'max_interface_id' fields of MonoClasses
13655         representing open generic types.
13656
13657 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
13658
13659         * object.h, object.c, icall.c: added functions to deal with
13660         storing valuetypes that contain references in managed objects.
13661         * reflection.c, string-icalls.c, threads.c, marshal.c: small
13662         fixes and comments around uses of mono_array_addr ().
13663
13664 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
13665
13666         * object.h, icall.c, monitor.c: object.GetHashCode ()
13667         implementation that supports the moving garbage collector.
13668
13669 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13670
13671         * icall.c, threads-types.h, threads.c: implemented finalizer for
13672         LocalDataStoreSlot.
13673
13674 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13675
13676         * metadata.c (mono_type_size): Add a fixme.
13677         (mono_type_stack_size): Ditto.
13678
13679         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
13680         'type_forwarders' field.
13681
13682         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
13683         attribute from net 2.0.
13684
13685         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
13686         from class.c.
13687
13688         * class.c (mono_class_setup_fields): Fix a warning.
13689         
13690         * class.c (mono_class_from_name): Add support for assemblyref entries
13691         in the EXPORTEDTYPE table.
13692
13693         * reflection.c: Add support for handling type forwarders under net 2.0.
13694
13695         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
13696         
13697 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13698
13699         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
13700         overwriting entries in ModuleBuild->types, also clean up the code
13701         a little. Fixes #77774.
13702
13703 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13704
13705         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
13706         load friend assembly info when present.
13707
13708 2006-03-14  Raja R Harinath  <rharinath@novell.com>
13709
13710         Fix crasher on gtest-158.cs.
13711         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
13712         the return value if the MonoClass we want is yet in an
13713         inconsistent state.
13714         * class.c (mono_class_create_from_typedef): Add an comment
13715         explaining an order dependency between mono_class_setup_parent and
13716         mono_class_setup_mono_type.
13717
13718 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13719
13720         * class.c: documentation updates and events bug fix.
13721
13722 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
13723
13724         * class.c: some cleanup, locking fixes.
13725
13726 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13727
13728         * class.c: fix the generics code to setup nested
13729         type info to the instantiated type (bug #77770).
13730
13731 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13732
13733         * marshal.c: fixed a few type correctness issues.
13734
13735 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13736
13737         * loader.c: the Set/Get/Addrtess array methods should be public.
13738
13739 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13740
13741         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
13742         
13743         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
13744         info->wrapper.
13745
13746 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13747
13748         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
13749
13750         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
13751
13752         * mempool.c (mono_mempool_alloc): Speed this up a bit.
13753         (mono_mempool_alloc0): Ditto.
13754
13755 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13756
13757         * socket-io.c:
13758         (create_object_from_sockaddr): it was allocating 4 extra bytes
13759         for the AF_UNIX data. Fixes bug #77747.
13760
13761 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13762
13763         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
13764
13765 2006-03-09  Dick Porter  <dick@ximian.com>
13766
13767         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
13768         Fixes bug 76966 again.
13769
13770 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
13771
13772         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
13773         names from r57532
13774         * appdomain.c: Bumped corlib version to 48 (due to r57532)
13775
13776 2006-03-07  Martin Baulig  <martin@ximian.com>
13777
13778         * object.c
13779         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
13780
13781 2006-03-07  Martin Baulig  <martin@ximian.com>
13782
13783         * class.c
13784         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
13785         regression introduced in r56970; see gtest-252.cs.
13786
13787         * loader.c (mono_get_method_constrained): Correctly handle generic
13788         methods; see gtest-253.cs.
13789
13790 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13791
13792         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
13793
13794 2006-03-04  Martin Baulig  <martin@ximian.com>
13795
13796         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
13797         compute the parent type at runtime, just like we're already doing
13798         it for interfaces.
13799
13800         * reflection.c
13801         (mono_reflection_bind_generic_parameters): Don't compute the
13802         parent type anymore.
13803
13804         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
13805
13806 2006-03-04  Martin Baulig  <martin@ximian.com>
13807
13808         * mono-debug-debugger.h
13809         (mono_debugger_create_notification_function): Allocate memory at
13810         runtime and return a pointer to it.
13811
13812 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
13813
13814         * assembly.c: Fix windows build.
13815         
13816         * assembly.c: Fix build.
13817
13818         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
13819
13820         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
13821         
13822 2006-03-03  Dick Porter  <dick@ximian.com>
13823
13824         * process.c
13825         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
13826         Check parameters before dereferencing them.  Fixes Aaron's part of
13827         bug 77393.
13828
13829 2006-03-03  Raja R Harinath  <rharinath@novell.com>
13830
13831         Fix performance regression.
13832         * loader.c (find_method_in_class): Add 'from_class' argument.
13833         Rename 'klass' argument to 'in_class'.  The signature is compared
13834         against the method in 'in_class', and the corresponding method is
13835         returned from 'from_class'.
13836         (find_method): Walk both 'in_class' and 'from_class' in parallel.
13837         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
13838         type definition and generic instantiation in parallel.
13839         (mono_get_method_constrained): Update to changes.
13840
13841 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13842
13843         * threads.c: make sure the domain is correct, too when doing
13844         mono_thread_attach ().
13845
13846 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
13847
13848         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
13849         windows. Fixes #77683.
13850
13851 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
13852
13853         * object.h, *: introduced specific way to set elements of an array
13854         of references to be used as write barrier. Still need to audit the
13855         uses of mono_array_addr.
13856
13857 2006-03-01  Miguel de Icaza  <miguel@novell.com>
13858
13859         * object-internals.h: New field to cache the assmebly name, patch
13860         from Tambet Ingo (tambet@ximian.com)
13861
13862 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13863
13864         * decimal.h, class-internals.h, metadata-internals.h,
13865         file-io.h: mark a few function declarations as internal, to
13866         reduce the number of PLT entries.
13867
13868 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13869
13870         * file-io.c: fix typo in warning message.
13871
13872 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
13873
13874         * loader.c: on unix, lookup the "*A" version of a function
13875         if charset is auto as a second option before failing.
13876
13877 2006-02-28  Raja R Harinath  <rharinath@novell.com>
13878
13879         * class.h (mono_class_inflate_generic_method): Revert to two
13880         argument version.
13881         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
13882         (mono_class_inflate_generic_method_full): Add.
13883         * class.c (mono_class_inflate_generic_method_full): Rename from
13884         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
13885         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
13886         * loader.c, reflection.c: Update to changes.
13887
13888 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
13889
13890         * icall.c: const fixes and small improvements.
13891
13892 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13893
13894         * threadpool.c: for asynchronous connect(), enable the same workaround
13895         for BSD 6 as for the Mac. Fixes bug #77637.
13896
13897 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
13898
13899         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
13900         formatted classes. Fixes #77524.
13901
13902 2006-02-24  Raja R Harinath  <rharinath@novell.com>
13903
13904         * class.c (inflate_generic_type): Add a couple more
13905         micro-optimizations.
13906         (inflate_generic_context): Don't use the 'gmethod' from
13907         'inflate_with'.
13908         (mono_class_inflate_generic_method): If the method has generic
13909         parameters, but the passed-in context doesn't have a 'gmethod',
13910         create one.  Use the possibly simplified generic instantiation
13911         from the declaring class instead of the one passed in.
13912
13913 2006-02-24  Raja R Harinath  <harinath@gmail.com>
13914
13915         Make generic method signature and method header handling lazy.
13916         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
13917         (inflate_generic_header): Likewise.
13918         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
13919         parameter to avoid inflating types.
13920         (mono_get_inflated_method): Empty out.
13921         * class.h (mono_class_inflate_generic_method): Update to changes.
13922         * loader.c (mono_get_method_from_token): Don't parse signature for
13923         generic methods, nor methods of generic classes.
13924         (mono_method_signature): Rename from 'mono_method_signature'.
13925         Inflate signature on demand.
13926         (mono_method_get_header): Inflate method header on demand.
13927         * reflection.c: Update to changes.
13928
13929 2006-02-23  Raja R Harinath  <rharinath@novell.com>
13930
13931         * metadata.c (mono_metadata_inflate_generic_inst): If the
13932         instantiation is closed, don't bother expanding it in the new
13933         context.
13934         * class.c (inflate_generic_class): If the generic instantiation
13935         doesn't change after inflation, return the argument itself.
13936         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
13937         Add bounds checks.
13938         (inflate_generic_context): If neither the generic class nor the
13939         generic method instantiations change, return the original context.
13940         * reflection.c (mono_method_get_object): Do
13941         'mono_get_inflated_method' before accessing the ->klass field.
13942         (inflate_mono_method): Don't create a MonoGenericMethod unless
13943         necessary.
13944         (inflate_method): Don't pass a constructed type as the declaring
13945         type of a methodbuilder.
13946
13947 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
13948
13949         * object.c: fix memory overwrite.
13950
13951 2006-02-22  Dick Porter  <dick@ximian.com>
13952
13953         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
13954         it doesn't work any more.
13955         (mono_threads_request_thread_dump): Fix unused variable warnings.
13956
13957 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13958
13959         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
13960         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
13961         the public header file.
13962
13963 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
13964
13965         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
13966
13967 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13968
13969         * class-internals.h, object.c: reduce the size of MonoVTable
13970         and store the interface_offsets array at negative offsets.
13971
13972 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13973
13974         * metadata.c: tweak table descriptors data structures to reduce
13975         size and runtime relocations.
13976
13977 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13978
13979         * marshal.c: fix some types and opcodes to be type-safe
13980         in marshaling wrappers.
13981
13982 2006-02-21  Ankit Jain  <jankit@novell.com>
13983
13984         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
13985
13986 2006-02-21  Raja R Harinath  <rharinath@novell.com>
13987
13988         * metadata.c (get_constraints): Relax debugging checks for monodis.
13989
13990 2006-02-21  Ankit Jain  <jankit@novell.com>
13991
13992         * metadata.c (mono_metadata_load_generic_params): Move the code
13993         checking for ambiguous generic params from here to mono/dis/get.c
13994         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
13995
13996 2006-02-21  Raja R Harinath  <harinath@gmail.com>
13997
13998         Fix assertion triggered when compiling nemerle.
13999         * class.c (mono_get_shared_generic_inst): Rename from
14000         get_shared_inst and make non-static.
14001         * loader.c (mono_get_shared_generic_method): New.  Used to create
14002         the MonoGenericContext-equivalent of a MonoGenericContainer.
14003         (mono_get_method_from_token): Initialize the 'context' field of
14004         the created MonoGenericContainer.
14005         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
14006         * metadata.c (get_constraints): Add sanity check.
14007         * class-internals.h: Add new internal methods.
14008
14009         * reflection.c (verify_safe_for_managed_space): New sanity check.
14010         Currently checks that owner-less generic parameters aren't allowed
14011         in managed space.
14012         (mono_type_get_object): Use it.
14013         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
14014         that are now in mono_type_get_object.
14015         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
14016
14017 2006-02-19  Raja R Harinath  <harinath@gmail.com>
14018
14019         * metadata.c (mono_type_create_from_typespec): Rename from
14020         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
14021         argument and caching of types in the generic container.
14022         (unwrap_arrays, find_generic_param): Remove.
14023         * metadata-internals.h: Update.
14024         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
14025
14026 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
14027
14028         * class.c (mono_class_get_exception_for_failure): Fix a warning.
14029
14030         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
14031         return values. Fixes #77581.
14032
14033         * class.c (mono_fnptr_class_get): Switch name and name_space.
14034
14035         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
14036         classes and add support for [In, Out] attributes.
14037         (mono_marshal_free_asany): Ditto. Fixes #77524.
14038
14039 2006-02-18  Raja R Harinath  <harinath@gmail.com>
14040
14041         * class.c (mono_class_from_generic_parameter): Make more robust to
14042         incomplete MonoGenericContainers from monodis.
14043
14044 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14045
14046         * class-internals.h: added some more exception types.
14047         * class.c, metadata.c: added a few checks to handle missing
14048         types.
14049
14050 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14051
14052         Use owner-less generic-params some more.
14053         * class.c (my_mono_class_from_generic_parameter): Remove.
14054         (mono_class_from_generic_parameter): Handle null image,
14055         param->name and param->owner.
14056         (mono_class_from_mono_type): Update.
14057         (mono_class_create_from_typespec): Remove 'container' parameter.
14058         If that parameter is non-null, the result is always inflated by
14059         'mono_class_get_full' anyway.
14060         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
14061         parameter.
14062         (mono_class_get_full): Update.
14063
14064         * class.c (inflate_generic_type) [GENERICINST]: If the generic
14065         instance is not open, don't bother inflating.
14066         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
14067         parse metadata for inflated classes.
14068         (_mono_class_get): Change GenericContext* parameter to
14069         GenericContainer*.
14070         (mono_class_create_from_typespec): Likewise.  Simplify, and
14071         implement trivially.  All the cases are handled in
14072         mono_class_from_mono_type.  Don't inflate returned class.
14073         (mono_class_get_full): Delegate GENERICINST optimization to
14074         inflate_generic_type.
14075         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
14076
14077 2006-02-16  Dick Porter  <dick@ximian.com>
14078
14079         * socket-io.c (create_object_from_sockaddr): Fix typo.
14080         (create_sockaddr_from_object): Check array lengths before
14081         potentially accessing items off the end.
14082         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14083         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14084         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14085         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14086         length checks to avoid wraparound overflows.
14087         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14088         contents of the array of sockets
14089         (hostent_to_IPHostEntry2)
14090         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14091         Check return value of inet_ntop ().
14092         (addrinfo_to_IPHostEntry): Fix typo
14093
14094 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14095
14096         Type metadata parsing doesn't use generic-instantiation information.
14097         * metadata.c (mono_metadata_parse_array_full): Change
14098         MonoGenericContext* parameter to MonoGenericContainer*.
14099         (mono_metadata_parse_type_full): Likewise.
14100         (mono_type_create_from_typespec_full): Likewise.
14101         (mono_metadata_parse_mh_full): Likewise.
14102         (mono_metadata_parse_generic_inst): Likewise.
14103         (do_mono_metadata_parse_generic_class): Likewise.
14104         (do_mono_metadata_parse_type): Likewise.
14105         * metadata-internals.h: Update to changes.
14106         * class.c (mono_class_find_enum_basetype): Likewise.
14107         (mono_class_setup_fields): Likewise.
14108         (mono_class_create_from_typespec): Likewise.
14109         * loader.c (method_from_methodspec): Likewise.
14110         (mono_get_method_from_token): Likewise.
14111         (mono_method_get_header): Likewise.
14112
14113 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14114
14115         * marshal.c: handle additional GENERICINST case (patch from
14116         Thong Nguyen <tum@veridicus.com>).
14117         Fix a few cases where LDIND_I/STIND_I was used for references.
14118
14119 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14120
14121         * reflection.c (mono_reflection_get_token): Remove unused variable.
14122
14123 2006-02-16  Martin Baulig  <martin@ximian.com>
14124
14125         * reflection.c (mono_reflection_get_token): Add support for fields
14126         in instantiated generic types.
14127
14128         * icall.c
14129         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14130
14131 2006-02-15  Martin Baulig  <martin@ximian.com>
14132
14133         * icall.c
14134         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14135         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14136         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14137         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14138
14139 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14140
14141         * class.c, metadata.c, metadata.h, object.c, icall.c,
14142         marshal.c: changed mono_type_get_underlying_type () to do
14143         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14144         Fixed handling of instantiated generic valuetypes (bug #75479).
14145
14146 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14147
14148         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14149         Delegate to mono_metadata_decode_value, and work on the returned value.
14150
14151         * icall.c (ves_icall_MonoType_GetGenericArguments):
14152         Add consistency check here too.
14153         
14154 2006-02-15  Ankit Jain  <jankit@novell.com>
14155
14156         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14157         char/short etc.
14158
14159 2006-02-15  Ankit Jain  <jankit@novell.com>
14160
14161         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14162         signed values, used only for representing lower bounds of arrays.
14163         (mono_metadata_parse_array_full): Use new
14164         mono_metadata_decode_signed_value to decode lower bounds.
14165
14166 2006-02-14  Martin Baulig  <martin@ximian.com>
14167
14168         * reflection.c
14169         (mono_reflection_get_token): Support "MonoGenericMethod" and
14170         "MonoGenericCMethod" and allow generic instances / methods.
14171
14172 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14173
14174         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14175         to obtain the terminal size using an ioctl.
14176
14177         * object.c (mono_nullable_init): Revert this as nullable reference
14178         types are not valid.
14179         (mono_nullable_box): Ditto.
14180
14181 2006-02-09  Dick Porter  <dick@ximian.com>
14182
14183         * threads.c (mono_thread_detach): Drop a reference to the thread
14184         we're detaching.
14185
14186 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14187
14188         * object.c (mono_nullable_init): Handle nullable reference types.
14189         (mono_nullable_box): Ditto. Fixes #77446.
14190
14191 2006-02-07  Martin Baulig  <martin@ximian.com>
14192
14193         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14194
14195 2006-02-07  Ankit Jain  <jankit@novell.com>
14196
14197         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14198         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14199         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14200         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14201         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14202         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14203
14204 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * class.c (mono_class_create_generic): Set type_token as well.
14207
14208         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14209         compatible with MS.
14210
14211 2006-02-02  Martin Baulig  <martin@ximian.com>
14212
14213         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14214         has never been used so far.
14215
14216 2006-02-02  Martin Baulig  <martin@ximian.com>
14217
14218         * mono-debug-debugger.h: Changed comment at the top of this file;
14219         the header is not installed, but it's safe to #include it from
14220         within the JIT.
14221
14222         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14223         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14224
14225 2006-02-02  Martin Baulig  <martin@ximian.com>
14226
14227         * mono-debug.h
14228         (MonoSymbolTable): Removed the `metadata_info' field.
14229
14230         * mono-debug.c
14231         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14232
14233         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14234         (mono_debugger_add_builtin_types): Removed.
14235         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14236         (mono_debugger_create_notification_function): We now operate on a
14237         pre-allocated area; take a `gpointer' and return `void'.
14238
14239         * mono-debug-debugger.c
14240         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14241         (mono_debugger_add_builtin_types): Removed.
14242
14243 2006-02-02  Martin Baulig  <martin@ximian.com>
14244
14245         * threads.c (mono_debugger_create_all_threads): New public method.
14246
14247 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14248
14249         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14250         breaks on several platforms.
14251
14252 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14253
14254         * assembly.c: the VS.NET build doesn't supply default values for
14255         MONO_ASSEMBLIES and MONO_CFG_DIR.
14256
14257 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14258
14259         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14260         helper function.
14261
14262         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14263
14264         * loader.c (method_from_memberref): Fix a warning.
14265
14266         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14267
14268         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14269         with explicit layout. Fixes #77433.
14270
14271 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14272
14273         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14274         max_interface_id is initialized before using it. Fixes #77398.
14275         (ves_icall_Type_GetInterfaces): Ditto.
14276
14277 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14278
14279         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14280         allocate memory for parameter attributes when parsing memberref
14281         signatures.
14282         * loader.c (mono_loader_set_error_method_load): Don't warn.
14283         (method_from_memberref): Ensure MissingMethodException gets thrown
14284         if method is not found.  Make warning more informative.
14285
14286 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14287
14288         Fix #77397
14289         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14290         return true if is byref.
14291         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14292         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14293         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14294
14295 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14296
14297         Fix tests/find-method.2.il
14298         * loader.c (find_method, find_method_in_class): Remove is_inflated
14299         argument.  Revert 2006-01-18 change.
14300         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14301         is generic, search for method in its generic definition.
14302         * class.c (mono_class_setup_vtable_general): Print generic
14303         arguments of generic types in debugging printf.
14304
14305 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14306
14307         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14308
14309         * threads.c (mono_threads_request_thread_dump): New helper function.
14310
14311 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14312
14313         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14314
14315 2006-01-25  Ankit Jain  <jankit@novell.com>
14316
14317         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14318         move definition to ..
14319         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14320         
14321 2006-01-25  Ankit Jain  <jankit@novell.com>
14322             Raja R Harinath  <rharinath@novell.com>
14323
14324         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14325         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14326         as necessary.
14327
14328 2006-01-25  Martin Baulig  <martin@ximian.com>
14329
14330         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14331         `MonoDebuggerThread' into debug-debugger.c.
14332
14333 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14334
14335         * profiler.c: fix printing of data.
14336
14337 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14338
14339         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14340           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14341
14342 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14343
14344         * object.c: fix deadlock related to string interning.
14345
14346 2006-01-23  Martin Baulig  <martin@ximian.com>
14347
14348         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14349
14350         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14351
14352 2006-01-23  Martin Baulig  <martin@ximian.com>
14353
14354         * mono-debug.h: Moved the prototypes of some functions which are
14355         used by the JIT here from mono-debug-debugger.h.
14356
14357 2006-01-21  Martin Baulig  <martin@ximian.com>
14358
14359         * Makefile.am: Don't install mono-debug-debugger.h.
14360
14361 2006-01-21  Martin Baulig  <martin@ximian.com>
14362
14363         * mono-debug-debugger.h: Enforce the private status of this header
14364         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14365         Moved some stuff from mono-debugger-jit-wrapper.h here.
14366
14367 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14368
14369         * class.c (mono_class_from_typeref): Add a sanity test to help
14370         catch lack of assembly load/search hooks.
14371
14372 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14373
14374         * marshal.c (emit_struct_conv): Relax the fields with same offset
14375         check even more. Fixes #77230.
14376
14377 2006-01-18  Martin Baulig  <martin@ximian.com>
14378
14379         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14380         argument; if false, we compare the uninstantiated signatures.
14381         (method_from_memberref): Compare the uninstantiated signatures;
14382         fixes #76417.
14383
14384 2006-01-18  Robert Jordan  <robertj@gmx.net>
14385
14386         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14387         Clear the weak link. Fixes bug #77170.
14388
14389         * gc.c (mono_gchandle_free):
14390         Reflect *-gc.c changes (tiny optimization).
14391
14392 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
14393
14394         * metadata.c (mono_metadata_signature_dup): Applied patch from
14395         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
14396         Fixes #77288.
14397
14398 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14399
14400         * marshal.c (emit_struct_conv): Allow fields with the same offset when
14401         marshalling from native to managed code. Fixes #77230.
14402
14403 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14404
14405         * threadpool.c: fix problem (Mac only) when more than one asynchronous
14406         connect. Fixes bug #77020.
14407
14408 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14409
14410         * class.c: fixed id assignement for nested interfaces (bug #77275).
14411         Added also better info for --print-vtable debugging.
14412
14413 2006-01-12  Martin Baulig  <martin@ximian.com>
14414
14415         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
14416         interfaces on-the-fly; fixes #76625.
14417
14418         * class-internals.h
14419         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
14420         don't need that anymore.
14421
14422 2006-01-12  Miguel de Icaza  <miguel@novell.com>
14423
14424         * socket-io.c
14425         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14426         To avoid initing the nested_classes when not needed I turned the
14427         PeerCredData as a toplevel internal class, as it has to be shared
14428         anyways. 
14429
14430         Fixes the CASA issue.
14431
14432 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14433
14434         * domain.c: Accessors for MonoJitInfo
14435
14436         * profiler-private.h: Add jitinfo to the end jit hook
14437
14438         * profiler.[ch]: Define new hooks, called after jitting which give
14439         the MonoJitInfo that was compiled
14440
14441 2006-01-10  Martin Baulig  <martin@ximian.com>
14442
14443         * class.c (mono_class_setup_events): Add support for generic
14444         classes; fixes #76440.
14445
14446 2006-01-06  Raja R Harinath  <rharinath@novell.com>
14447
14448         Fix #77160.
14449         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
14450         on passed-in method.
14451
14452 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14453
14454         * object.c (mono_runtime_invoke_array): Add Nullable support.
14455
14456         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
14457
14458 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
14459
14460         * file-io.c: Don't consider sockets as directory and avoid an endless
14461         loop. Fix bug #76966.
14462
14463 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14464
14465         * object.c (mono_nullable_init): New helper function.
14466         (mono_nullable_box): Ditto.
14467
14468         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
14469
14470         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
14471
14472         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
14473         
14474 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
14475
14476         * class.c (mono_class_is_assignable_from): Make T assignable to 
14477         Nullable<T>.
14478
14479 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
14480
14481         * appdomain.c: Bump corlib version to 46.
14482         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
14483         serialization purpose) and changed ves_icall_System_Reflection_
14484         Assembly_get_code_base signature to accept a boolean (to escape, or 
14485         not, the assembly code base).
14486
14487 2005-12-23  Dick Porter  <dick@ximian.com>
14488
14489         * icall.c: 
14490         * threads-types.h: 
14491         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
14492         CreateEvent icall now returns "created" boolean parameter.
14493
14494 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14495
14496         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
14497         #76967.
14498
14499         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
14500         when attr_klass is an interface. Fixes #77045.
14501
14502 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
14503
14504         * marshal.c (emit_struct_conv): Fix previous patch.
14505         
14506         * marshal.c (emit_struct_conv): Add a check for fields with the same
14507         offset.
14508
14509 2005-12-20  Raja R Harinath  <rharinath@novell.com>
14510
14511         Fix regression in Mono.C5.
14512         * class.c (mono_class_create_generic): If 'klass' is an interface
14513         set up the interface offsets.
14514         (mono_class_is_assignable_from): Don't throw away generic arguments.
14515
14516 2005-12-19  Raja R Harinath  <rharinath@novell.com>
14517
14518         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
14519         type parameters.
14520
14521 2005-12-15  Raja R Harinath  <rharinath@novell.com>
14522
14523         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
14524         dead store.
14525         (do_mono_metadata_parse_generic_class): Don't pass the current
14526         generic context when parsing the type being instantiated: it
14527         cannot use it, anyway.
14528
14529         * loader.c (method_from_memberref): Don't inflate a signature if
14530         it doesn't contain any type parameters.
14531
14532 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14533
14534         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
14535
14536 2005-12-14  Martin Baulig  <martin@ximian.com>
14537
14538         * class.c
14539         (mono_type_get_name_recurse): Don't return null for type
14540         parameters and open generic classes.
14541         (mono_class_setup_methods): Don't exclude generic instances.
14542         (mono_get_unique_iid): Use different IDs for different
14543         instantiations of the same generic type.
14544         (mono_class_setup_vtable): Only use setup_generic_vtable() for
14545         open generic instances; create a normal vtable for closed generic
14546         instances.
14547         (mono_class_setup_vtable_general): We're now also called for
14548         closed generic instances.
14549
14550         * reflection.c
14551         (mono_reflection_bind_generic_parameters): Correctly use
14552         mono_metadata_lookup_generic_inst() everywhere.
14553
14554 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
14555
14556         * object.c (mono_class_create_runtime_vtable): Call 
14557         mono_class_setup_vtable ().
14558
14559         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
14560         function.
14561         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
14562         #76959.
14563
14564         * loader.c (mono_loader_set_error_type_load): Print the type load
14565         warnings to the console so they are more visible to the user.
14566         (mono_loader_set_error_method_load): Ditto.
14567
14568         * reflection.c (ensure_runtime_vtable): Revert the last change as it
14569         is still broken.
14570         
14571         * reflection.c (ensure_runtime_vtable): Fix build.
14572
14573         * reflection.c (ensure_runtime_vtable): Disable an optimization which
14574         doesn't work in all cases.
14575
14576 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
14577
14578         * object.c (mono_array_new_full): Treat a single dimensional array
14579         with 0 lower bounds as an szarray. Fixes #76973.
14580
14581         * reflection.c (custom_attr_visible): Really fix this.
14582
14583 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
14584
14585         * reflection.c (custom_attr_visible): Allow nested public attributes
14586         as well.
14587
14588         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
14589         interface check.
14590
14591 2005-12-12  Raja R Harinath  <harinath@gmail.com>
14592
14593         * class.c (set_generic_param_owner): Delete.
14594         (mono_class_create_from_typedef): Don't set ->owner field of
14595         generic parameters to "param containers" of enclosing classes.
14596         * reflection.c (mono_reflection_initialize_generic_parameter):
14597         Likewise.
14598
14599 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * reflection.c (custom_attr_visible): Fix build.
14602
14603 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
14604
14605         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
14606         private attributes.
14607         
14608         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
14609         handling of null parameter defaults.
14610
14611 2005-12-09  Raja R Harinath  <rharinath@novell.com>
14612
14613         * class.c (mono_class_from_generic_parameter): Don't set
14614         klass->generic_container.
14615         (my_mono_class_from_generic_parameter): Likewise.
14616
14617 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14618
14619         * reflection.c (load_public_key): Fix a warning.
14620         (method_encode_code): Fix unaligned accesses.
14621
14622 2005-12-07  Martin Baulig  <martin@ximian.com>
14623
14624         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
14625
14626         * reflection.c
14627         (write_generic_param_entry): Encode our custom attrs.
14628
14629         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
14630
14631 2005-12-07  Martin Baulig  <martin@ximian.com>
14632
14633         * reflection.c (encode_new_constraint): Removed; we don't use the
14634         `NewConstraintAttribute' anymore.
14635
14636 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14637
14638         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
14639         not fire a TypeResolve event when Assembly.GetType () is called.
14640
14641 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14642
14643         Beginning of support for nullable types in the runtime. Parts of
14644         this patch are from Martin.
14645
14646         * appdomain.c (MONO_CORLIB_VERSION): Bump
14647
14648         * domain.c (mono_init_internal): get the nullable type
14649
14650         * class.c (mono_class_is_nullable): New method
14651         (mono_class_get_nullable_param): New mehod
14652         (mono_class_create_generic): In types T? set cast_class to T
14653
14654         * class-internals.h (MonoDefaults): new nullable default class
14655         (mono_class_get_nullable_param, mono_class_get_nullable_param):
14656         new methods.
14657
14658 2005-12-05  Raja R Harinath  <rharinath@novell.com>
14659
14660         * metadata.c (select_container): New.  Refactor code to select the
14661         appropriate GenericContainer given the type of generic parameter
14662         we are looking for.
14663         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
14664         not a MonoGenericContext.  Use select_container.  Update parameters.
14665         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
14666         and MONO_TYPE_MVAR.
14667         (unwrap_arrays): Remove duplicate tests.
14668         (find_generic_param): Rename from 'has_same_context'.  Now walks a
14669         generic instantiated class to find any arguments that are generic
14670         parameters.
14671         (mono_type_create_from_typespec_full): Use find_generic_param to
14672         avoid evicting some generic instantiations from the typespec
14673         cache.
14674
14675 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
14676
14677         * reflection.c: fixed writing of doubles on ARM FPA.
14678
14679 2005-12-02  Robert Jordan  <robertj@gmx.net>
14680
14681         * icall.c: Fixed EventInfo.ReflectedType (#76829).
14682
14683 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14684
14685         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
14686         least on SUSE 10 they are not the same (on debian, they are just the
14687         same thing).
14688
14689 2005-12-01  Raja R Harinath  <rharinath@novell.com>
14690
14691         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
14692         DeclaringType for VARs and MVARs.
14693         * class.c (set_generic_param_owner): Fix initialization of owner
14694         fields.
14695
14696 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
14697
14698         * icall.c: fixed Enum.ToObject() to correctly convert the values.
14699
14700 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14701
14702         * threadpool.c: workaround for a bug that shows up on the Mac:
14703         select()+connect() on a blocking socket is not like it should
14704         be, so we proceed to connect() in that case, wasting the I/O
14705         threadpool thread until connect succeedes. Fixes bug #75436.
14706
14707 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14708
14709         * threadpool.c: fix typo when setting file descriptor states.
14710
14711 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14712
14713         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
14714         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14715         create a temporary signature container.
14716         (mono_metadata_parse_generic_param): Update to changes.
14717         (mono_type_create_from_typespec_full): Update to changes.
14718         * loader.c (method_from_memberref): Don't use a
14719         MonoGenericContainer while parsing a memberref signature.
14720         (method_from_methodspec): Remove dead-store of the 'container'
14721         variable.  It's overwritten before use.
14722
14723         * metadata.c (mono_type_create_from_typespec_full): Make debugging
14724         checks tighter.
14725         (mono_metadata_parse_generic_param): Likewise.
14726         * loader.c (find_method_in_class): Does not need a
14727         MonoGenericContainer.  Use 'mono_method_signature' rather than
14728         'mono_method_signature_full'.
14729         (find_method, mono_get_method_constrained, method_from_memberref):
14730         Update to changes.
14731
14732         * metadata.c (mono_type_create_from_typespec_full): Ensure that
14733         owner-less generic-parameters are never evicted from the typespec
14734         cache.
14735
14736         * loader.c (method_from_memberref): Don't use the current context
14737         when parsing signatures.
14738         (method_from_methodspec, mono_get_method_from_token): Update to changes.
14739
14740         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
14741         side-effects in g_assert.
14742         * loader.c (mono_get_method_from_token): Resolve klass earlier so
14743         that we don't potentially lose information.
14744
14745 2005-11-26  Dick Porter  <dick@ximian.com>
14746
14747         * icall.c:
14748         * threads.c: icalls to implement basic (ie, not named)
14749         System.Threading.Semaphore.
14750
14751 2005-11-24  Dick Porter  <dick@ximian.com>
14752
14753         * process.c
14754         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14755         Use GetProcessId() if it's available.
14756
14757 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
14758
14759         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
14760
14761 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14762             Ankit Jain  <jankit@novell.com>
14763
14764         * loader.c (mono_get_method_from_token): Initialize 'method' field
14765         of all generic parameters before parsing the signature.  Remove
14766         code that "fixed"-up MVAR references.
14767
14768 2005-11-23  Ankit Jain  <jankit@novell.com>
14769
14770         * metadata.c (mono_metadata_has_generic_params):
14771         (mono_metadata_load_generic_param_constraints):
14772         (mono_metadata_load_generic_params): Move duplicate code ...
14773         (mono_metadata_get_generic_param_row): ... here. Returns the
14774         first row-id in GenericParam table for a given owner (token).
14775         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
14776         prototype.
14777
14778 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14779             Ankit Jain  <jankit@novell.com>
14780
14781         * metadata.c (mono_metadata_class_equal): Pass signature_only when
14782         comparing VARs too.
14783         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
14784         type->data.generic_param only if the type is an MVAR.
14785         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
14786         leak owner-less VARs and MVARs into managed space.
14787
14788 2005-11-21  Martin Baulig  <martin@ximian.com>
14789
14790         * class-internals.h
14791         (MonoMethod): Moved the `generic_container' here from
14792         `MonoMethodNormal' since we now also need it for
14793         `MonoMethodPInvoke';
14794         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
14795         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
14796         an union containing both `MonoMethodNormal' and
14797         `MonoMethodPInvoke'.
14798
14799         * loader.c
14800         (mono_get_method_from_token): Allow implementing generic methods
14801         as interncalls.
14802
14803         * threads.c
14804         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
14805         icall.
14806
14807 2005-11-17  Dick Porter  <dick@ximian.com>
14808
14809         * icall.c: 
14810         * process.h: 
14811         * process.c: Split the Process Start_internal icall into
14812         ShellExecuteEx_internal and CreateProcess_internal, which are
14813         called depending on whether UseShellExecute is true.  Fixes bug
14814         76670.
14815
14816         * appdomain.c (MONO_CORLIB_VERSION): Incremented
14817
14818 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14819
14820         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
14821         'msize' parameters, use the information in 'mspec' instead.
14822         (emit_object_to_ptr_conv): Ditto.
14823
14824         * marshal.c (emit_struct_conv): Handle explicit layout structs with
14825         fields out of order. Fixes #76733.
14826
14827 2005-11-17  Ankit Jain  <jankit@novell.com>
14828
14829         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
14830
14831 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
14832
14833         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
14834           bug #76575.
14835
14836 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
14837
14838         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
14839         for types with non-auto layout. Fixes #76717.
14840
14841 2005-11-16  Ankit Jain  <jankit@novell.com>
14842
14843         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
14844         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
14845         if generic_context is null.
14846           (mono_metadata_generic_param_equal): param->owner can be null.
14847           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
14848         null.
14849
14850 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
14851
14852         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
14853         the correct value.
14854
14855 2005-11-15  Martin Baulig  <martin@ximian.com>
14856
14857         * object.c (set_value): Use mono_class_from_mono_type() instead of
14858         the hack for generic instances; fixes #76136.
14859
14860 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
14861
14862         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
14863         fields.
14864
14865         * image.c (load_metadata_ptrs): Initialize the new fields.
14866
14867         * reflection.c (create_dynamic_mono_image): Ditto.
14868
14869         * reflection.c (build_compressed_metadata): Use the new fields.
14870
14871         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
14872         icall.
14873
14874         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
14875         icall.
14876         
14877 2005-11-15  Ankit Jain  <jankit@novell.com>
14878             Raja R Harinath  <harinath@gmail.com>
14879
14880         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
14881         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
14882         new per-generic_container cache if the cached MonoType's context matches
14883         the current context.
14884           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
14885         to the expected context.
14886           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
14887
14888 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14889
14890         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
14891         we changed the signature of an icall.
14892         * icall.c: Modify to mono_double_ParseImpl return true/false 
14893         depending on the success, instead of throwing the exception. This will
14894         help us in Double.TryParse methods.
14895         
14896 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
14897
14898         * marshal.c (emit_marshal_object): Throw an exception when
14899         marshalling 'object' instead of crashing. Fixes #76696.
14900
14901 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14902
14903         * class-internals.h: Add prototype for mono_type_get_full_name ().
14904
14905 2005-11-11  Dick Porter  <dick@ximian.com>
14906
14907         * threads.c (mono_thread_manage): Make sure the main thread has
14908         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
14909
14910 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14911
14912         * loader.c (mono_loader_set_error_type_load): Log a warning to the
14913         console about the missing type.
14914         (mono_loader_set_error_method_load): Ditto.
14915
14916 2005-11-09  Miguel de Icaza  <miguel@novell.com>
14917
14918         * mono-config.c (mono_get_config_dir): Set the system defaults if
14919         none is specified.
14920
14921         * assembly.c (mono_set_dirs): New API entry point to set the
14922         assembly and the config directory in one call
14923
14924 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
14925
14926         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
14927         the ftnptr was created from a delegate in a domain other than the
14928         current domain. Fixes #75377.
14929
14930         * exception.h exception.c: Add mono_get_exception_not_supported ().
14931
14932 2005-11-08  Martin Baulig  <martin@ximian.com>
14933
14934         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
14935
14936 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
14937
14938         * security-manager.h: Added definitions to deal with strongname key 
14939         pairs bigger (and smaller) than 1024 bits.
14940         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
14941         adjust wrt the public key length being used.
14942
14943 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
14944
14945         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
14946           Windows build (r51396-51397).
14947
14948 2005-11-03  Martin Baulig  <martin@ximian.com>
14949
14950         * class.c (mono_class_setup_vtable_general): Also add generic
14951         methods to the vtable; fixes #76581.
14952
14953 2005-11-01  Miguel de Icaza  <miguel@novell.com>
14954
14955         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
14956         sure that we lookup GetString method from the System.Text.Encoding
14957         class, not the derived class or we get an empty method.
14958
14959         Fixed class #76612.
14960
14961 2005-10-25  Miguel de Icaza  <miguel@novell.com>
14962
14963         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
14964         if it has been previously set (embedders). 
14965
14966         Make mono_set_rootdir available also on Unix.
14967
14968 005-10-24  Robert Jordan  <robertj@gmx.net>
14969
14970         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
14971
14972 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14973
14974         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
14975         only calls which are made to native code use this flag.
14976
14977         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
14978
14979 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14980
14981         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
14982         Add support for FieldBuilders.
14983
14984 2005-10-29  Martin Baulig  <martin@ximian.com>
14985
14986         * mono-debug.c
14987         (mono_debug_using_mono_debugger): New public method; returns
14988         whether we're running inside the debugger.
14989
14990 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
14991
14992         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
14993         for Method/Constructor/FieldBuilders.
14994
14995 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14996
14997         * reflection.c (module_add_cattrs): Save custom attributes for global methods
14998         and fields as well.
14999
15000 2005-10-26  Martin Baulig  <martin@ximian.com>
15001
15002         * mono-debug-debugger.c
15003         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
15004
15005 2005-10-24  Raja R Harinath  <harinath@gmail.com>
15006
15007         * icall.c (base64_to_byte_array): Don't pass an out-of-range
15008         integer to isspace.
15009
15010 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15011
15012         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
15013         when passing valuetypes byref. Fixes #76502.
15014
15015 2005-10-19  Jackson Harper  <jackson@ximian.com>
15016
15017         * profiler.c: Don't put a . in front of types that are not in a
15018         namespace.
15019
15020 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15021
15022         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
15023
15024 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
15025
15026         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
15027         #76436.
15028         (mono_marshal_get_ldflda_wrapper): Fix a warning.
15029
15030 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15031
15032         * assembly.c metadata-internals.h icall.c: Define an additional
15033         parameter for mono_assembly_name_parse_full, so we can avoid creating
15034         S.R.AssemblyName.Version when no version info wasn't passed.
15035         
15036 2005-10-09  Miguel de Icaza  <miguel@novell.com>
15037
15038         * class.c (mono_type_get_full_name): Reimplement method that was
15039         removed. 
15040
15041         * image.c: Some docs
15042
15043 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15044
15045         * profiler.c (output_newobj_profile): Fix printing of Total memory
15046         on x86.
15047
15048 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15049
15050         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
15051
15052 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
15053
15054         * threads.c: remove debug output.
15055
15056 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15057
15058         * threads.c (mono_thread_manage): Fix crashes if more than 64
15059         threads need to be aborted. Hopefully fixes #75899.
15060
15061         * assembly.c (mono_stringify_assembly_name): New helper function.
15062
15063         * class.c: Use mono_stringify_assembly_name instead of the similar
15064         static function.
15065
15066         * assembly.h assembly.c: Add support for calling a postload search 
15067         hook if an assembly cannot be loaded.
15068
15069         * appdomain.c: Register new search hooks which call the AssemblyResolve
15070         events in AppDomain. Fixes #75231
15071
15072 2005-10-07  Martin Baulig  <martin@ximian.com>
15073
15074         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
15075         methods without debug info.
15076
15077 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15078
15079         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15080         wrappers.
15081
15082 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15083
15084         * file-io.c: now that we return symlinks, use lstat and, when the file
15085         is a symbolic link, stat, to get the file attributes. Also avoid the
15086         conversion to/from utf16/external.
15087
15088 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15089
15090         * class.c (mono_class_layout_fields): Compute klass->has_references
15091         correctly if an embedded valuetype is not yet initialized. Fixes
15092         #76331.
15093
15094 2005-10-04  Martin Baulig  <martin@ximian.com>
15095
15096         * metadata.c
15097         (mono_metadata_load_generic_param_constraints): New public
15098         function; splitted the constraints loading out from
15099         mono_metadata_load_generic_params().
15100
15101         * class.c (mono_class_create_from_typedef): Call
15102         mono_metadata_load_generic_param_constraints() after setting up
15103         the type and creating our parent; fixes #75329.
15104
15105 2005-10-04  Martin Baulig  <martin@ximian.com>
15106
15107         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15108         non-dynamic parent classes.
15109
15110 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15111
15112         * file-io.c : win32 build fix (ETXTBSY seems not found).
15113
15114 2005-10-04  Martin Baulig  <martin@ximian.com>
15115
15116         * reflection.c
15117         (mono_image_get_methodspec_token): Make the cache actually work;
15118         fixes #75974.
15119
15120 2005-10-04  Martin Baulig  <martin@ximian.com>
15121
15122         * class.c (mono_class_name_from_token): Removed the unneccessary
15123         `MonoGenericContext *' argument.
15124
15125 2005-10-04  Martin Baulig  <martin@ximian.com>
15126
15127         * loader.c
15128         (method_from_methodspec): Make the caching work again; fixes the
15129         performance regression from #76262.
15130
15131 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15132
15133         * file-io.c:
15134         * file-io.h:
15135         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15136         GetFileSystemEntries that performs the same work but without going
15137         into io-layer, locking, etc.
15138
15139 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15140
15141         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15142         ThreadState_Stopped as well. Fixes #76047.
15143
15144 2005-09-29  Martin Baulig  <martin@ximian.com>
15145
15146         * class.c
15147         (inflate_generic_context): If the new context has a `gmethod', set
15148         its `container' that that gmethod's `container'.
15149
15150         * metadata.c
15151         (mono_metadata_parse_generic_param): Simplify things;
15152         `generic_container = generic_context->container;' is just fine.
15153
15154         * loader.c (method_from_methodspec): Code cleanups.
15155
15156 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15157
15158         * decimal.c: fix warning (and let gcc generate correct
15159         code on ARM with optimizations).
15160
15161 2005-09-28  Martin Baulig  <martin@ximian.com>
15162
15163         * loader.c
15164         (method_from_memberref): Added `MonoGenericContext *class_context'
15165         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15166         (method_from_methodspec): If we're a memberref, use the enclosing
15167         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15168
15169 2005-09-28  Martin Baulig  <martin@ximian.com>
15170
15171         * object.c (mono_runtime_invoke_array): Added support for
15172         MONO_TYPE_GENERICINST; fixes #75917.
15173
15174 2005-09-27  Martin Baulig  <martin@ximian.com>
15175
15176         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15177         `k->byval_arg.type' to determine the actual type.
15178
15179         * loader.c (method_from_methodspec): Removed some hacks.
15180
15181 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15182
15183         * class-internals.h (mono_field_is_deleted): Do the test for
15184         rtspecialname before we check the actual name of the field. This
15185         prevents us from dereferencing a pointer into the string table,
15186         saving us from accessing a few pages
15187
15188         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15189         macros. This will allow a deadlock debugger to easily be plugged
15190         in.
15191
15192 2005-09-27  Martin Baulig  <martin@ximian.com>
15193
15194         * loader.c (method_from_methodspec): Create a "signature"
15195         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15196
15197 2005-09-27  Martin Baulig  <martin@ximian.com>
15198
15199         * class.c
15200         (inflate_generic_class): Correctly set the new context's
15201         container.
15202
15203         * loader.c
15204         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15205         instead of a `MonoGenericContext *'.
15206         (mono_method_signature_full): Take a `MonoGenericContainer *'
15207         instead of a `MonoGenericContext *'.
15208
15209         * metadata.c
15210         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15211         instead of a `MonoGenericContext *'.
15212         (mono_metadata_parse_method_signature_full): Likewise.
15213
15214 2005-09-26  Martin Baulig  <martin@ximian.com>
15215
15216         * class.c
15217         (mono_class_from_generic_parameter): Set `klass->generic_container'
15218         (mono_class_from_generic_parameter): Likewise.
15219         (mono_bounded_array_class_get): We inherit the generic container
15220         from the element class.
15221
15222         * loader.c
15223         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15224         argument rather than computing it here.
15225         (method_from_memberref): Correctly set the generic context before
15226         parsing the signature.  Fixes #75681.
15227
15228 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15229
15230         * object.c (mono_class_has_special_static_fields): Fix warnings.
15231
15232 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15233
15234         * assembly.c: Add parse_public_key function, to
15235         par the public keys. Also added mono_assembly_name_parse_full,
15236         to define it the parsed key should be freed or not.
15237         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15238         to parse a long format assembly name.
15239         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15240         private, since calling it to preserve the key requires
15241         freeing it manually.
15242         
15243 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15244
15245         * locales.c : removed HAVE_ICU part.
15246
15247 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15248
15249         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15250         field_is_special_static if the klass has no special static fields.
15251
15252         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15253         (MonoCachedClassInfo): Likewise.
15254
15255         * object.c (mono_class_has_special_static_fields): New helper function.
15256
15257 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15258
15259         * class.c (mono_class_create_from_typedef): Don't call 
15260         interfaces_from_typedef_full for enums.
15261         (mono_class_create_from_typedef): Compute the base types of enums directly
15262         without calling mono_class_setup_fields ().
15263         (mono_class_find_enum_basetype): New helper function.
15264
15265         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15266         one place inside the string heap.
15267         
15268 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15269
15270         * class.c: locking fixes, code cleanups, some docs added.
15271         Allocate some data structures in the image mempool.
15272
15273 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15274
15275         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15276         the example code.
15277         
15278 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15279
15280         * class-internals.h, class.c, reflection.c: reduce memory taken by
15281         MonoClass.
15282
15283 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15284
15285         * metadata.c, metadata.h, loader.h: documentation updates, code and
15286         API cleanups.
15287
15288 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15289
15290         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15291         the example code.
15292
15293         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15294         page faults caused by the runtime while reading metadata.
15295
15296 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15297
15298         * socket-io.c: the field names were changed 3 months ago and no one
15299         realized until bug #76077 got filed!
15300
15301 2005-09-20  Martin Baulig  <martin@ximian.com>
15302
15303         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15304
15305 2005-09-20  Martin Baulig  <martin@ximian.com>
15306
15307         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15308         write the rank into the class entry.
15309
15310 2005-09-20  Martin Baulig  <martin@ximian.com>
15311
15312         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15313
15314 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15315
15316         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15317
15318         * icall.c (custom_attrs_defined_internal): New icall.
15319
15320         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15321         function.
15322         (mono_custom_attrs_construct_by_type): New helper function.
15323
15324 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15325
15326         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15327         terminate the resulting string. Fixes #76123.
15328
15329 2005-09-16  Martin Baulig  <martin@ximian.com>
15330
15331         * mono-debug.c
15332         (mono_debug_add_method): Ignore inflated methods for the moment.
15333
15334 2005-09-14  Martin Baulig  <martin@ximian.com>
15335
15336         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15337
15338 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15339
15340         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15341         return a success/failure indication.
15342         (mono_metadata_interfaces_from_typedef_full): Ditto.
15343         (get_constraints): Ditto.
15344
15345 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15346
15347         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15348         
15349         * marshal.c (emit_marshal_array): Add support for returning string
15350         arrays from delegates. Fixes #76063.
15351
15352         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15353
15354 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15355
15356         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15357         icall.
15358
15359 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15360
15361         * reflection.c icall.c: Fix after mono_get_exception_type_load
15362         signature change.
15363
15364         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15365         (mono_assembly_load_reference): Use the new helper.
15366
15367         * class-internals.h (MonoLoaderError): New structure containing 
15368         information about type loading errors.
15369
15370         * class-internals.h loader.c: Add APIs to store per-thread loader
15371         error information.
15372
15373         * loader.c class.c: Set the loader error if needed.
15374
15375         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15376
15377 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15378
15379         * decimal.c: fixed to handle the broken ARM fp format.
15380
15381 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15382
15383         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15384         broken.
15385
15386 2005-09-06  Martin Baulig  <martin@ximian.com>
15387
15388         * domain.c (supported_runtimes): Added v2.0.50727.
15389
15390 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15391
15392         * culture-info.h: reduce the size of some structures.
15393
15394 2005-09-05  Martin Baulig  <martin@ximian.com>
15395
15396         Reflect latest API changes in the August CTP.
15397
15398         * icall.c
15399         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
15400         ("MonoType.HasGenericArguments"): Removed.
15401         ("MonoMethod.BindGenericParameters"): Renamed to
15402         "MakeGenericMethod".
15403         ("MethodBuilder.BindGenericParameters"): Renamed to
15404         "MakeGenericMethod".    
15405
15406 2005-09-05  Martin Baulig  <martin@ximian.com>
15407
15408         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
15409
15410 2005-09-05  Martin Baulig  <martin@ximian.com>
15411
15412         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15413
15414         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
15415         generic_container is non-NULL.
15416
15417 2005-09-05  Martin Baulig  <martin@ximian.com>
15418
15419         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15420
15421         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
15422
15423 2005-08-29  Michal Moskal  <malekith@nemerle.org>
15424
15425         * reflection.c (encode_locals,
15426         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
15427         for large generic types.
15428
15429 2005-09-05  Martin Baulig  <martin@ximian.com>
15430
15431         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15432
15433         * class.c (mono_dup_array_type): New public method.
15434         (mono_metadata_signature_deep_dup): New public method.
15435         (dup_type): Correctly duplicate array and function types.
15436
15437 2005-09-05  Martin Baulig  <martin@ximian.com>
15438
15439         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15440
15441         * reflection.c (get_default_param_value_blobs): Handle generic types
15442         and generic methods.
15443
15444 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
15445
15446         * class.c: Fixed error reporting (method/class were inversed) for 
15447         inheritance demands.
15448         * security-manager.c|h: Added the AppDomain when calling the managed
15449         System.Security.SecurityManager.InheritanceDemand method.
15450
15451 2005-09-01  Raja R Harinath  <rharinath@novell.com>
15452
15453         * reflection.c (encode_marshal_blob): 'marshaltype' and
15454         'marshaltyperef' are alternate sources for the custom marshaler
15455         name.
15456
15457 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
15458
15459         * class.c: fix creation of array classes with rank == 1
15460         (patch by Ankit Jain <jankit@novell.com>).
15461
15462 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
15463
15464         * object.c: fix check for creating the bound data for arrays vs
15465         szarrays.
15466
15467 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15468
15469         * object.c: configuration file name is now based on the executable name,
15470         not the image name. Fixes bug #75931.
15471
15472 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15473
15474         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
15475         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
15476
15477 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15478
15479         * rand.c: Use wincrypt.h instead of WinCrypt.h.
15480
15481 2005-08-24  Ankit Jain  <jankit@novell.com>
15482             Raja R Harinath  <rharinath@novell.com>
15483
15484         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
15485           called by it recursively.
15486           (mono_class_init): Remove special case in pending_init handling, since it's
15487           superseded by the fix to mono_class_from_typeref.
15488
15489 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15490
15491         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
15492         BROKEN_THREAD_START stuff.
15493
15494 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15495
15496         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
15497         trampoline.
15498
15499         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
15500         
15501         * object.c (mono_delegate_ctor): Replace the original function address with
15502         a delegate trampoline.
15503
15504 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
15505
15506         * icall.c: add boolean argument to base64_to_byte_array and 
15507         InternalFromBase64String to control whether a whitespace-only string
15508         is allowed (or should casue a FormatException to be thrown). We need
15509         this as the behavior has changed between MS.NET 1.x and 2.0, and we
15510         to match the MS behaviour in both profiles.
15511         * appdomain.c: Bump corlib version.
15512
15513 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15514
15515         This patch implements a big portion of publisher policy
15516         support, used to bind assembly versions and redirect
15517         one assembly from version A to version B.
15518
15519         * assembly.c:
15520         New GSList loaded_assembly_bindings, for storing the cached
15521         assembly bindings.
15522         (assembly_binding_maps_name): New static function for checking if a 
15523         assembly binding information maps an assembly name.
15524         (mono_assembly_binding_info_free): New function for freeing
15525         assembly binding information resources.
15526         (get_publisher_policy_info): New static function for retrieving 
15527         assembly binding information from a MonoImage.
15528         (compare_versions): New static function for comparing an assembly
15529         binding information data and the version of an assembly name.
15530         (check_policy_versions): New static function for checking if an
15531         assembly binding info mapping an assembly name is valid for it.
15532         (mono_assembly_load_publisher_policy): New static function for
15533         loading the 'policy.major.minor.MyAssembly' image for an assembly
15534         with an assembly name 'aname'.
15535         (mono_assembly_bind_version): New static function for updating
15536         assembly redirection.
15537         (mono_assembly_apply_binding): New static function for applying
15538         assembly binding.
15539         (search_binding_loaded): New static function for searching 
15540         loaded assembly binding infos in the cache domain.
15541         (mono_assembly_load_full): Don't apply assembly binding for
15542         reflection only assemblies.
15543
15544         * metadata-internals.h: Add MonoAssemblyBindingInfo,
15545         which contains information about assembly binding. Also
15546         declare signature for mono_config_parse_publisher_policy ()
15547         function, used to retrieve pub policy info.
15548         
15549         * mono-config.c:
15550         (publisher_policy_start): New static function used to parse publisher 
15551         policy config files.
15552         (publisher_policy_parser): New static MonoParseHandler containing 
15553         the functions used when parsing config files.
15554         (mono_config_parse_publisher_policy): New function for parsing
15555         publisher policy files.
15556         
15557 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15558
15559         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
15560
15561         * marshal.c (mono_delegate_free_ftnptr): Ditto.
15562
15563         * object.c (mono_get_addr_from_ftnptr): New helper function.
15564
15565         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
15566
15567         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15568
15569 2005-08-19  Dick Porter  <dick@ximian.com>
15570
15571         * threads.c, threads.h, appdomain.c, appdomain.h,
15572         profiler-private.h, monitor.c, object.c, object-internals.h,
15573         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
15574         store the thread ID, so it can hold a 64 bit value if needed.
15575
15576 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15577
15578         * reflection.c (mono_reflection_create_dynamic_method): Store the
15579         handle class into the method references as well so ldtoken works in
15580         dynamic methods.
15581
15582         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
15583         types.
15584
15585 2005-08-19  Ankit Jain <jankit@novell.com>
15586
15587         Fix #75847.
15588         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
15589           here rather than using the method signature of a arbitrary function
15590           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
15591           two arguments.
15592           Hack done with Harinath.
15593
15594 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15595
15596         * threadpool.c: disable printing stack traces when we get a exception
15597         in a threadpool thread. I need to do more testing to figure out which
15598         cases actually print this. Fixes bug #75828.
15599
15600 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15601
15602         * icall.c: there might be ignored whitespace after the last '='. This
15603         fixes length computation and bug #75840.
15604
15605 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
15606
15607         * assembly.c (mono_assembly_load_full): Consider .exe extension as
15608         well. Fixes #75809.
15609
15610         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
15611         #75784.
15612         
15613         * reflection.c (create_custom_attr_data): Ditto.
15614
15615 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
15616
15617         * locales.c, culture-info.h : removed RegionLCIDMap.
15618         * culture-info-tables.h : regenerated.
15619
15620 2005-08-16  Martin Baulig  <martin@ximian.com>
15621
15622         * class.c (mono_type_get_name_recurse): Small fix.
15623
15624 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
15625
15626         * locales.c : indentation fixie.
15627
15628 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
15629
15630         * object-internals.h,
15631           locales.h,
15632           locales.c,
15633           culture-info.h,
15634           icall.c : added RegionInfo table support.
15635         * culture-info-table.h : regenerated for region support.
15636
15637 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
15638
15639         * reflection.c (resolve_object): handle all kinds of MonoMethod
15640         including generic ones
15641
15642 2005-08-12  Ankit Jain <jankit@novell.com>
15643
15644         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
15645           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
15646
15647 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
15648
15649         * process.c: Don't close a thread handle when it's NULL. This is a
15650         workaround for bug #75733.
15651
15652 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15653
15654         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
15655
15656 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
15657
15658         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
15659
15660 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15661
15662         * threadpool.c: if a work item in the thread pool has a callback that
15663         catches a exception, don't propagate it after invoking the callback.
15664         Fixes bug #75336.
15665
15666 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15667
15668         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
15669
15670         * class-internals.h (MonoCachedClassInfo): Add some new fields.
15671
15672         * class.c (mono_class_init): Load field info lazily in the AOT case.    
15673
15674         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
15675
15676 2005-08-03  Ankit Jain  <jankit@novell.com>
15677
15678         Fix #75683.
15679         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
15680           PInvoke calling convention is 0.
15681
15682 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
15683
15684         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
15685         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
15686
15687 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
15688
15689         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
15690         to handle threads not started by the GC (patch by Michael Meeks
15691         <michael.meeks@novell.com>).
15692
15693 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
15694
15695         * reflection.c: Make buffer used in emitting types larger for some
15696         big generic types (patch by Michal Moskal).
15697
15698 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15699
15700         * mono-debug.c: Fix some (not all) alignment problems.
15701
15702 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15703
15704         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
15705         Invoke mono_image_load_from_data_full passing the refonly
15706         parameter.
15707
15708         * assembly.c
15709         (mono_assembly_open_from_bundle): Add the refonly argument, 
15710         in order to pass it to other methods it calls to.
15711         (do_mono_assembly_open): Add the refonly argument, in order 
15712         to pass it to other methods it calls to.
15713         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
15714         the refonly parameter to it.
15715
15716         * image.c: Add loaded_images_refonly_hash and
15717         loaded_images_refonly_guid_hash to cache the reflection
15718         only loaded images.
15719         (mono_images_init): Initialize the hash tables used for
15720         caching the reflection only images.
15721         (load_modules): Invoke mono_image_open_full passing the refonly
15722         parameter to load the modules the correct way.
15723         (build_guid_table): Add the refonly argument, to re-build the 
15724         correct hash table.
15725         (do_mono_image_open): Added the refonly argument, in order to
15726         define it for the loaded image.
15727         (mono_image_loaded_full): New function, which receives an
15728         additional parameter to look for the image in the refonly or
15729         non-refonly section.
15730         (mono_image_loaded): Updated, using mono_image_loaded_full.
15731         (mono_image_loaded_by_guid_full): The same case that happens
15732         with mono_image_loaded_full.
15733         (mono_image_loaded_by_guid): Likewise.
15734         (register_image): Use the ref_only variable inside MonoImage
15735         to decide in which hash table store the current image.
15736         (mono_image_open_from_data_full): Rename
15737         mono_image_open_from_data to mono_image_open_from_data_full,
15738         adding the refonly argument, to define the ref_only variable 
15739         inside MonoImage.
15740         (mono_image_open_from_data): Return 
15741         mono_image_open_from_data_full.
15742         (mono_image_open_full): Rename mono_image_open to
15743         mono_image_open_full, receiving the new refonly argument,
15744         to pass it to inner methods.
15745         (mono_pe_file_open): Update this function, to open
15746         a MonoImage as a non-refonly image.
15747         (mono_image_close): Use the refonly variable inside
15748         MonoImage to remove the image from the correct caches.
15749
15750         * image.h: Add the signatures of mono_image_open_full,
15751         mono_image_open_from_data_full, mono_image_loaded_full,
15752         mono_image_loaded_by_guid_full.
15753
15754         * metadata-internals.h: Add the ref_only field to 
15755         MonoImage.
15756         
15757 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15758
15759         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
15760         Fix the last behavior, which used to load the assemblies and
15761         extract MonoReflectionAssemblyName information, instead of
15762         extract it from the metadata tables. Needed for Reflection
15763         Only assemblies.
15764         
15765 2005-07-29  Martin Baulig  <martin@ximian.com>
15766
15767         * mono-debug-debugger.c
15768         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
15769         not initialized.
15770
15771         * mono-debug.c
15772         (mono_debug_address_from_il_offset): Check whether we have
15773         debugging support before attempting to take the lock.
15774         (mono_debug_source_location_from_address): Likewise.
15775         (mono_debug_source_location_from_il_offset): Likewise.
15776         (mono_debug_il_offset_from_address): Likewise.
15777         (mono_debug_address_from_il_offset): Likewise.
15778
15779 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
15780
15781         * class.c (mono_class_from_name_case): Add support for dynamic images.
15782         Fixes #75650.
15783
15784         * object.c (mono_class_compute_gc_descriptor): Add a workaround
15785         for #75479.
15786
15787 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15788         
15789         * reflection.c (mono_method_get_object): Fix warning.
15790
15791 2005-07-28  Martin Baulig  <martin@ximian.com>
15792
15793         * mono-debug.c
15794         (mono_debug_add_wrapper): Also write the wrapper type.
15795
15796 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15797
15798         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
15799         
15800         * class.c (mono_class_init): Avoid reading nested classes if the AOT
15801         data indicates the class has none.
15802
15803 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
15804
15805         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
15806         loader lock with the debugger lock. Prevents deadlocks for beagle.
15807
15808         Beagle can now run on an smp box for a weekend without any
15809         issues. Woohoo!
15810
15811 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
15812
15813         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
15814         in a module. Fixes #75629.
15815
15816 2005-07-26  Martin Baulig  <martin@ximian.com>
15817
15818         * mono-debug.c (mono_debug_add_wrapper): New static method.
15819         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
15820         interncall or a wrapper.
15821
15822         * mono-debug.h (MonoDebugWrapperData): New public typedef.
15823         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
15824         (MONO_DEBUGGER_VERSION): Bump to 51.
15825
15826         * mono-debug-debugger.c
15827         (mono_debugger_add_type): Removed this empty function.
15828         (mono_debugger_add_method): Likewise.
15829
15830 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
15831
15832         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
15833         before accessing method->slot.
15834
15835 2005-07-21  Jb Evain  <jbevain@gmail.com>
15836
15837         * reflection.c (method_encode_clauses/class): Handle filters clauses.
15838         Fixes #75010.
15839
15840 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
15841
15842         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
15843         #75587.
15844
15845 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15846
15847         * image.h image.c: Add mono_image_get_guid () API function.
15848
15849 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
15850
15851         There were issues when multiple threads tried to load
15852         assemblies. A deadlock was created between assemblies_mutex and
15853         mono_domain_assemblies_lock. This fixes the issue by making the
15854         assembly ref counting be lock free. See bug 75586.
15855         
15856         * image.c (mono_image_close): The add ref function here was using
15857         Interlocked operations while the unref was using a mutex and a
15858         --. I don't think this was ever a bug that would be exposed in a
15859         non-pendantic way (ie, by an embedder doing a ref on one thread
15860         and an unref on another), but for the sake of correctness, this is
15861         now Interlocked.
15862
15863         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
15864         (mono_assembly_load_reference): Call mono_assembly_addref rather
15865         than touching the refcount ourselves.
15866         (mono_assembly_close): Use InterlockedDecrement to unref the
15867         assembly. Don't acquire the lock unless it is actually needed.
15868
15869 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
15870
15871         * class.c (mono_class_layout_fields): Fix calculation of has_references
15872         for generic types.
15873
15874 2005-07-12  Martin Baulig  <martin@ximian.com>
15875
15876         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15877
15878         * metadata.c
15879         (mono_type_hash): Provide better hashing for generic instances.
15880         (mono_generic_inst_hash): Improve hashing.
15881         (mono_generic_class_hash): Likewise.
15882
15883         * reflection.c (mymono_metadata_type_hash): Improve hashing for
15884         generic instances.
15885
15886 2005-07-12  Martin Baulig  <martin@ximian.com>
15887
15888         * reflection.c (mono_reflection_create_runtime_class): Remove the
15889         hack for generic type definitions and non-`Run' assemblies.
15890         (mono_reflection_bind_generic_parameters): Also use
15891         `klass->wastypebuilder' to check for TypeBuilders.
15892
15893 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
15894
15895         * class.c (mono_class_layout_fields): Fix calculation of has_references
15896         for generic types.
15897
15898         * class.c (inflate_generic_class): Fix a leak.
15899         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
15900         for generic types.
15901
15902 2005-07-11  Martin Baulig  <martin@ximian.com>
15903
15904         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
15905         on error.
15906
15907 2005-07-11  Martin Baulig  <martin@ximian.com>
15908
15909         * loader.c (find_method): Also lookup in
15910         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
15911
15912 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15913
15914         * appdomain.c (mono_domain_unload): Don't free the error message
15915         before passing it to mono_get_exception_...
15916
15917         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
15918         
15919 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
15920
15921         * threads.c: try to better guess an available RT signal (bug #75387).
15922
15923 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15924
15925         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
15926         and CACHE_OBJECT.
15927
15928 2005-07-07  Martin Baulig  <martin@ximian.com>
15929
15930         * class.c (mono_type_get_name_full): Return NULL for
15931         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
15932         fixes #75408.
15933
15934 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15935
15936         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
15937         exit the appdomain as well being aborted.
15938
15939         * threadpool.c: Create all threadpool threads inside the root appdomain, and
15940         change back to the root domain after calling managed code. This enables
15941         appdomains using threadpools to be unloaded.
15942
15943 2005-07-07  Martin Baulig  <martin@ximian.com>
15944
15945         * class-internals.h
15946         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
15947         into `MonoDynamicGenericClass' since we only need it for dynamic
15948         types.
15949
15950         * reflection.c (mono_class_bind_generic_parameters): We don't need
15951         to compute the `parent' here.
15952
15953 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
15954
15955         * culture-info-table.h : regenerated.
15956
15957 2005-07-06  Martin Baulig  <martin@ximian.com>
15958
15959         * icall.c
15960         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
15961
15962         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
15963
15964 2005-07-06  Martin Baulig  <martin@ximian.com>
15965
15966         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
15967         we're doing a signature-only comparision; fixes #74945.
15968
15969 2005-07-06  Martin Baulig  <martin@ximian.com>
15970
15971         * class-internals.h (MonoGenericClass): Moved some things out into
15972         a new `MonoInflatedGenericClass' type.  
15973         (MonoInflatedGenericClass): New type; the `klass' of a
15974         `MonoGenericClass' is now computed lazyly in
15975         mono_get_inflated_generic_class().      
15976
15977         * class.c (mono_get_inflated_generic_class): New public function.
15978         (mono_class_inflate_generic_method): Removed the unused
15979         `MonoClass *' argument.
15980         (setup_generic_vtable): Don't call mono_get_inflated_method() on
15981         all the methods.
15982         (mono_class_create_generic): Make this static and merge it with
15983         mono_class_create_generic_2(); we're now called automatically from
15984         mono_get_inflated_generic_class().
15985
15986         * loader.c (mono_method_signature): Call
15987         mono_get_inflated_method() here.
15988
15989 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
15990
15991         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
15992         type of fields with RVA.
15993
15994         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
15995         for this pseudo class.
15996         (my_mono_class_from_generic_parameter): Likewise.
15997         (mono_class_init): Allow interfaces to have cctors.
15998
15999 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16000
16001         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
16002         lazily for AOT methods.
16003
16004 2005-07-05  Martin Baulig  <martin@ximian.com>
16005
16006         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
16007         returns FALSE for a successful match, not TRUE.
16008
16009 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16010
16011         * loader.c (mono_method_get_index): Optimize this a bit.
16012
16013 2005-07-04  Martin Baulig  <martin@ximian.com>
16014
16015         * class.c
16016         (class_compute_field_layout): Move the check for generic type
16017         definitions into mono_class_layout_fields().  Fixes #74684.
16018         (mono_class_from_generic_parameter): Correctly compute
16019         `klass->parent'; fixes #75457.
16020
16021         * reflection.c (register_assembly, register_module): Make sure
16022         `domain->rejobject_hash' is already created.
16023
16024 2005-07-02  Martin Baulig  <martin@ximian.com>
16025
16026         * class-internals.h
16027         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
16028         `MonoDynamicGenericClass'.      
16029
16030 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
16031
16032         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
16033         returned by a field getter is null, since null is a valid value.
16034
16035 2005-07-01  Martin Baulig  <martin@ximian.com>
16036
16037         * reflection.c (mono_reflection_generic_class_initialize): Update
16038         the `dgclass->fields [i].parent' to the correct class.
16039         (mono_image_get_fieldref_token): Use the declaring type, not the
16040         reflected type.
16041
16042 2005-07-01  Martin Baulig  <martin@ximian.com>
16043
16044         * loader.c (find_method): Also look in the interfaces; fixes #75429.
16045
16046 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
16047
16048         * threads.c (thread_cleanup): assert that thread != NULL
16049         (wait_for_tids_or_state_change): We were using the wrong variable
16050         when accessing wait->threads. `i' was always out of the bounds of
16051         the array.
16052
16053 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16054
16055         * loader.c: map user32 and kernel32 to libMonoSupportW
16056
16057 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16058
16059         * appdomain.c (unload_thread_main): Mark this as WINAPI.
16060
16061 2005-06-28  Martin Baulig  <martin@ximian.com>
16062
16063         * loader.c (method_from_methodspec): Fix #75334.
16064
16065 2005-06-28  Martin Baulig  <martin@ximian.com>
16066
16067         Fix #74953 - Arrays now implement the generic IList<T> interface
16068         on the 2.0 platform.
16069
16070         * class-internals.h (MonoDefaults): Added `generic_array_class'.
16071
16072         * reflection.c (mono_class_bind_generic_parameters): New public
16073         function; similar to mono_reflection_bind_generic_parameters(),
16074         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
16075
16076         * domain.c (mono_init_internal): Try to initialize.
16077         `mono_defaults.generic_array_class' here; this'll only succeed if
16078         we're using the 2.0 corlib.
16079
16080         * icall.c
16081         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16082         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16083         (mono_lookup_internal_call): Added support for nested classes.
16084
16085         * loader.c
16086         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16087         we're an interncall and have generic arguments.
16088
16089         * class.c
16090         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16091         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16092         instance of System.Array.InternalArray<T> for arrays, so they
16093         implement the generic IList<T> interface.
16094
16095 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16096
16097         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16098         (chastamar@yahoo.com). Fixes #75374.    
16099
16100 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16101
16102         * culture-info-table.h: regenerated.
16103
16104 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16105
16106         * icall.c: handle spaces correctly for base64 strings.
16107
16108 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16109
16110         * *.c: Kill some warnings.
16111
16112 2005-06-23  Duncan Mak  <duncan@novell.com>
16113
16114         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16115         that this builds on Solaris 10 (x86).
16116
16117 2005-06-23  Martin Baulig  <martin@ximian.com>
16118
16119         * class.c
16120         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16121         generic type definitions.
16122
16123 2005-06-23  Martin Baulig  <martin@ximian.com>
16124
16125         Fix #75331.
16126
16127         * metadata.c (mono_class_get_overrides): Renamed to
16128         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16129         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16130         pass it to mono_get_method_full().
16131
16132 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16133
16134         * reflection.c (mono_reflection_create_runtime_class): take the
16135         mono_domain_lock in this method. Prevents deadlocks
16136
16137 2005-06-22  Martin Baulig  <martin@ximian.com>
16138
16139         * loader.c (method_from_methodspec): Fix #75330.
16140
16141 2005-06-22  Martin Baulig  <martin@ximian.com>
16142
16143         * reflection.c (type_get_qualified_name): Use
16144         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16145         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16146         argument; use it if we don't have an assembly name.
16147
16148 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16149
16150         * object.c: In mono_message_init, set "copy out" flag for in
16151         parameters with the [Out] flag.
16152
16153 2005-06-21  Martin Baulig  <martin@ximian.com>
16154
16155         * class.c
16156         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16157         and MONO_TYPE_PTR.
16158
16159 2005-06-21  Martin Baulig  <martin@ximian.com>
16160
16161         * class.c (mono_class_init): Don't initialize `class->fields' for
16162         generic instances since they're initialized again in
16163         compute_field_layout(). 
16164         (compute_field_layout): Set the field's `generic_info' here; fix
16165         #75320. 
16166
16167 2005-06-21  Martin Baulig  <martin@ximian.com>
16168
16169         * class-internals.h
16170         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16171
16172         * metadata.c (mono_metadata_generic_method_equal): Also
16173         distinguish the `generic_class'; fixes #75334.
16174
16175 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16176
16177         * domain.c:
16178         * appdomain.c:
16179         * domain-internals.h:
16180         * reflection.c: 'domain_assemblies' field is now protected by its own
16181         lock. Don't call into managed code to run the AssemblyLoad event if we
16182         now there are no registered delegates for it.
16183
16184 2005-06-20  Martin Baulig  <martin@ximian.com>
16185
16186         * class.c (mono_class_is_assignable_from): Use a custom version of
16187         mono_class_has_parent() to make things work for generic instances;
16188         fix #75300.
16189
16190 2005-06-20  Martin Baulig  <martin@ximian.com>
16191
16192         * loader.c (method_from_methodspec): Apply a patch from
16193         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16194
16195 2005-06-20  Martin Baulig  <martin@ximian.com>
16196
16197         * class.c (mono_class_init): Reverted Zoltan's last change; it
16198         breaks generics.
16199
16200 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16201
16202         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16203
16204 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16205
16206         * socket-io.c: fix the index in the socket array for writable/error
16207         sockets. Fixes bug #75306.
16208
16209 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16210
16211         * class.c (mono_class_init): Allow interfaces to have static ctors.
16212
16213 2005-06-17  Martin Baulig  <martin@ximian.com>
16214
16215         * loader.c (method_from_methodspec): Use `context->container' when
16216         parsing the `gmethod->inst'.
16217
16218 2005-06-17  Martin Baulig  <martin@ximian.com>
16219
16220         * class.c (mono_type_get_name_recurse): Don't add the assembly
16221         name for type arguments.
16222
16223 2005-06-15  Martin Baulig  <martin@ximian.com>
16224
16225         * reflection.c (mono_image_get_inflated_method_token): Encode
16226         correct klass; fixes #75260.
16227
16228 2005-06-13 Michal Moskal <malekith@nemerle.org>
16229
16230         * icall.c: Make GetCorrespondingMethod/Constructor take
16231         MonoReflectionMethod method not MonoMethod. Removed
16232         MonoType.GetCorrespondingField, and make
16233         MonoGenericType.GetCorrespondingField take name not
16234         MonoClassField.
16235
16236 2005-06-13  Michal Moskal <malekith@nemerle.org>
16237
16238         * reflection.c (field_encode_signature, encode_locals):
16239          Make sizes of buffers for types larger (for big generic types).
16240          (create_generic_typespec,
16241          mono_reflection_sighelper_get_signature_local,
16242          mono_reflection_sighelper_get_signature_field):
16243          Add asserts for too small buffers.
16244
16245 2005-06-15  Martin Baulig  <martin@ximian.com>
16246
16247         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16248         if our parent is not a dynamic type.
16249
16250 2005-06-15  Martin Baulig  <martin@ximian.com>
16251
16252         * class-internals.h (MonoTypeNameFormat): New enum.
16253
16254         * class.c
16255         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16256         (mono_type_get_full_name): Removed.
16257         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16258         argument instead of the boolean's.
16259
16260         * icall.c (ves_icall_System_MonoType_getFullName):
16261         Added `gboolean assembly_qualified'.    
16262
16263         * reflection.h
16264         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16265
16266         * reflection.c (mono_reflection_parse_type): Parse the new type
16267         name format.
16268
16269 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16270
16271         * icall.c: no need to convert from utf16 to utf8 and then back again
16272         after the call to GetLogicalDrives.
16273
16274 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16275
16276         * icall.c: frombase64. Fix problems exposed by new tests.
16277
16278 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16279
16280         * icall.c: added internal calls for converting char [] and strings in
16281         base64 into byte [].
16282
16283 2005-06-10  Martin Baulig  <martin@ximian.com>
16284
16285         * class.c (mono_class_create_generic_2): Read the nested classes
16286         from the metadata rather than from `gklass->nested_classes' since
16287         `gklass' might not be initialized yet.
16288
16289 2005-06-09  Duncan Mak  <duncan@novell.com>
16290
16291         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16292         all public headers. Fixes #74919.
16293
16294 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16295
16296         * domain.c: The key for proxy_vtable_hash is now a pointer
16297         array. Added new GHashFunc and GCompareFunc functions for this.
16298
16299         * class.h: The list of interfaces in MonoRemoteClass is known in
16300         advance and can't grow (we create a new MonoRemoteClass if needed),
16301         so now the interface array can be allocated together with
16302         MonoRemoteClass.
16303         
16304         * object.c: Added a new method create_remote_class_key.
16305         Fixed mono_remote_class so it does not depend on
16306         mono_upgrade_remote_class.
16307         Removed extend_interface_array.
16308         Added new method clone_remote_class(), which makes a copy of a remote
16309         class and adds a new interface or class to it.
16310         mono_upgrade_remote_class() now creates a new remote class (or gets
16311         it from the cache) if an vtable upgrade is needed. In this way
16312         we make sure that other objects sharing the same remote class
16313         don't get the new vtable with unwanted interfaces.
16314         
16315         * object-internals.h:
16316         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16317         
16318         * marshal.c: Track changes in mono_upgrade_remote_class().
16319
16320 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16321         * icall.c: Add runtime methods for obtaining members of inflated
16322         class, which were created from supplied non-inflated members. It
16323         is used in internal Get{Method,Constructor,Field} methods in
16324         System.Type
16325
16326 2005-06-09  Martin Baulig  <martin@ximian.com>
16327
16328         * reflection.c
16329         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16330
16331 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16332         * reflection.c (mono_image_basic_init): Define
16333         Version in MonoDynamicAssembly. 
16334         
16335 2005-06-08  Martin Baulig  <martin@ximian.com>
16336
16337         Fix #75136.
16338
16339         * loader.c
16340         (mono_method_signature_full): New public method; takes a
16341         `MonoGenericContext *'.
16342         (find_method): Use mono_method_signature_full() and pass the
16343         klass'es context to it.
16344
16345         * class.c (mono_class_is_inflated_method): Use
16346         mono_method_signature_full() and pass the context to it.
16347
16348 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16349
16350         * object.c: add proper locking in mono_remote_class_vtable(),
16351         fixes possible memory corruption.
16352
16353 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16354
16355         * marshal.c (mono_remoting_marshal_init): set
16356         initialized after initialization.
16357
16358 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16359
16360         * locales.c : hush.
16361
16362 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16363
16364         * object.c (extend_interface_array): fix really silly
16365         memory corrupting / comparison bug.
16366
16367 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16368
16369         * reflection.c: Functions added to support the creation
16370         of CustomAttributeData, which includes Attribute data
16371         used by ReflectionOnly methods.
16372
16373         * reflection.h:  mono_reflection_get_custom_attrs_data and
16374          mono_custom_attrs_data_construct added (functions exposed).
16375
16376          * icall.c: Added mono_reflection_get_custom_attrs_data
16377          as icall.
16378         
16379 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16380
16381         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16382         lupus's request.
16383
16384 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16385
16386         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16387
16388         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16389         dynamic DllImportAttribute.
16390
16391         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16392         dynamic DllImportAttribute.
16393
16394         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
16395         Fixes #75162.
16396
16397 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16398
16399         * threads.c: avoid segfault when an unstarted thread is aborted.
16400
16401 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
16402
16403         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
16404         Returns the name and version of the runtime for reporting.
16405
16406 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16407
16408         * appdomain.c: bump corlib version.
16409         * object-internals.h: new field in MonoReflectionAssembly.
16410
16411 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16412
16413         * object-internals.h: Carlos forgot to add this field.
16414
16415 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16416
16417         * icall.c: Added create_version to create instances
16418         of Version of MonoReflectionAssemblyName. This change helps
16419         the AssemblyName tests to keep running fine.
16420         
16421 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
16422   
16423         * object.c (mono_method_return_message_restore): A somehow less
16424         intrusive fix for #75138.
16425
16426 2005-06-03  Raja R Harinath  <rharinath@novell.com>
16427
16428         * object.c (mono_method_return_message_restore): Fix computation
16429         of expected number of out args.
16430
16431 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16432
16433         * reflection.c (mono_image_get_method_info): Fix the case when the
16434         charset is empty.
16435
16436 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
16437
16438         * object.c: Added missing null check in
16439           mono_method_return_message_restore.
16440
16441 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16442
16443         * reflection.c (mono_image_get_method_info): Handle the case when
16444         dllentry is empty.
16445
16446 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
16447
16448         * object.c: When creating the vtable for a proxy, take into account
16449         all inherited interfaces, not only the ones registered in
16450         iclass->interfaces. This fixs bug #74996.
16451         Also, in mono_method_return_message_restore, verify that the array
16452         of out args has the expected lengh.
16453
16454 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16455
16456         * socket-io.c: update the timeout in Poll when the call is interrupte.
16457
16458 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16459
16460         * socket-io.c: support abort/suspend in Select_internal after last
16461         change.
16462
16463 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16464
16465         * threadpool.c: remove warning.
16466
16467 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16468
16469         * icall.c:
16470         * socket-io.[ch]: Select_internal uses poll() now when available, thus
16471         removing the 1024 limit from select(). Runtime part of the fix for
16472         bug #71203.
16473
16474 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16475
16476         * socket-io.c: when resolving the addresses for the same
16477         host returned by gethostname(), get the local IPs from the interface
16478         list. Loopback addresses are discarded if the are interfaces up with
16479         non-loopback ones. Fixes bug #63265.
16480
16481 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
16482
16483         * appdomain.c, verify.c, object-internals.h, reflection.c:
16484         bumped corlib number to 36, and added new extra_flags field
16485         to ReflectionMethodBuilder and friends.  Fixes #75060.
16486
16487 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
16488
16489         * gc.c: register a new weak link only if the object is non-null
16490         (fixes bug#75047).
16491
16492 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16493
16494         * culture-info.h : short time pattern too.
16495
16496 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16497
16498         * culture-info.h : expand long time pattern string length.
16499
16500 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16501
16502         * culture-info-table.h : update (more French date format; #72788).
16503
16504 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
16505
16506         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
16507         the method is static. Fixes #75029.
16508
16509 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
16510
16511         * reflection.c: Update the table_idx field of method builders after
16512         saving the module, since it can change. This is a workaround for
16513         bug #74914. 
16514
16515 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16516
16517         * culture-info-table.h : update (additional French date format).
16518
16519 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * icall.c (ves_icall_type_Equals): Revert last change.
16522         
16523         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
16524
16525         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
16526
16527 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
16528
16529         * class-internals.h: Added executioncontext_class field to 
16530         MonoDefaults structure.
16531         * domain.c: Cache System.Threading.ExecutionContext class in 
16532         mono_defaults.
16533         * object.c: Capture the ExecutionContext for asynchroneous calls in
16534          mono_async_result_new.
16535         * object-internals.h: Added execution_context and original_context 
16536         fields to MonoAsyncResult. Added execution_context to MonoThread.
16537         * security-manager.c|.h: Added mono_get_context_capture_method to 
16538         return the capture method (if required by the security manager or by
16539         the framework version used).
16540         * threadpool.c: Apply capture (if present) ExecutionContext in 
16541         mono_async_invoke and revert to original context after it completes.
16542
16543 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
16544
16545         * culture-info-table.h : updated (real hacky solution for zh-CHT).
16546
16547 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
16548
16549         * culture-info-table.h : zh-CHT related workaround.
16550
16551 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16552
16553         * marshal.c (emit_marshal_custom): Add some error checking and call the
16554         methods in the ICustomMarshaler interface. Fixes #74875.
16555         
16556         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
16557         native->managed wrappers.
16558
16559 2005-05-12  Martin Baulig  <martin@ximian.com>
16560
16561         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
16562         here and use the loader lock.
16563
16564         * mono-debug.c: Properly lock when the debugger is not attached.
16565         (mono_debug_init): Release the initial lock if we're not running
16566         in the debugger.
16567
16568 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16569
16570         * marshal.c (emit_marshal_custom): Pass through NULL values without
16571         calling the custom marshalling routines.
16572
16573         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
16574         conversion in structures. Fixes #74882.
16575
16576 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
16577
16578         * culture-info-table.h : zh-* cultures were missing.
16579
16580 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
16581
16582         * threads.c: Added a new event background_change_event which is signaled
16583         when a thread changes its background mode.
16584         Moved here several checks previously done in managed code. The checks
16585         require the thread lock, and using the thread lock in managed code
16586         can result in deadlocks.
16587         Merged Start_internal and Thread_internal into a single method. Now 
16588         Thread_internal does all work of creating and starting a thread.
16589         Added icalls for setting and getting the state of the object. Moved from
16590         managed code to avoid locking there.
16591         Added wait_for_tids_or_state_change() which is called instad of
16592         wait_for_tids when waiting for non-backround threads to end. This method
16593         will return if one of the threads ends or the background_change_event
16594         is signaled.
16595         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
16596         the background mode. This method signals the background_change_event
16597         event.
16598         * icall.c:
16599         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
16600         removed Start_internal.
16601         
16602 2005-05-11  Martin Baulig  <martin@ximian.com>
16603
16604         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
16605         to order of some fields to get proper alignment on 64-bit machines.
16606
16607 2005-05-11  Martin Baulig  <martin@ximian.com>
16608
16609         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
16610         changes as they're broken and completely fuck up the debugger.
16611
16612         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
16613
16614 2005-05-10  Martin Baulig  <martin@ximian.com>
16615
16616         * reflection.c (mono_reflection_generic_class_initialize): Don't
16617         call mono_class_setup_parent() here.
16618
16619 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16620
16621         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
16622         send/receive timeout use an integer in milliseconds. We were using a
16623         struct timeval.
16624
16625 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16626
16627         * locales.c:
16628         (internal_get_cultures): reserve the first slot of the array for the
16629         InvariantCulture, which will be filled in managed code.
16630
16631 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
16632
16633         * reflection.c (mono_image_fill_module_table): Initialize the
16634         GENERATION field as well.
16635
16636 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16637
16638         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
16639         Monitor.Enter on the object.
16640
16641 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16642
16643         * threads.c: Enable the wait for running threads when exiting.
16644         * icall.c: Suspend all threads before exiting.
16645
16646 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16647
16648         * assembly.c (mono_assembly_load_reference): Fix warning.
16649
16650 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16651
16652         * threadpool.c: changed the default number of threads per cpu. From now
16653         on, the default will be 20 + (5 * number of cpus) instead of 50.
16654
16655 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
16656
16657         * loader.c (mono_method_get_signature_full): Add locking here.
16658
16659 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
16660
16661         * appdomain.c: Moved methods for parsing and freeing assembly
16662         names to assembly.c.
16663         * assembly.c, domain-internals.h: Created public methods for parsing
16664         assembly names. Fixed mono_assembly_load_with_partial_name:
16665         it now finds the best match, taking into account the version,
16666         token and culture specified in the partial name. Also return
16667         the latest version if no version information is specified.
16668
16669 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
16670
16671         * threadpool.c: replace check for SocketAsyncCall class.
16672
16673 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16674
16675         * threadpool-internals.h:
16676         * Makefile.am: added threadpool-internals.h
16677
16678         * threadpool.c: call mono_unhandled_exception on exceptions not handled
16679         that happen in threadpool threads (tested on MS).
16680         (mono_thread_pool_remove_socket): new function that dispatch any pending
16681         AIO call on a socket that is closing. By now only epoll really needs it,
16682         as select/poll wake up when the socket closes.
16683
16684
16685         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
16686
16687 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
16688
16689         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
16690
16691 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
16692
16693         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
16694
16695 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
16696
16697         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
16698         has an abort request, convert it into a suspend request.
16699
16700 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
16701
16702         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
16703         warning for the usage of `UnmanagedFunctionPointerAttribute' which
16704         is not supported yet.
16705
16706 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16707
16708         * image.c: register assemblies loaded from data (bundles) in the loaded
16709         assemblies hash. Fixes bug #74772.
16710
16711 2005-04-29  Martin Baulig  <martin@ximian.com>
16712
16713         * class.c (mono_type_get_name_recurse): Update to the new naming
16714         schema from the latest .NET 2.x beta2.
16715         (mono_class_setup_vtable_general): If we're a generic instance,
16716         copy the vtable from our generic type definition and inflate all
16717         the methods in it.
16718
16719         * loader.c (find_method): Update to the new naming schema from the
16720         latest .NET 2.x beta2.
16721
16722 2005-04-29  Raja R Harinath  <harinath@gmail.com>
16723
16724         * class.c (mono_class_init): Add a mono_loader_unlock to the
16725         #74734 fix.
16726
16727 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16728
16729         * icall.c (ves_icall_System_Environment_Exit): Remove the 
16730         suspend_all_other_threads () call for the time being, since it can hang.
16731
16732         * threads.c (mono_thread_manage): Similarly, disable the waiting for
16733         the background threads to exit, since it can also hang.
16734
16735         * class.c (mono_class_init): Applied patch from Ankit Jain 
16736         (radical@gmail.com). Avoid pending init errors when a field refers
16737         to a nested class using a typeref. Fixes #74734.
16738
16739         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
16740         this for dynamic modules.
16741
16742 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16743
16744         * threads.c: don't wait for threads that are in the process of aborting
16745         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
16746         and waiting for background threads to finish. This makes xsp and
16747         mod-mono-server exit without random length delays and/or hangs.
16748
16749 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16750
16751         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
16752
16753 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
16754
16755         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
16756         dynamic types to prevent infinite loops. Fixes #74727.
16757
16758         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
16759         ..._is_assignable_to.
16760
16761 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
16762
16763         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
16764
16765 2005-04-25  Martin Baulig  <martin@ximian.com>
16766
16767         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
16768
16769         * domain.c
16770         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
16771
16772         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
16773
16774         * reflection.c (build_compressed_metadata): Set metadata header
16775         version to 2.0.
16776
16777 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16778
16779         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
16780         number into an integral and a decimal part. Fixes #70473.
16781
16782         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
16783
16784 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
16785
16786         * culture-info-table.h : reflected the latest locale-builder output.
16787
16788 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16789
16790         * threadpool.c: check for SuspendRequested too when deciding if
16791         mono_thread_interruption_checkpoint should be called.
16792
16793 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16794
16795         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
16796         * threads.c: remove interruption_mutex and use Interlocked instead. When
16797         suspending all the threads, wait for all the suspended events at once.
16798         If we're shutting down and get an APC that is going to be queued,
16799         call mono_thread_execute_interruption immediately, as the thread might
16800         be sleeping on a pthread condition or mutex.
16801
16802         * icall.c: call mono_runtime_set_shutting_down before suspending the
16803         threads.
16804
16805         Fixes bug #74693. And now xsp is happier when exiting.
16806
16807 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16808
16809         * loader.c (mono_stack_walk): Fix #74690.
16810
16811 2005-04-22  Martin Baulig  <martin@ximian.com>
16812
16813         * mono-debug.h (MonoDebugMethodJitInfo): Added
16814         `MonoDebugMethodJitInfo *jit'.
16815
16816         * mono-debug.c (mono_debug_read_method): Cache the
16817         MonoDebugMethodJitInfo in `address->jit'.
16818         (mono_debug_free_method_jit_info): New public method.
16819
16820 2005-04-22  Martin Baulig  <martin@ximian.com>
16821
16822         * class.c (mono_class_is_assignable_from): Disallow
16823         type parameter -> interface.
16824
16825 2005-04-21  Dick Porter  <dick@ximian.com>
16826
16827         * threads.c (mono_thread_create): Turn an assertion into an error.
16828
16829 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16830
16831         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
16832         
16833         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
16834         Fix some gcc 4.0 warnings.
16835
16836 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
16837
16838         * file-io.c: fix alt dir separator char on unix systems
16839         and cleanup (fixes bug #71214).
16840
16841 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
16842
16843         * marshal.c: Use CALLVIRT instead of CALL when dispatching
16844         a call to a remote domain, since the method may be an
16845         interface method in the client domain. This fixes bug #74192.
16846
16847 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16848
16849         * threadpool.c: recv/send are now performed before going back to managed
16850         code to save one transition.
16851
16852 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16853
16854         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
16855
16856         * metadata/threadpool.c: removed hack to workaround the bug above.
16857
16858         Fixes bug #74618.
16859
16860 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16861
16862         * reflection.c reflection.h: Fix handling of parameter defaults in
16863         dynamic methods. Also fixes handling of parameter attributes.
16864         Fixes #74609.
16865
16866         * mono-debug.c (mono_debug_close_image): Fix warning.
16867
16868 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16869
16870         * socket-io.h: replaced old unused field with new 'blocking'.
16871         * threadpool.c: restore socket blocking state on windows(tm).
16872
16873 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
16874
16875         * icall.c: don't return the codebase in the AssemblyName[] returned by
16876         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
16877         * object-internals.h: Removed FIXME (fields were presents) and fixed
16878         versioncompat declaration.
16879
16880 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16881
16882         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
16883         not closed, so don't cleanup when it happens.
16884
16885 2005-04-13  Chris Toshok  <toshok@ximian.com>
16886
16887         * mono-debug-debugger.h: change prototype for
16888         mono_debugger_lookup_type.
16889
16890         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
16891         this function, although it should probably be named
16892         mono_debugger_init_type.
16893
16894 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16895
16896         * threadpool.c: fix non-AIO case.
16897
16898 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16899
16900         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
16901         the built-in profiler to measure just JIT compilation times.
16902
16903 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16904
16905         * threadpool.c: the epollfd might be closed by another thread at
16906         any time, so ignore EBADF at treat it as a "we're closing" sign.
16907
16908 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16909
16910         * threadpool.c: release the semaphores with a count equals to the number
16911         of working threads in both IO and regular pools. Fixed typo that messed
16912         up the count of IO pool threads. Don't initialize the pipe handles if
16913         we're using epoll.
16914
16915 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16916
16917         * threadpool.c: some systems don't like a NULL when deleting the socket
16918         from epoll.
16919
16920 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16921
16922         * threadpool.c: fix semaphore allocation.
16923
16924 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16925
16926         * threadpool.c: added epoll() based implementation for asynchronous IO
16927         that is used instead of the default poll() when available.
16928         It can be disabled by setting MONO_DISABLE_AIO.
16929
16930 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16931
16932         * threadpool.c: windows needs 'closesocket' and instead of returning
16933         0 when the stream is closed while in select, it returns -1. Fixes bug
16934         #74573.
16935
16936 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
16937
16938         * class.c (class_compute_field_layout): Fix the regression caused by
16939         the previous try.
16940
16941 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16942
16943         * threadpool.c: separate pool for socket async. IO.
16944         * threadpool.h: mono_max_worker_threads is not a global any more.
16945
16946 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16947
16948         * class.c (class_compute_field_layout): Fix #74549.
16949
16950 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16951
16952         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
16953         use 2 connected sockets instead.
16954
16955 2005-04-08  Miguel de Icaza  <miguel@novell.com>
16956
16957         * mono-config.c: Add new entry point for mkbundle
16958         mono_config_parse_memory. 
16959
16960 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16961
16962         * threadpool.c: removed another unused function.
16963
16964 2005-04-08  Ankit Jain  <radical@corewars.org>
16965
16966         * reflection.c (get_default_param_value_blobs): Add 'types'
16967         parameter to get the types encoded in the constant table.
16968         (mono_param_get_objects): Use the type from the constant table,
16969         not the type of the parameter, when creating default values.
16970         Handle null default values correctly.
16971
16972 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16973
16974         * file-io.c:
16975         * file-io.h:
16976         * threadpool.c:
16977         * threadpool.h:
16978         * icall.c:
16979         * socket-io.c: removed dead code for async IO.
16980
16981 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16982
16983         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
16984
16985         * threadpool.c: intercept socket async. calls and pass them to a thread
16986         that is polling and dispatching the job items to the threadpool as
16987         socket become ready. Fixes bugs #71217, #71933.
16988
16989         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
16990         between char and short/ushort arrays.
16991
16992         * socket-io.c: remove dead code.
16993
16994 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
16995
16996         * locales.c,
16997           icall.c : removed InternalToUpper_Comp() and
16998           InternalToLower_Comp().
16999
17000 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17001
17002         * char-conversions.h : The tables were incorrectly generated. Should
17003           be generated against invariant culture.
17004
17005 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17006
17007         * object.c (mono_runtime_invoke_array): Fix return value when 
17008         passing pre-created valuetype objects to ctors.
17009
17010         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
17011         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
17012         Fixes #74338.
17013
17014 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
17015
17016         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
17017         only used with --security and hides the wrong corlib version error.
17018
17019 2005-03-30  Joshua Tauberer  <tauberer@for.net>
17020
17021         * class.c: Changed mono_class_name_from_token so that types
17022         outside of a namespace don't have an initial period.  Improved
17023         the g_warning message used in _mono_class_get when loading
17024         fails.
17025         * assembly.c: In mono_assembly_load_reference, when an assembly
17026         can't be found, "No such file or directory" is misleading and
17027         unhelpful because a few paths were checked for the presence of
17028         the assembly.  When that happens (ENOENT), display a nicer
17029         message indicating the directories that were searched.  In all
17030         cases, the warning is made easier to read for non-hackers.
17031
17032 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17033
17034         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
17035         project/solution.
17036         * appdomain.h|domain.c: Removed inline from functions.
17037         * appdomain.c: Reduced warnings when compiling on windows.
17038         * icall.c: Fixed output_debug declaration to gunichar2*.
17039         * mono-config.c: Reduced warnings when compiling on windows.
17040         * rand.c: Added missing "windows.h". Added missing return value.
17041         * rawbuffer.c: Added missing winsock2.h for windows.
17042         * sysmath.h: Added mono-compiler.h header to allow/ease 
17043         compilation with non-GCC compilers.
17044         * threads.c: Fixed declarations to compile with VS.NET C compiler.
17045         Removed cast warnings.
17046
17047         Adapted from the work of J Lothian (for VC6).
17048
17049 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17050
17051         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
17052         from default_path.
17053
17054 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17055
17056         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
17057         the 2.0 profile.
17058
17059 2005-03-27  Raja R Harinath  <harinath@gmail.com>
17060
17061         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
17062         has to be in $(exec_prefix).  $(prefix) is for arch-independent
17063         stuff, and it would probably use $(prefix)/share rather than
17064         $(prefix)/lib.
17065
17066 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17067
17068         * console-io.c: added 2 includes that might be missing.
17069
17070 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17071
17072         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
17073         profile.
17074
17075         * reflection.c (create_custom_attr): Allocate the params array using
17076         alloca so it gets GC tracking.
17077
17078 2005-03-23  Chris Toshok  <toshok@ximian.com>
17079
17080         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17081         out some spew.
17082
17083 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17084
17085         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17086         changes to pick up any changes in prefix, etc.
17087
17088 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17089
17090         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17091         
17092         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17093         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17094
17095 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17096
17097         * class-internals.h object-internals.h class.c reflection.c: Extend the
17098         mono_lookup_dynamic_token () function to return the class of the
17099         token as well. 
17100
17101         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17102         well. Fixes #73848.
17103
17104 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17105
17106         * security-manager.c: Skip inheritance checks for intra-corlib
17107         class inheritance and method overrides. This skips a lot of checks
17108         and (anyway) permissions cannot work until corlib is loaded.
17109
17110 2005-03-23  Martin Baulig  <martin@ximian.com>
17111
17112         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17113         MONO_TYPE_GENERICINST.  
17114
17115 2005-03-23  Martin Baulig  <martin@ximian.com>
17116
17117         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17118
17119 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17120
17121         * class.c: added locking comments to some functions.
17122         Cache the interface offsets arrays (saves about 20 KB
17123         of runtime memory in a typical app).
17124         Reduce the time overhead in mono_class_setup_supertypes ().
17125
17126 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17127
17128         * icall.c: speedup and fix leaks in GetMethodsByName and
17129         GetPropertiesByName.
17130
17131 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17132
17133         * reflection.c: some locking fixes.
17134
17135 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17136
17137         * metadata.c: added missing break in case statement.
17138
17139 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17142         typedbyref return values. Fixes #73941.
17143
17144 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17145
17146         * security-manager.c|h: Added demandunmanaged method and 
17147         suppressunmanagedcodesecurity class to MonoSecurityManager.
17148         Renamed aptc class to allowpartiallytrustedcallers.
17149
17150 2005-03-17  Martin Baulig  <martin@ximian.com>
17151
17152         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17153
17154 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17155
17156         * file-io.c: disabled file async. IO using aio_*. It uses the
17157         threadpool now. Workaround for bug #73718.
17158
17159 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17160
17161         * assembly.h, mono-config.c: added code to deal with bundled configs
17162         for bundled assemblies.
17163
17164 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17165
17166         * *.c, private.h: cleanup, removing old private.h header file.
17167
17168 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17169
17170         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17171         and throw_on_unmappable_char attributes.
17172
17173 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17174
17175         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17176         _ProcessName_internal.
17177
17178 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17179
17180         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17181         #73631.
17182
17183         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17184         are no longer used.
17185
17186 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17187
17188         * object.c (compute_class_bitmap): Add support for generics. Fixes
17189         #73527.
17190
17191 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17192
17193         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17194
17195 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17196
17197         * filewatcher.c: commented out the code for windows watcher, as we don't
17198         use it (we use the managed implementation instead).
17199
17200 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17201
17202         * object-internals.h (MonoThread): Remove 'unused1' field.
17203
17204         * appdomain.c: Bump corlib version.
17205
17206         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17207
17208         * reflection.c (mono_reflection_create_runtime_class): Remove the
17209         AssemblyBuilder.Save optimization since it causes too many problems.
17210
17211 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17212
17213         * exception.c|h: Added mono_get_exception_reflection_type_load to
17214         create a ReflectionTypeLoadException object.
17215         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17216         to return NULL is a InheritanceDemand fails during reflection. Updated
17217         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17218         ReflectionTypeLoadException if an InheritanceDemand fails during 
17219         reflection. Added icall mapping for GetLinkDemandSecurity.
17220         * security-manager.c|h: Added ves_icall_System_Security_
17221         SecurityManager_GetLinkDemandSecurity internal call to return the
17222         class and methods permissions set for a LinkDemand. Removed unused
17223         fields in MonoSecurityManager.
17224
17225 2005-03-10  Martin Baulig  <martin@ximian.com>
17226
17227         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17228         it's a generic instance.
17229
17230 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17231
17232         * reflection.c (mono_get_object_from_blob): Applied patch from
17233         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17234
17235         * class.c (mono_class_is_assignable_from): Another try at fixing 
17236         #73469 without breaking anything.
17237
17238 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * class.c: (mono_class_is_assignable_from): Revert the last changes
17241         since they don't work with generics.
17242         
17243         * class.c (mono_class_is_assignable_from): Fix build bustage.
17244
17245         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17246         the managed IsAssignableFrom method. Fixes #73469.
17247
17248         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17249         function.
17250
17251 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17252
17253         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17254         memory when the remoting callback does not sets the out arguments.
17255         Fixes #73007.
17256
17257         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17258         by mistake.
17259
17260         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17261
17262         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17263
17264         * appdomain.c: Bump corlib version.
17265
17266 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17267
17268         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17269         function.
17270
17271         * threads.c (mono_thread_attach): Detect threads which are not started
17272         by the GC pthread wrappers.
17273
17274 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17275
17276         * icall.c: Added new icall for RNG.
17277         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17278         single handle on Linux to access /dev/urandom and fix #73183.
17279
17280 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17281
17282         * object.c: setting the new vtable in a transparent proxy object must
17283         not change the GC descriptor.
17284
17285 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17286
17287         * object.c: fixed compilation without GCJ support.
17288         * reflection.c: for runtime-created types ensure klass->has_references
17289         is correct (bug #73215).
17290
17291 2005-03-02  Martin Baulig  <martin@ximian.com>
17292
17293         * class.c (mono_class_is_assignable_from): Make this work if
17294         `oklass' is a generic instance; fixes #72831.
17295
17296 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17297
17298         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17299         with hasthis set.
17300         
17301         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17302
17303         * marshal.c: Reorganize native->managed marshalling code to also use
17304         the emit_marshal_... functions.
17305
17306 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17307
17308         * object.c: typed allocs have issues with bitmap sizes > 30,
17309         so check for max_set >= 30.
17310
17311 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17312
17313         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17314         managed code. Fixes #73012.
17315
17316         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17317
17318         * metadata.c reflection.c: Load/Emit elem_mult as well.
17319         
17320         * metadata.h (MonoMarshalSpec): Add comment.
17321
17322         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17323
17324         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17325         num_elem to -1 if not given.
17326
17327         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17328
17329         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17330         given values.
17331
17332 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17333
17334         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17335
17336 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17337
17338         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17339
17340         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17341
17342 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17343
17344         * object.c: generalized the reference bitmap creation
17345         and added hooks for the new GC.
17346         * class-internals.c: removed the gc_bitmap field from MonoClass.
17347
17348 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17349
17350         * domain.c: help the compiler to produce better code
17351         in mono_jit_info_table_find ().
17352
17353 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17354
17355         * object.c: make all allocations look typed.
17356
17357 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17358
17359         * socket-io.c: load Mono.Posix if it's not loaded already
17360         (fixes bug#73033).
17361
17362 2005-02-24  Martin Baulig  <martin@ximian.com>
17363
17364         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17365         * reflection.c (dup_type): Likewise.
17366
17367 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17368
17369         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17370         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17371
17372 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17373
17374         * domain.c, threads.c, object-internals.h: make the critical thread
17375         local vars use the fast access mode (even when we're compiled in
17376         a lib). Provide accessors to be used by the jit during codegen.
17377
17378 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17379
17380         * appdomain.c: Changed hook functios behavior to include
17381         support for the reflection only assemblies. Some icalls were changed
17382         to support the mentioned assemblies too. Signatures of static methods
17383         try_assembly_resolve and real_load now have an additional parameter:
17384         refonly.
17385
17386         * assembly.c: General changes to mono_assembly_ methods to support
17387         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17388         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17389         suffix, to support an additional gbool parameter to specify whether
17390         the assembli is reflection only or not. Created some new hook functions 
17391         to add support for reflection only assemblies. Signatures of static 
17392         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
17393         have now an additional parameter: refonly.
17394
17395         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
17396         indicating whether the assembly is reflection only or not.
17397
17398         * exception.c: Add mono_get_exception_invalid_operation.
17399
17400         * icall.c: Throw an InvalidOperationException when trying to invoke
17401         a property/method/event, or trying to set/get the value of a field.
17402         Also add an icall to retrieve the ref_only flag to the
17403         MonoReflectionAssembly.
17404
17405 2005-02-23  Chris Toshok  <toshok@ximian.com>
17406
17407         Part of fix for #72827.
17408         * mono-debug.c (mono_debug_add_method): add lexical block data to
17409         the info we write.  Kind of a hack at the moment - we copy the
17410         lexical block info from the MonoDebugMethodInfo to the
17411         MonoDebugMethodJitInfo here, before writing it.
17412         (mono_debug_read_method): read the lexical block info.
17413
17414         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
17415
17416         * debug-mono-symfile.h: add lexical block support.
17417
17418         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
17419         support.
17420
17421 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17422
17423         * loader.c (mono_lookup_pinvoke_call): Fix warning.
17424
17425         * object.c (mono_runtime_free_method): Call mono_free_method () and
17426         put the TODOs there.
17427
17428         * loader.c (mono_free_method): Free up most memory allocated for 
17429         dynamic methods.
17430
17431 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17432
17433         * reflection.c: properly flag a Type argument to a
17434         named custom attr value (bug #72248).
17435
17436 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17437
17438         * reflection.c: reduce code duplication in named custom
17439         attribute encoding.
17440
17441 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
17442
17443         * reflection.c: properly encode custom attrs of type object
17444         (bug #72649).
17445
17446 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17447
17448         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
17449
17450 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
17451
17452         * socket-io.c: load System.dll if it's not loaded already
17453         (bug #72850 and #70477).
17454
17455 2005-02-21  Martin Baulig  <martin@ximian.com>
17456
17457         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17458         generic instances.
17459
17460 2005-02-21  Martin Baulig  <martin@ximian.com>
17461
17462         * reflection.c (mono_image_build_metadata): We also need to
17463         "fixup" the MethodImpl table after we computed the final method
17464         indices.  Call fixup_methodimpl() to do that.
17465         (fixup_methodimpl): New private method.
17466
17467 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17468
17469         * assembly.c: special case mscorlib.dll (bug#72536),
17470         patch from Carlos Alberto Cortez.
17471
17472 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17473
17474         * threads-types.h threads.c: Fix build bustage.
17475
17476         * threads.c: Use a union for long<->double conversions.
17477
17478         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
17479         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
17480
17481         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
17482         containing the checkpoint call with NOT_TAKEN.
17483         
17484         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
17485         checkpoint before pushing the arguments, so they won't have to be
17486         spilled to stack.
17487
17488 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17489
17490         * domain.c, assembly.c, domain-internals.h: make some data
17491         const and relocation-free.
17492
17493 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17494
17495         * object.c, appdomain.c, class-internals.h: introduce the
17496         MonoClassRuntimeInfo structure to hold the info needed to
17497         use a class at runtime. Made mono_class_vtable() lock-free
17498         for all the appdomains.
17499
17500 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
17501
17502         * metadata-internals.h, image.c: introduce a per-image mempool to
17503         be used for memory that has the same lifetime as the image.
17504
17505 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
17506
17507         * domain.c: In mono_init_internal(), instead of selecting the first
17508         runtime version supported by an executable, get a list of all
17509         supported versions and select the one for which an mscorlib exists
17510         (since even if the runtime supports a given version, it doesn't mean
17511         that the framework for that version is installed).
17512         Modified get_runtimes_from_exe to support this behavior.
17513         In supported_runtimes, added information about additional system
17514         assembly versions.
17515         
17516         * assembly.c: Added support for more than one system assembly version
17517         per runtime version. Updated the assembly list.
17518         In mono_assembly_remap_version, removed the initial version check,
17519         since we don't know to which version we need to compare until we
17520         get the version set on which the assembly is based.
17521         Moved the code for loading corlib into the new method
17522         mono_assembly_load_corlib(), so it can be used by the initialization
17523         code.
17524         
17525         * domain-internals.h: Updated data structures and added declaration
17526         for mono_assembly_load_corlib.
17527
17528 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17529
17530         * reflection.c (resolve_object): Fix the creation of the signature in 
17531         the SignatureHelper case.
17532
17533         * assembly.c (mono_assembly_remap_version): Fix binary search.
17534         
17535 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
17536  
17537         * class.c: Added inheritance check when a method is overloaded (from a
17538         virtual method or when implementing an interface) and when a class is
17539         inherited. Added functions to set a failure for a class and to 
17540         retreive the exception from a failure.
17541         * class-internals.h: Added fields to MonoClass to keep the exception
17542         information status for inheritance (or other exceptions) to be thrown
17543         later (i.e. not at load time).
17544         * object.c: Throw the inheritance SecurityException when a type is to 
17545         be created with either class or method inheritance violations.
17546         * reflection.c|h: Fix when getting declsec from a class. Removed 
17547         unrequired code for class. Improved sanity in parameter naming.
17548         * security-manager.c|h: Added functions to check for class and method
17549         inheritance.
17550
17551 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17552
17553         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
17554         and has_finalize in dynamic types as well.
17555
17556 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
17557
17558         * culture-info-table.h : fixed currency format for en-GB (and so on).
17559
17560 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
17561
17562         * gc.c: ensure the GC handles never have 0 as a value.
17563
17564 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17565
17566         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
17567         a pointer to a struct to unmanaged code. Fixes #72625.
17568
17569 2005-02-16  Martin Baulig  <martin@ximian.com>
17570
17571         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
17572
17573 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17574
17575         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
17576
17577 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17578
17579         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
17580
17581         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
17582         UnmanagedFunctionPointerAttribute, use it for determining calling convention
17583         etc. Fixes #71471.
17584
17585         * reflection.c (mono_custom_attrs_get_attr): New helper function.
17586
17587         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
17588
17589 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
17590
17591         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
17592         changes to make the current context a field in MonoThread.
17593
17594 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17595
17596         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
17597         the last change.
17598         
17599         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
17600         extracted from mono_marshal_get_native_wrapper.
17601
17602         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
17603         to create wrappers around native functions.
17604
17605         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
17606         delegates for arbitrary function pointers. Fixes #71472.
17607
17608 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17609
17610         * threads.c: cleaned up the code a little.
17611
17612 2005-02-15  Martin Baulig  <martin@ximian.com>
17613
17614         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
17615         the data table.
17616
17617         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
17618         allocate larger chunks if needed.
17619
17620 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17621
17622         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
17623         in by mistake.
17624
17625 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
17626
17627         * domain.c: keep the domains in an array and ensure the domain ids
17628         are kept small, so they can be used as indexes to domain-specific data
17629         with a small memory overhead.
17630
17631 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17632
17633         * icall.c: Handle byref types in Type icalls. Fixes #72544.
17634
17635 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
17636
17637         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
17638
17639 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17640
17641         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
17642
17643         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
17644         values.
17645
17646         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
17647         
17648 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17649
17650         * domain-internals.h: add the hashtable here.
17651
17652         * class-internals.h: Remove `info' from MonoMethod
17653
17654         * domain.c: Add a new hashtable, jit_trampoline_hash
17655
17656 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17657
17658         * object.c: don't set the value of static fields
17659         (fixes bug#72494).
17660
17661 2005-02-11  Martin Baulig  <martin@ximian.com>
17662
17663         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
17664         (mono_debug_add_method): Silently ignore the method if it's too big.
17665         (mono_debug_add_type): Likewise.
17666
17667 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
17668
17669         * threads.c, appdomain.c: remove #ifdefs from the code.
17670
17671 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17672
17673         * metadata-internals.h: Added flags to MonoAssembly to cache the most
17674         common security informations. This allows us to stay in unmanaged code
17675         when doing LinkDemand and it's special cases (except for the first 
17676         time for initialization). The flags a very much used with --security.
17677         * reflection.c|h: Added code to get declarative security attributes 
17678         for LinkDemand and InheritanceDemand. This required to refactor the
17679         existing code for Demand.
17680         * security-manager.c|h: Added new method fields for the special cases
17681         of LinkDemand.
17682
17683 2005-02-10  Martin Baulig  <martin@ximian.com>
17684
17685         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
17686         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
17687
17688 2005-02-10  Martin Baulig  <martin@ximian.com>
17689
17690         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
17691         debugging code; this is almost a complete rewrite.
17692
17693         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
17694
17695 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17696
17697         * domain.c, object.h: expose mono_string_equal () and 
17698         mono_string_hash ().
17699         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
17700         it's implemented in managed code.
17701
17702 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17703
17704         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
17705         lo leak objects between appdomains.
17706
17707 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17708
17709         * assembly.c: old compilers compilation fix from 
17710         robertj@gmx.net (Robert Jordan).
17711
17712 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
17713
17714         * class-internals.h: Little reminder for the future.
17715
17716         * debug-helpers.c: Fix up wrapper_type_names
17717
17718 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17719
17720         * image.c, metadata-internals.h: when loading an image from a file,
17721         mmap all of it and use the same codepaths as when using a
17722         in-memory image: the code is simpler and we use less memory
17723         (both writable and readonly).
17724
17725 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17726
17727         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
17728         API to alloc runtime data structures that need to be tracked by the
17729         GC and contain pointers.
17730         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
17731         make the code more readable and eventually use a different GC.
17732
17733 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
17734
17735         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
17736         for out arguments.
17737         
17738 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
17739
17740         * object.c: In release_type_locks(), don't release the cctor lock
17741         if it has already been released. This fixes a crash in the
17742         thread5 test.
17743
17744 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17745
17746         * gc.c, marshal.c, icall.c: register a delegate for finalization
17747         only when the native function pointer has been allocated for it.
17748
17749 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17750
17751         * object.c: cleaned up some code, allocate objects that are
17752         pointer free with the atomic malloc variant. Allocate memory
17753         for static data from the mempool if it's pointer-free.
17754         Allocate the bounds array at the end of the array data, when needed.
17755         * object-internals.h, object.h: move a private function in a private
17756         header.
17757         * class.c: handle missing case in tracking references in fields.
17758
17759 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17760
17761         * class.c, class-internals.h: keep track if a type has
17762         reference fields in either the instance or static fields.
17763
17764 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
17765
17766         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
17767         and renamed to MonoRuntimeInfo. Added fields to store the expected
17768         framework assembly version. Changed mono_get_framework_version and
17769         mono_get_runtime_version for a single mono_get_runtime_info method.
17770         
17771         * assembly.c: Added method to remap system assembly versions to the
17772         current executing runtime version. Removed old mapping code.
17773         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
17774         
17775         * icall.c, reflection.c: Track api changes.
17776
17777 2005-02-06  Miguel de Icaza  <miguel@novell.com>
17778
17779         * loader.c (method_from_memberref): Improve error reporting,
17780         produce the class name instead of the typeref/typedef index. 
17781
17782 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
17783
17784         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
17785
17786 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17787
17788         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
17789         stdcall and charset name mangling.  Reorganize the code and add
17790         some tracing stuff.
17791
17792 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17793
17794         * monodiet.c: More iters!
17795
17796         * marshal.c: Iter usage.
17797
17798         * icall.c: Iter usage.
17799
17800         * object.c: Use iters.
17801
17802         * debug-helpers.c: More iters
17803
17804 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17805
17806         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
17807         under win32.
17808
17809 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17810
17811         * mono-debug-debugger.c: use iters
17812
17813         * class.c, class-internals.h: mono_class_setup_events is static
17814         now
17815
17816         * All callers: use iters
17817
17818 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17819
17820         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
17821         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17822
17823 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17824
17825         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
17826
17827         * marshal.h: Add prototypes for ldfld/stfld_remote.
17828
17829         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
17830         this is called during startup.
17831         
17832 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17833
17834         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
17835         MonoThreadsSync struct private in monitor.c. Changed the way
17836         MonoThreadsSync is allocated so it's faster and there is no
17837         need to keep track of it with a finalizer and it uses less memory.
17838         This also finally allows us to allocate mono objects as ptrfree when
17839         there are no reference fields.
17840
17841 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
17842
17843         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
17844         disappearing link to the GC interface and use them to simplify
17845         the gchandles code.
17846
17847 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17848
17849         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
17850         stfld_remote which call mono_load/store_field_new. This allows methods
17851         calling ldfld/stfld wrappers to be AOTed.
17852
17853         * console-io.c: Include sys/filio.h under solaris.
17854         
17855         * console-io.c: Include curses.h if needed correctly.
17856
17857 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17858         
17859         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
17860         method->klass as well.
17861
17862         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
17863
17864         * class.c (mono_class_init): Switch on lazy initialization of 
17865         methods.
17866
17867         * class.c (mono_class_get_finalizer): Handle the case when the 
17868         finalizer is inherited.
17869
17870 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17871
17872         * console-io.c: <curses.h> is needed by term.h on solaris.
17873
17874 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
17875
17876         * icall.c, class-internals.h, monodiet.c, class.c: Remove
17877         mono_class_setup_properties where possible. Remove this ftn from
17878         the header file, and make it static.
17879
17880 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17881
17882         * loader.c: Add missing setup_... call.
17883
17884         * class.c: Add missing setup_... calls.
17885
17886         * class.c (mono_class_init): Switch on lazy initialization of 
17887         the generic vtable.
17888         
17889         * class.c (mono_class_init): Fix generics broken by the recent changes.
17890
17891         * monodiet.c (handle_type): Add missing setup_... calls.
17892
17893         * class.c: Back out garbage in previous patch.
17894         
17895         * class.c: Add missing setup_... calls.
17896
17897         * class.c (mono_class_get_method_from_name_flags): Avoid calling
17898         mono_class_setup_methods () if possible.
17899
17900         * class-internals.h (MonoClass): Add 'has_cctor' flag.
17901
17902         * class-internals.h (MonoCachedClassInfo): New structure.
17903
17904         * class.c: Initialize properties and events fields of MonoClass lazily.
17905
17906         * class.c: Add infrastructure for lazily initializing the methods and
17907         vtable fields of MonoClass. Not yet used.
17908
17909         * class.c (mono_class_get_finalizer): New helper function.
17910
17911         * class.c: Add infrastructure for loading some class related data from
17912         an AOT file.
17913
17914         * object.c: Add infrastructure for initializing the vtable from data
17915         in the AOT file.
17916
17917         * gc.c (run_finalize): Use mono_class_get_finalizer ().
17918
17919         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
17920         appropriate initialization function before accessing parts of the
17921         MonoClass structure.
17922
17923         * marshal.c: Fix warnings.
17924         
17925         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
17926
17927         * mono-debug-debugger.c (get_exception_message): Use 
17928         mono_class_get_method_from_name_flags ().
17929
17930 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
17931
17932         * reflection.c, appdomain.c: Replace a few manual searches that
17933         Zoltan missed. (Paolo approved this part of my initial patch).
17934
17935 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
17936
17937         * profiler.c: disable recording statistical events at report time.
17938
17939 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17940
17941         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
17942         to byteswap arrays of enum values, too (bug #72080).
17943
17944 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17945
17946         * appdomain.c (set_domain_search_path): Allow this to be called if
17947         domain->setup is not yet set.
17948
17949         * loader.c (mono_method_get_index): New helper function.
17950
17951         * loader.c reflection.c: Use mono_method_get_index ().
17952
17953         * class.c (mono_class_get_method_from_name_flags): New helper method.
17954
17955         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
17956         this.
17957
17958         * class.c (mono_class_get_cctor): New helper method.
17959
17960         * string-icalls.c object.c class.c marshal.c reflection.c: Use
17961         mono_class_get_method () to look up methods.
17962
17963 2005-02-01  Miguel de Icaza  <miguel@novell.com>
17964
17965         * console-io.c: Fix the build, this should work on Windows.
17966
17967 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
17968
17969         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
17970         be set to null to keep things valid
17971
17972 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17973
17974         * icall.c: added Console 2.0 icalls.
17975         * Makefile.am: added console-io.[ch]
17976         * console-io.[ch]: internal calls for Console 2.0 API.
17977
17978 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17979
17980         * class.c: make sure we consider all the interfaces
17981         when calculating max_interface_id (bug found by
17982         Jeroen Frijters running ikvm).
17983
17984 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17985
17986         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
17987         valuetype fields to null.
17988
17989         * object.c (set_value): Ditto. Fixes #71669.    
17990
17991 2005-01-31  Martin Baulig  <martin@ximian.com>
17992
17993         * metadata.c (mono_metadata_has_generic_params): New public
17994         function; checks whether something is a generic method.
17995
17996 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17997
17998         * appdomain.c: fix infinite recursion when adding assemblies.
17999
18000 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
18001
18002         * object.c: Fix small typo to return all items for Environment.
18003         GetCommandLineArgs.
18004
18005 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18006
18007         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
18008         reflection.c: more domain and assembly-unload related fixes
18009         and memory leaks plugs.
18010
18011 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18012
18013         * 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.
18014
18015 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18016
18017         * loader.c (mono_method_signature): Make this method lazy
18018         (mono_get_method_from_token): Don't computate the signature here.
18019
18020         Doing this saves quite a bit of memory. I got 90 kb on starting up
18021         monodoc. It should also save some disk reads on startup.
18022
18023         * *: MonoMethod->signature might be NULL now. You *MUST* use
18024         mono_method_signature.
18025
18026 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
18027
18028         * object.c (mono_runtime_get_main_args): Return an array from the
18029         current domain here. Fixes #71938.
18030
18031 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18032
18033         * monitor.c: formatting changes to comply with the
18034         mono coding style and remove #ifdefs from the code.
18035
18036 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18037
18038         * metadata.c, private.h: remove some unneeded data
18039         and use a more compact representation for table schemas.
18040
18041 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18042
18043         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
18044         to get a better distribution in hash tables.
18045         * *.c: use mono_aligned_addr_hash() where appropriate.
18046         * assembly.c: make var static.
18047
18048 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18049
18050         * domain-internals.h: Put MonoJitInfo on a diet.
18051
18052         * domain.c: Fix a warning.
18053
18054 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18055
18056         * gc.c: rework the gc handles code to reuse handles
18057         when freed.
18058
18059 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18060
18061         * domain.c: fixed long standing bug in mono_string_equal() which
18062         was brought to light with the ldstr changes.
18063
18064 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18065
18066         * reflection.c: Remove warning by adding missing include for marshal.h
18067
18068 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18069
18070         * domain.c, object.c: change the ldstr_table to hold
18071         MonoString* as keys: makes the runtime isinterned lookup
18072         faster and simplifies memory management.
18073
18074 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
18075  
18076         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
18077         possible to add imperative security checks before calling the icall.
18078         * reflection.c: Return security attributes on the original MonoMethod
18079         (and not the wrapped one). This fix permissions on icalls.
18080
18081 2005-01-25  Dick Porter  <dick@ximian.com>
18082
18083         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18084         the check for mktime() support actually test the mktime() return
18085         value.  "Fixes" bug 71682, though the output is still different to
18086         MS.
18087
18088 2005-01-25  Martin Baulig  <martin@ximian.com>
18089
18090         * class.c (mono_class_is_assignable_from): Make this work for
18091         generic instances.
18092
18093 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18094
18095         * marshal.c (mono_string_utf8_to_builder)
18096         (mono_string_builder_to_utf16): We might not have ownership of the
18097         string. In thise case, we need to create a new buffer.
18098
18099         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18100         be null, in which case, use the default capacity.
18101
18102 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18103
18104         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18105         GC events to the profiler.
18106
18107 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18108
18109         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18110         if you don't want the GC to run.
18111
18112 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18113
18114         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18115         start providing a GC API and keeping different implementations in
18116         their own file.
18117         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18118
18119 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18120
18121         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18122         mmap rather than allocating a huge buffer.
18123         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18124         above.
18125
18126 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18127
18128         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18129         and CheckExecutionRights.
18130         * reflection.c|h: Keep the index of the declarative security to be 
18131         used, instead of the pointer, when AOT compiler is used. Also add 
18132         class initialization when requesting demands.
18133         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18134         CheckExecutionRights. Both properties are now FALSE by default, and
18135         unmodifiable, unless the --security option is used.
18136
18137 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18138
18139         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18140         reflection.c: properly refcount images and assemblies, many leaks fixed.
18141
18142 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18143
18144         * threadpool.c: increase the timeout for threads in the thread pool to
18145         10s.  Fixes bug #67159.
18146
18147 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18148
18149         * class-internals.h: Sun's compiler insists on explicit
18150         signed on bit fields to handle then correctly.
18151
18152 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18153
18154         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18155         Make the size of the array fit only the number of invalid path
18156         chars that we have.
18157
18158         * class.c (_mono_class_get): Improve the error reporting when a
18159         class referenced is not found, to assist debugging. 
18160
18161 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18162
18163         * threads.c: fix off-by-one error.
18164         * domain.c: free data allocated in the domain.
18165
18166 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18167
18168         * reflection.c (mono_method_body_get_object): Fill out exception info
18169         as well.
18170
18171         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18172         structure.
18173         
18174 2005-01-19  Martin Baulig  <martin@ximian.com>
18175
18176         * loader.c (mono_get_method_constrained): Make this work again.
18177
18178 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18179
18180         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18181         guint16 to match the managed side.
18182
18183         * reflection.c (mono_reflection_body_get_object): Fill out local
18184         variables array.
18185
18186         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18187         as well.
18188
18189         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18190         'local_var_sig_token'.
18191
18192 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18193
18194         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18195         System.Drawing.
18196
18197         * reflection.c (mono_method_body_get_object): Handle abstract and
18198         runtime methods.
18199
18200 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18201
18202         * marshal.c, loader.c, class-internals.h, reflection.c:
18203         store the emthod data for a wrapper in an array instead of a list.
18204
18205 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18206
18207         * marshal.c: change the code to allocate memory more
18208         conservatively for method wrappers.
18209
18210 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18211
18212         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18213         fields from MonoClass to the marshal info structure where they belong.
18214
18215 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18216
18217         * class.c, object.c, class-internals.h, marshal.c: rearrange
18218         some fields and tweak some types to lower memory usage.
18219
18220 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18221
18222         * threads.c (signal_thread_state_change): Handle the case when the
18223         target thread is the current thread.
18224
18225         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18226
18227         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18228         emit_ptr_to_object_conv. 
18229
18230         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18231         marshalling. Fixes #71352.
18232
18233 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18234
18235         * metadata.h, blob.h: move table enum to blob.h so it can be included
18236         in any header.
18237         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18238         cut the size of MonoImage/MonoDynamicImage.
18239
18240 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18241
18242         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18243
18244 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18245
18246         * reflection.c, reflection.h, icall.c: add a function to check
18247         if an attribute type is defined for a metadata object.
18248
18249 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18250
18251         * object-internals.h: Added some needed fields from StringBuilder class.
18252         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18253
18254 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18255
18256         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18257         threads before shutting down the runtime.
18258
18259         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18260
18261 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18262
18263         * object-internal.h, threads.c: implement stacksize and 
18264         parameterized thread start functionality (requires
18265         matching corlib). Marked broken code for later removal.
18266
18267 2005-01-12  Martin Baulig  <martin@ximian.com>
18268
18269         * class-internals.h (MonoGenericClass): Moved the `initialized'
18270         flag to MonoDynamicGenericClass, removed `init_pending'.
18271         (MonoGenericInst): Added `is_reference' flag.
18272
18273 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18274
18275         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18276         inside the MSDOS header. Fixes #71201.
18277
18278         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18279         gc thread.
18280         (mono_domain_finalize): Ditto.
18281
18282 2005-01-12  Martin Baulig  <martin@ximian.com>
18283
18284         * class.c (mono_get_shared_generic_class): Use the cache for
18285         non-dynamic generic classes.
18286
18287         * class-internals.h (mono_class_create_generic_2): Removed
18288         function prototype, this function is now static inside class.c.
18289
18290         * class.c (mono_class_create_generic_2): Made this static, only
18291         call it from mono_class_init() and mono_class_setup_parent().
18292         (collect_implemented_interfaces_aux): Call mono_class_init() on
18293         the interfaces we collect.
18294         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18295
18296 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18297
18298         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18299         it a real thread handle.
18300
18301         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18302         MonoJitExceptionInfo, since each catch clause needs its own variable.
18303         
18304 2005-01-11  Dick Porter  <dick@ximian.com>
18305
18306         * image.c (mono_pe_file_open): New variant on mono_image_open()
18307         that does not set up the CLI metadata; used for FileVersionInfo so
18308         it can get the data for windows binaries too.
18309         
18310         * process.c (process_read_string_block): Don't read off the end of
18311         the StringTable block.
18312
18313         These both fix bug 70766.
18314
18315 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18316
18317         * gc.c: set some fields to NULL at GC cleanup time.
18318         * threads.c: if we quit the main thread, call exit ().
18319
18320 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18321
18322         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18323
18324 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18325
18326         * threads.h, threads.c, object.c: added accessor and settor for
18327         main_thread. Handle it specially when exiting from it: wait
18328         for other foreground threads to exit.
18329
18330 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18331
18332         * process.c, verify.c: remove some bloat.
18333
18334 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18335
18336         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18337         the calling convention to cdecl under win32.
18338
18339 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18340
18341         * object.c (mono_object_get_size): New function to get the size of
18342         an object instance.
18343
18344         * profiler.c (simple_allocation): Use above.
18345
18346 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18347
18348         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18349         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18350         get an appdomain by it's id and we can't assume the root's id is 0).
18351         * domain-internals.h: Change the function prototype to match.
18352         * icall.c: Change the icall table for AppDomain.
18353
18354 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18355
18356         * locales.c (string_invariant_compare_char): Only compute
18357         GUnicodeTypes in the case where we need them.  Test for ordinality
18358         first and return if so.
18359
18360         From the commit:
18361
18362                 /*
18363                  * FIXME: here we must use the information from c1type and c2type
18364                  * to find out the proper collation, even on the InvariantCulture, the
18365                  * sorting is not done by computing the unicode values, but their
18366                  * actual sort order.
18367                  */
18368
18369 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18370
18371         * loader.c: for P/Invoke methods, allow the "Internal" shared
18372         library name to refer to the calling process symbol namespace.
18373
18374 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18375
18376         * Makefile.am: Add the security manager to the build.
18377         * security-manager.c|h: New. Initialization of the security manager.
18378
18379 2005-01-07  Dick Porter  <dick@ximian.com>
18380
18381         * threads.c: 
18382         * monitor.c: Update thread state during Monitor and WaitHandle
18383         waits.  Fixes bug 71031.
18384
18385 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18386
18387         * reflection.c (property_encode_signature): Correctly handle when the
18388         property has no methods.
18389
18390 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18391
18392         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
18393         
18394         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
18395         fields from mb, not rmb. Fixes #71017.
18396
18397         * marshal.c (emit_ptr_to_str_conv): Add support for 
18398         ByValTStr -> string conversion. Fixes #71015.
18399
18400         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
18401
18402         * mempool.c (mono_mempool_contains_addr): New helper function.
18403
18404 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18405
18406         * metadata.c (mono_metadata_compute_size): Fix size calculation of
18407         HasSematics encoded fields.
18408         
18409         * metadata.c (mono_type_to_unmanaged): Improve error message for 
18410         invalid string marshalling.
18411
18412         * metadata.c: Fix warnings.
18413         
18414 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18415
18416         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
18417         profiler support.
18418
18419 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18420
18421         * domain.c object.c domain-internals.h: Revert part of r38077 since the
18422         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
18423         tests.
18424
18425 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18426
18427         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
18428         so methods containing these can be AOTed.
18429
18430 2005-01-03  Martin Baulig  <martin@ximian.com>
18431
18432         * loader.c (find_method): Removed the hack for generic instances.
18433         (method_from_memberref): If our parent is a generic instance, pass
18434         its generic type definition to find_method() and then inflate the
18435         method.
18436         (mono_get_method_constrained): Pass the generic type definition to
18437         find_method() and inflate the method later.
18438
18439         * class-internals.h (MonoStats): Added `generic_class_count'.
18440
18441         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
18442         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
18443
18444         * reflection.c (mono_custom_attrs_from_params): Don't ignore
18445         generic type definitions.
18446
18447 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18448
18449         * loader.c icall.c: Fix warnings.
18450
18451 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
18452
18453         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
18454         blittable types. Fixes #70864.
18455
18456 2004-12-29  Martin Baulig  <martin@ximian.com>
18457
18458         * icall.c
18459         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
18460
18461         * reflection.c (mono_method_get_object): Create a
18462         "System.Reflection.MonoGenericMethod" for inflated methods; don't
18463         call mono_get_inflated_method().
18464
18465         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
18466
18467 2004-12-27  Martin Baulig  <martin@ximian.com>
18468
18469         * class-internals.h (MonoMethod): Added `is_inflated' flag.
18470         (MonoMethodInflated): Added `inflated' field.
18471
18472         * class.c (mono_class_inflate_generic_method): Don't really
18473         inflate the method here; just set the `is_inflated' flag in the
18474         MonoMethod.
18475         (mono_class_get_inflated_method): Actually inflate the method here
18476         if it's not already inflated; we use the MonoMethodInflated's new
18477         `inflated' field as a cache.
18478
18479 2004-12-26  Martin Baulig  <martin@ximian.com>
18480
18481         * class.c
18482         (inflate_generic_class): Moved some code out of inflate_generic_type().
18483         (mono_class_inflate_generic_method): If we're already inflated,
18484         inflate the context and use the declaring method; ie. make sure
18485         the declaring method of an inflated method is always the generic
18486         method definition.
18487         (mono_class_create_from_typedef): Create
18488         `class->generic_container->context->gclass'.
18489
18490 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18491
18492         * metadata-internals.h, marshal.c, reflection.c: More
18493         MonoGHashTable->GHashTable.
18494
18495         * domain-internals.h, class.c: Change MonoGHashTable's into
18496         GHashTables for some cases where no gc stuff is used
18497
18498         All users: update apis
18499
18500 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
18501
18502         * metadata.c (builtin_types): Make this `const'. Makes this get
18503         put into the shareable section.
18504         (mono_metadata_init): Casts to make gcc happy.
18505
18506 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
18507
18508         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
18509
18510 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
18511
18512         * icall.c: Added an internal call to retrieve the position and length
18513         of assembly-level declarative security attributes (RequestMinimum, 
18514         RequestOptional and RequestRefuse). This is used by the Assembly class
18515         to re-create the corresponding permission sets.
18516
18517 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18518
18519         * marshal.c: fix the stelemref wrapper to be type correct
18520         (and faster).
18521
18522 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18523
18524         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
18525         to do key & 0x7fffffff. Hashtable already does this. It just
18526         results in longer code.
18527
18528 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18529
18530         * appdomain.c: Bump corlib version.
18531         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
18532         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
18533         * reflection.c|h: Add functions to get declarative security infos
18534         (blob position and length) for assemblies, classes and methods.
18535
18536 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
18537
18538         * reflection.c: sort the constant table (bug #70693).
18539
18540 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
18541
18542         * object-internals.h, threads.c, domain.c: add accessors for
18543         the MonoThread and MonoDomain tls keys.
18544
18545 2004-12-18  Martin Baulig  <martin@ximian.com>
18546
18547         * class.c (inflate_generic_type): If we're inflating a generic
18548         instance, set `ngclass->context->container = context->container';
18549         ie. the container we inflated into.
18550
18551         * metadata.c (mono_metadata_parse_generic_param): Reflect above
18552         inflate_generic_type() changes.
18553
18554 2004-12-17  Martin Baulig  <martin@ximian.com>
18555
18556         * class-internals.h
18557         (MonoGenericClass): Replaced `MonoType *generic_type' with
18558         `MonoClass *generic_class'.  Removed `dynamic_info'; if
18559         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
18560         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
18561
18562 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18563
18564         * exception.c (mono_exception_from_token): New helper function.
18565
18566 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18567
18568         * assembly.c (mono_assembly_load_with_partial_name): Call 
18569         mono_assembly_loaded before invoking the preload hooks. Fixes
18570         #70564.
18571
18572         * object-internals.h (MonoThread): Change culture_info and 
18573         ui_culture_info into an array.
18574
18575         * threads.c: Cache culture info objects from more than one appdomain.
18576
18577         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
18578         current UI culture.
18579
18580 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18581
18582         * threads.h threads.c appdomain.c: Clear the culture_info field of
18583         all threads during unloading if they point to an object in the dying
18584         appdomain.
18585
18586 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
18587
18588         * culture-info.h (TextInfoEntry): New struct
18589         * object-internals.h: sync with managed
18590         * locales.c: fill the `text_info_data' field
18591         * culture-info-tables.h: update
18592
18593 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18594
18595         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
18596         collector.
18597
18598 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
18599
18600         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
18601         (ves_icall_ModuleBuilder_getMethodToken): Ditto
18602
18603 2004-12-12  Martin Baulig  <martin@ximian.com>
18604
18605         * mono-debug-debugger.c (write_type): If we're an enum and the
18606         builtin types have already been initialized, call mono_class_init().
18607
18608 2004-12-11  Martin Baulig  <martin@ximian.com>
18609
18610         * metadata.c (mono_metadata_load_generic_params): Added
18611         `MonoGenericContainer *parent_container' argument; automatically
18612         compute `container->is_method'; pass the correct owner to
18613         get_constraints().      
18614
18615         * reflection.c (compare_genericparam): Sort the GenericParam table
18616         according to increasing owners. 
18617
18618 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18619
18620         * profiler.c: allow disabling the default profiler.
18621
18622 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
18623
18624         * decimal.c, icall.c: allow disabling System.Decimal support.
18625
18626 2004-12-09  Marek Safar <marek.safar@seznam.cz>
18627
18628         * reflection.c: Add support for null attribute arguments.
18629
18630 2004-12-09  Martin Baulig  <martin@ximian.com>
18631
18632         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
18633         names to get rid of compiler warnings.
18634
18635 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18636
18637         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
18638         mono_marshal_load_type_info (). Fixes #69625.
18639         (mono_marshal_get_ptr_to_struct): Likewise.
18640
18641 2004-12-08  Martin Baulig  <martin@ximian.com>
18642
18643         * mono-debug.h: Bumped version number to 47.
18644
18645         * mono-debug-debugger.c
18646         (mono_debugger_event_handler, mono_debugger_event): Take two
18647         guint64 arguments insteed of a gpointer and a guint32.  
18648
18649 2004-12-08  Martin Baulig  <martin@ximian.com>
18650
18651         * debug-mono-symfile.h
18652         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
18653         `address' to `native_offset'.
18654
18655 2004-12-08  Martin Baulig  <martin@ximian.com>
18656
18657         * class.c (mono_class_create_from_typespec): Only inflate if we
18658         either have `context->gclass' or `context->gmethod'.
18659
18660 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18661
18662         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
18663
18664         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
18665
18666         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
18667
18668         * reflection.c (mono_assembly_get_object): Remove the workaround put
18669         in for the release.
18670         
18671         * appdomain.c: Use the corlib_internal field from MonoAssembly.
18672
18673         * appdomain.c: Bump corlib version.
18674
18675         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
18676         be visible in other appdomains.
18677
18678 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
18679
18680         * threads.c: Interlocked inc and dec for longs were messed up,
18681         use a KISS based impl for this. Fixes 70234
18682
18683 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18684
18685         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
18686
18687 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18688
18689         * icall.c: fix to follow policy not to allow struct
18690         arguments in icalls.
18691
18692 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18693
18694         * process.c: make the patch that handles spaces in file paths work
18695         on mono/windows too.
18696
18697 2004-12-06  Martin Baulig  <martin@ximian.com>
18698
18699         * class.c (mono_class_create_generic): Call
18700         mono_class_setup_supertypes() if we're dynamic.
18701         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
18702
18703 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18704
18705         * object-internals.h: Add new fields to MonoThread.
18706
18707         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18708
18709         * icall.c threads-types.h threads.c: Add new icalls.
18710
18711         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
18712
18713         * object-internals.h (MonoReflectionAssembly): Sync object layout with
18714         managed side.
18715
18716         * appdomain.c: Bump corlib version.
18717
18718         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
18719         internal assemblies. Fixes #69181.
18720
18721 2004-12-05  Martin Baulig  <martin@ximian.com>
18722
18723         * class.c (mono_class_inflate_generic_signature): Make this a
18724         no-op if `context' is NULL or we don't have any type parameters;
18725         also copy `sentinelpos'.        
18726
18727 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
18728
18729         * image.c: Add unbox_wrapper_cache.
18730
18731         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
18732
18733         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
18734         function generator.
18735         
18736         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
18737         Fixes #70173.
18738
18739         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
18740         
18741 2004-12-04  Martin Baulig  <martin@ximian.com>
18742
18743         * loader.c (mono_method_get_signature_full): New public function;
18744         like mono_method_get_signature(), but with an additional
18745         `MonoGenericContext *' argument.
18746
18747         * class.c (mono_class_inflate_generic_signature): Formerly known
18748         as inflate_generic_signature(); make this public.
18749
18750 2004-12-04  Martin Baulig  <martin@ximian.com>
18751
18752         * metadata.c
18753         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
18754         instead of a `MonoGenericContainer *'.  
18755         (mono_metadata_parse_array_full): Likewise.
18756         (mono_metadata_parse_signature_full): Likewise.
18757         (mono_metadata_parse_method_signature_full): Likewise.
18758         (mono_metadata_parse_generic_inst): Likewise.
18759         (mono_metadata_parse_generic_param): Likewise.
18760         (mono_metadata_parse_mh_full): Likewise.
18761         (mono_type_create_from_typespec_full): Likewise.
18762
18763 2004-12-03  Martin Baulig  <martin@ximian.com>
18764
18765         * class-internals.h (MonoGenericContainer): Replaced the
18766         `MonoGenericContext * pointer with a `MonoGenericContext'
18767         structure and made it the first element.
18768
18769 2004-12-03  Martin Baulig  <martin@ximian.com>
18770
18771         * class.c
18772         (inflate_generic_type): Set the `context->container' when creating
18773         a new MonoGenericContext.
18774         (mono_class_inflate_generic_method): Likewise.
18775         (mono_class_create_from_typespec): Just use `context->container'
18776         to get the container.
18777
18778         * loader.c (method_from_methodspec): Set `context->parent' from
18779         `context->container' - and if that's a method container, use its
18780         parent.  Also set the `context->container' when creating a new
18781         MonoGenericContext.
18782         (mono_get_method_from_token): Use just `context->container' to get
18783         the container.
18784
18785         * metadata.c (do_mono_metadata_parse_generic_class): Also set
18786         `gclass->context->container'.
18787
18788         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
18789         the `context->container' when creating a new MonoGenericContext.
18790
18791 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
18792
18793         * reflection.c (compare_genericparam): Sort params with identical
18794         owner by their number. Fixes gen-111 on sparc.
18795
18796 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18797
18798         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
18799         around the domain changes.
18800
18801         * appdomain.c (mono_domain_unload): Handle the case when the thread
18802         calling Unload is itself being aborted during unloading. Fixes #70022.
18803
18804         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
18805
18806         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
18807         checkpoint_func as an icall so it gets a wrapper.
18808         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
18809         in the cross-appdomain wrappers too.
18810
18811         * threads.c (mono_thread_has_appdomain_ref): Make this public.
18812
18813         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
18814
18815         * reflection.c: Fix some memory leaks.
18816         
18817 2004-12-02  Martin Baulig  <martin@ximian.com>
18818
18819         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
18820
18821         * metadata.c (generic_class_cache): New static hashtable.
18822         (mono_metadata_lookup_generic_class): New public method.
18823
18824 2004-12-02  Martin Baulig  <martin@ximian.com>
18825
18826         * class.c (mono_class_create_from_typedef): Call
18827         mono_class_setup_parent() and mono_class_create_mono_type() before
18828         parsing the interfaces.
18829
18830 2004-12-02  Martin Baulig  <martin@ximian.com>
18831
18832         * metadata.c (generic_inst_cache): New static hashtable.
18833         (mono_metadata_lookup_generic_inst): New public function.
18834         (mono_metadata_inflate_generic_inst): New public function.
18835         (mono_metadata_parse_generic_inst): New public function.
18836         (do_mono_metadata_parse_generic_class): Use the new
18837         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
18838         since this'll also use the cache.
18839
18840         * reflection.c (mono_reflection_bind_generic_method_parameters):
18841         Use mono_metadata_lookup_generic_inst() to use the new cache.
18842
18843         * class.c (inflate_mono_type): Use
18844         mono_metadata_inflate_generic_inst() to inflate a generic
18845         instance; this'll also use the new cache.
18846
18847         * loader.c (method_from_methodspec): Use
18848         mono_metadata_parse_generic_inst() and
18849         mono_metadata_inflate_generic_inst() rather than parsing it
18850         manually, so we can use the new cache.
18851
18852 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18853
18854         * threads.c (wait_for_tids): Do not incorrectly free threads when 
18855         the wait times out.
18856
18857 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18858
18859         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
18860         iter->args based on whether parameters are passed in registers (i.e.
18861         MONO_ARCH_REGPARMS is defined)
18862
18863 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
18866         the exception message. Fixes #70070.
18867         (method_from_methodspec): Fix warnings.
18868
18869 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18870
18871         * process.c: (complete_path) return the path quoted
18872
18873 2004-12-01  Martin Baulig  <martin@ximian.com>
18874
18875         * class-internals.h (MonoGenericInst): New structure.
18876         (MonoGenericClass): Replaced `type_argc', `type_argv' and
18877         `is_open' with `MonoGenericInst *inst'.
18878         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
18879         `is_open' with `MonoGenericInst *inst'.
18880
18881 2004-11-30  Martin Baulig  <martin@ximian.com>
18882
18883         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
18884
18885         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
18886         to `generic_class_cache'.
18887
18888         * metadata.c
18889         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
18890         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
18891         (mono_generic_inst_is_valuetype): Renamed to
18892         mono_generic_class_is_valuetype().
18893
18894         * class-internals.h
18895         (MonoGenericInst): Renamed to MonoGenericClass.
18896         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
18897         (MonoClass): Renamed `generic_inst' to `generic_class'.
18898         (MonoGenericContext): Renamed `ginst' to `gclass'.
18899
18900         * object-internals.h
18901         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
18902
18903         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
18904         mono_reflection_generic_class_initialize().
18905
18906         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
18907         now known as "System.Reflection.MonoGenericClass".
18908         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
18909
18910 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
18911
18912         * class-internals.h: Added a flag field to MonoClass to cache the
18913         declarative security attributes actions associated with the class.
18914         * domain-internals.h: Added booleans to MonoJitInfo to cache the
18915         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
18916         applicable to the JITted method.
18917         * reflection.c|h: Added functions to extract (as flags) which security
18918         actions are available (declaratively) for a method, class or assembly.
18919         * metadata.c|h: Added functions to search the declarative security
18920         table in the metadata.
18921         
18922 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
18923
18924         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
18925         EXPORTEDTYPES are already in the class name cache, so there is no
18926         need to add extra code here to look at them. Just removes a bit of
18927         cruft.
18928
18929         (ves_icall_System_Environment_get_TickCount): No need for #if
18930         WINDOWS. We already have the code in io-layer.
18931
18932 2004-11-28  Martin Baulig  <martin@ximian.com>
18933
18934         * loader.c
18935         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
18936         Fixes gen-112.cs.
18937
18938 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
18939
18940         * assembly.c (do_mono_assembly_open): Instead of having a
18941         conditional WITH_BUNDLE, incorporate support for bundles here, by
18942         having a global `bundles' variable holding a pointer to the actual
18943         bundles. 
18944
18945         (mono_register_bundled_assemblies): New API call used by the
18946         bundle code. 
18947
18948         See mkbundle.1 for details.
18949         
18950 2004-11-27  Martin Baulig  <martin@ximian.com>
18951
18952         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
18953         the vtable for generic methods.
18954
18955 2004-11-26  Martin Baulig  <martin@ximian.com>
18956
18957         * metadata.c
18958         (mono_metadata_generic_method_hash): New public function.
18959         (mono_metadata_generic_method_equal): Likewise.
18960
18961         * class-internals.h
18962         (MonoGenericContainer): Added `GHashTable *method_hash'.
18963
18964         * reflection.c (ReflectionMethodBuilder): Added
18965         `MonoGenericContainer *generic_container'.
18966         (reflection_methodbuilder_to_mono_method): Don't create a new
18967         MonoGenericContainer each time we're called.
18968         (mono_reflection_bind_generic_method_parameters): Use
18969         `container->method_hash' to cache the results so we don't create a
18970         different method if we're called several times with the same
18971         arguments.
18972
18973         * loader.c (method_from_methodspec): Use the new
18974         `container->method_hash' here, too.
18975
18976 2004-11-26  Martin Baulig  <martin@ximian.com>
18977
18978         * class.c (inflate_generic_signature): Correctly compute
18979         `res->has_type_parameters'.
18980         (mono_class_vtable): Use the `has_type_parameters' flag to
18981         determine whether we're a generic method.
18982
18983         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
18984
18985 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18986
18987         * object.c (mono_runtime_run_main): Fix a small memory leak.
18988
18989 2004-11-25  Martin Baulig  <martin@ximian.com>
18990
18991         * class.c (set_generic_param_owner): Fixed the loop.
18992
18993 2004-11-25  Martin Baulig  <martin@ximian.com>
18994
18995         * object.c (mono_class_vtable): Don't create any JIT wrappers for
18996         generic methods.
18997
18998 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18999
19000         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
19001         names. Fixes #69787.
19002
19003 2004-11-24  Martin Baulig  <martin@ximian.com>
19004
19005         * class.c (mono_class_create_generic_2): If we don't have a
19006         `ginst->parent', inflate `gklass->parent' to get our parent.
19007
19008 2004-11-24  Martin Baulig  <martin@ximian.com>
19009
19010         * reflection.c (compare_genericparam): Correctly sort the
19011         GenericParam table; fixes #69779.
19012
19013 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
19014
19015         * reflection.c: When writing a PE file, don't create a huge
19016         buffer in memory. Just write the arrays we have to the file.
19017         This reduces memory usage.
19018
19019         * metadata-internals.h: MonoDynamicStream pefile is no longer used
19020         globally.
19021
19022 2004-11-17  Martin Baulig  <martin@ximian.com>
19023
19024         * class.c (mono_class_init): Don't setup `class->parent' for
19025         dynamic instances; moved this to mono_class_generic_2().
19026         (mono_class_create_generic): Also set `klass->inited' for dynamic
19027         generic instances.
19028         (mono_class_create_generic_2): Don't do anything for dynamic
19029         generic instances.  Set `klass->parent' here and also call
19030         mono_class_setup_parent() here. 
19031
19032         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
19033         `MonoType *parent' argument; set `ginst->parent' before calling
19034         mono_class_create_generic_2(), so we set the correct parent.
19035
19036 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
19037
19038         * reflection.c: allow getting attributes from ModuleBuilder
19039         (used by ikvm).
19040
19041 2004-11-17  Martin Baulig  <martin@ximian.com>
19042
19043         * class.c (mono_class_create_from_typedef): If a type parameter is
19044         inherited from an outer class, set its owner to that class.
19045
19046 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
19047
19048         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
19049           for (int*) written size. This fixes bug #69592.
19050
19051 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19052
19053         * icall.c: Added IsAuthenticodePresnet internal call.
19054         * image.c|h: New function that check a MonoImage for an Authenticode
19055         signature in the certificate PE data directory.
19056         * security.c|h: New internal call to ask the runtime if an 
19057         Authenticode signature seems referenced in the PE header.
19058
19059 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
19060
19061         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
19062
19063         * reflection.c (mono_image_create_pefile): Free the assembly streams
19064         after writing out the assembly file.
19065
19066         * object.c (mono_runtime_run_main): Fix small memory leak.
19067
19068         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
19069         property access modifiers. Fixes #69389.
19070
19071 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19072
19073         * domain.c, object.c, object-internals.h, domain-internals.h,
19074         object.h, marshal.c: keep dynamic code info per domain.
19075
19076 2004-11-15  Martin Baulig  <martin@ximian.com>
19077
19078         * class.c (mono_type_get_name_recurse): Put type arguments in
19079         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19080         see bug #68387.
19081
19082 2004-11-15  Martin Baulig  <martin@ximian.com>
19083
19084         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19085         (mono_class_setup_vtable): When computing `the_cname' for a
19086         generic instance, don't include the namespace since we'd otherwise
19087         add it twice.
19088
19089 2004-11-15  Martin Baulig  <martin@ximian.com>
19090
19091         * class.c (mono_class_create_generic): Changed return type to void.
19092         (mono_class_create_generic_2): New public function; setup
19093         `class->method', `class->field' and `class->interfaces' here
19094         instead of in mono_class_init().
19095
19096         * class.h (mono_class_create_generic): Moved to class-internals.h.
19097
19098 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19099
19100         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19101         rather than writing to memory, write to this file. Right now,
19102         we are just writting into a buffer, and copying that. However
19103         we can avoid the buffer later.
19104
19105         (mono_dynamic_stream_reset): new function
19106
19107         * icall.c, object-internals.h: update for the above.
19108
19109 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19110
19111         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19112         have been using gc'd memory. First it is slower, unlikely
19113         the comment in the source code said, secondly, it increases
19114         our footprint to do it in the gc.
19115
19116         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19117         the method so that it does not have to copy to managed code.
19118
19119 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19122
19123 2004-11-12  Martin Baulig  <martin@localhost>
19124
19125         * reflection.c (mono_image_create_token): Allow generic method
19126         definitions here, since they may appear in an `.override'; see
19127         gen-98/gen-99 for an example.
19128
19129 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19130
19131         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19132         #69365.
19133
19134         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19135         descriptive.
19136
19137 2004-11-11  Martin Baulig  <martin@ximian.com>
19138
19139         * class.c (mono_class_setup_vtable): In an explicit interface
19140         implementation, the method name now includes the arity.
19141
19142 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19143
19144         * object.c (mono_array_full_copy): Fix warning.
19145
19146 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19147
19148         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19149         mono_class_get_method_from_name() instead.
19150         
19151         * class-internals.h: Added two new types of wrappers. 
19152         Added MonoRemotingTarget enum. Added new trampoline function type, which
19153         takes an additional MonoRemotingTarget value as parameter, so it is
19154         possible to request a trampoline for a specific target.
19155         
19156         * class.c: Added new mono_class_get_method_from_name() method.
19157         
19158         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19159         general remoting sinks and one specific for cross domain calls.
19160         
19161         * debug-helpers.c: Added new wrapper names.
19162         
19163         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19164         of a remote class.
19165         
19166         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19167         
19168         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19169         with several other methods (mono_marshal_get_xappdomain_dispatch,
19170         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19171         and others) can generate a fast remoting wrapper for cross domain calls.
19172         More information can be found in docs/remoting.
19173         Other changes: Removed mono_find_method_by_name, and used
19174         mono_class_get_method_from_name instead.
19175         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19176         is stored in the remoting invoke hashtable.
19177         
19178         * marshal.h: published the new method for getting the xdomain wrapper,
19179         and also added a method for getting the adequate wrapper for a given
19180         method and target.
19181         
19182         * object-internals.h, object.c: Added a couple of methods for capying and
19183         cloning arrays.
19184         Modified mono_install_remoting_trampoline, which takes the new remoting
19185         trampoline that has a remoting target as parameter.
19186         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19187         will return the most suitable vtable for the target.
19188         Added mono_remote_class_vtable, which returns the vtable of a remote class
19189         (which can be the normal remoting vtable or the xdomain vtable).
19190         
19191         * threads.c: the xdomain invoke and dispatch wrappers must also be
19192         protected against interruptions.
19193
19194 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19195
19196         * icall.c: use memmove in BlockCopyInternal when the source and
19197         destination arrays are the same.
19198
19199 2004-11-09  Martin Baulig  <martin@ximian.com>
19200
19201         * class-internals.h (MonoGenericContainer): Removed `method' and
19202         `signature', replaced them with `is_method' and `is_signature'
19203         flags.  Added `context'.
19204
19205         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19206         instead of a `MonoGenericContainer *'.
19207
19208         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19209         for dynamic type parameters.
19210         (mono_metadata_load_generic_params): Setup `container->context'.
19211
19212         * reflection.c (mono_reflection_setup_generic_class): Setup
19213         `tb->generic_container->context'.
19214         (do_mono_reflection_bind_generic_parameters): Use
19215         mono_class_inflate_generic_type() to correctly inflate types,
19216         rather than using our own hack just for MONO_TYPE_VAR.
19217
19218 2004-11-09  Martin Baulig  <martin@ximian.com>
19219
19220         * class.c (mono_class_inflate_generic_method): Small fix; don't
19221         crash here.
19222
19223         * icall.c
19224         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19225         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19226         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19227         (ves_icall_Type_BindGenericParameters): Likewise.
19228         (ves_icall_Type_get_IsGenericInstance): Likewise.
19229         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19230         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19231         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19232         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19233
19234 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19235
19236         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19237         assembly versions and public key tokens. Fixes #69113.
19238
19239 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19240
19241         * metadata.c: fix bug introduced with the type cache changes
19242         on 2004-11-06.
19243
19244 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19245
19246         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19247         the MonoClass pointer instead of the token in exception clauses.
19248         * reflection.c: updates for the above and make the code not depend
19249         on the structure of MonoExceptionClause.
19250
19251 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19252
19253         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19254         Add support for dynamic assemblies. Fixes #69114.
19255
19256         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19257
19258 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19259
19260         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19261         since most only those methods use it. the code member of
19262         MonoMethodPInvoke was dead, so that can be removed too. Also,
19263         remove inline_count (again, not used), and move slot so that it
19264         can share bits with some other flags. This saves 8 bytes in the
19265         structure and gives us about 50 kb back for mcs helloworld.cs
19266
19267         * *.[ch]: Do naming changes for the above.
19268
19269         * loader.c (mono_method_get_header): Lazily init the header
19270         on first access.
19271         (mono_get_method_from_token): don't init the header here
19272         (mono_free_method): the header may never be allocated
19273
19274         Overall, this saves 150 kb of unmanaged allocations
19275         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19276         memory at runtime.
19277         
19278         * loader.c, loader.h (mono_method_get_header): new accessor.
19279
19280         * *.[ch]: use the above method. Prepares us to lazily load
19281         the header.
19282
19283         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19284         three warnings, which are actual bugs (see 69206).
19285
19286         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19287         unused. Saves a cool 4 bytes / method.
19288
19289 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19290
19291         * metadata.c (builtin_types): Add types for System.Object here.
19292         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19293         for a class or valuetype from klass->this_arg or klass->byval_arg.
19294
19295         On mcs for a hello world, this gets us down from 21836 MonoType's
19296         to 14560.
19297
19298         (mono_metadata_free_type): Account for the above change.
19299
19300 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19301
19302         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19303         exception instead of asserting if name is null.
19304         (ves_icall_System_AppDomain_GetData): Ditto.
19305
19306 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19307
19308         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19309         EnumBuilder.
19310
19311         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19312         Return NULL when the domain does not have entry_assembly set.
19313
19314         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19315         Add a 'resource_modules' argument.
19316         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19317
19318         * reflection.c (mono_reflection_create_runtime_class): Move setting
19319         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19320         for enums too.
19321
19322         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19323         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19324         Throw an ArgumentNullException if 'ptr' is null.
19325
19326         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19327         assemblies here. Fixes #69020.
19328
19329 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19330
19331         * reflection.c (build_compressed_metadata): Fix the previous patch for
19332         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19333         the stack.
19334
19335 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19336
19337         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19338         the cultures is false. Fixes #69090.
19339
19340         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19341         detected by valgrind.
19342         
19343         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19344         TypeResolve multiple times for the same type. Fixes #65577.
19345
19346 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19347
19348         * marshal.c: Avoid using ldftn to call managed functions. It is
19349         much slower than just a call.
19350
19351         * reflection.c (mono_module_get_object): free the basename we
19352         allocate here from glib.
19353         
19354         * reflection.c (ensure_runtime_vtable): make sure to free
19355         overrides.  Also, we were allocating an array of MonoMethod not an
19356         array of MonoMethod*.
19357
19358         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19359
19360         * image.c (mono_image_close): free image->guid here.
19361
19362 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19363
19364         * reflection.c: Fix some spec conformance issues with the PE file
19365         structures so mcs compiled apps run on the Net 2.0 beta.
19366
19367 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19368
19369         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19370         Implement this. Fixes #67264.
19371
19372         * debug-helpers.h debug-helpers.c marshal.c: Move 
19373         mono_find_method_by_name to debug-helpers.c.
19374
19375 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19376
19377         * object.c (mono_release_type_locks): type_initialization_hash is
19378         a GHashTable.
19379
19380         * reflection.c object.c object-internals.h: Fix warnings.
19381
19382         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19383         without accessors. Fixes #61561.
19384
19385         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19386         application base from the root domain if not set. Fixes #65641.
19387         (mono_runtime_init): Fix warning.
19388
19389 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19390
19391         * appdomain.c: call mono_thread_pool_init.
19392         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
19393         of worker threads based on the number of CPUs and the environment
19394         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
19395         for non-windows (windows) systems.
19396
19397 2004-10-27  Chris Toshok  <toshok@ximian.com>
19398
19399         * mono-debug-debugger.c (write_class): don't call mono_class_init
19400         here, as even with the check for (!klass->init_pending), we get
19401         into a situation where we're hitting cycles in class
19402         initialization.  Fixes #68816.
19403
19404 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * image.c: Avoid overwriting values in the loaded_images_hash when an
19407         assembly is loaded multiple times. Fixes #61152.
19408
19409         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
19410         so multiple satellite assemblies for the same name can be loaded.
19411         Fixes #68259.
19412
19413         * mono_domain_assembly_preload: Actually return the loaded assembly, 
19414         not NULL.
19415
19416         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
19417         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
19418
19419         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
19420         pending finalizers are not invoked after the appdomain has been 
19421         unloaded. Fixes #67862.
19422
19423 2004-10-22  Martin Baulig  <martin@ximian.com>
19424
19425         * mono-debug-debugger.c
19426         (mono_debugger_runtime_invoke): Don't box valuetypes.
19427
19428 2004-10-22  Chris Toshok  <toshok@ximian.com>
19429
19430         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
19431         don't hide private methods.
19432
19433 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
19434
19435         * icall.c: Allows the runtime to "share" (when known) the public key
19436         token of an assembly. This avoid the need to recalculate the token 
19437         (from the public key) in managed code.
19438
19439 2004-10-21  Chris Toshok  <toshok@ximian.com>
19440
19441         * debug-helpers.c (append_class_name): argh, revert last patch.
19442         
19443 2004-10-21  Chris Toshok  <toshok@ximian.com>
19444
19445         * debug-helpers.c (append_class_name): use '+' as the delimiter,
19446         not '/', so that it matches what the debugger uses to look up
19447         methods.
19448
19449 2004-10-21  Martin Baulig  <martin@ximian.com>
19450
19451         * mono-debug-debugger.c (mono_debugger_throw_exception): New
19452         public method; this is called each time an exception is thrown and
19453         allows the debugger to use exception catch points.
19454
19455 2004-10-21  Martin Baulig  <martin@ximian.com>
19456
19457         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
19458         the stack pointer and the exception object in some struct and pass
19459         that to the debugger.
19460
19461 2004-10-21  Chris Toshok  <toshok@ximian.com>
19462
19463         * mono-debug-debugger.c (do_write_class): add instance/static
19464         event support.  We don't expose "raise" or "other" yet.
19465         (event_is_static): new method.
19466
19467 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
19468
19469         * mono-debug-debugger.c
19470         (mono_debugger_handle_exception): Remove
19471         bogus return value for fussy compilers.
19472
19473 2004-10-20  Martin Baulig  <martin@ximian.com>
19474
19475         * mono-debug-debugger.c
19476         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
19477         (mono_debugger_handled_exception): Likewise.
19478
19479 2004-10-20  Martin Baulig  <martin@ximian.com>
19480
19481         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19482         MONO_DEBUGGER_EVENT_EXCEPTION.
19483
19484         * mono-debug-debugger.c (mono_debugger_handle_exception): New
19485         public function to send the debugger a notification for an
19486         exception and inform it about a catch/finally clause.
19487
19488 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
19489
19490         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
19491         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
19492         fix 2.95 build. 
19493
19494         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
19495
19496 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
19499         marshalled as [In,Out]. Fixes #58325.
19500
19501 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
19502
19503         * reflection.c (mono_method_body_get_object): Implement some fields.
19504
19505 2004-10-12  Martin Baulig  <martin@ximian.com>
19506
19507         * reflection.c (mono_reflection_bind_generic_parameters): Small
19508         fix, correctly retrieve our parent from a generic instance.
19509
19510 2004-10-12  Martin Baulig  <martin@ximian.com>
19511
19512         * metadata.c (mono_metadata_generic_param_equal): We always have
19513         an owner.
19514
19515         * class.c
19516         (mono_class_from_generic_parameter): We need to have an owner.
19517         (my_mono_class_from_generic_parameter): Likewise.
19518
19519         * reflection.c (mono_reflection_setup_generic_class): Renamed to
19520         mono_reflection_create_generic_class() and added a new
19521         mono_reflection_setup_generic_class().  
19522         (mono_reflection_initialize_generic_param): If we're a nested
19523         generic type and inherited from the containing class, set our
19524         owner to the outer class.
19525
19526 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
19527
19528         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
19529
19530         * reflection.c (mono_method_body_get_object): New function to create
19531         a MethodBody object.
19532
19533         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
19534
19535 2004-10-11  Martin Baulig  <martin@ximian.com>
19536
19537         * metadata.c (_mono_metadata_type_equal): Renamed to
19538         do_mono_metadata_type_equal() and made static.
19539
19540 2004-10-11  Martin Baulig  <martin@ximian.com>
19541
19542         * appdomain.c: Bump corlib version number to 28.
19543
19544 2004-10-10  Martin Baulig  <martin@ximian.com>
19545
19546         * class-internals.h
19547         (MonoGenericInst): Added `MonoGenericContainer *container'.
19548         (MonoGenericMethod): Likewise.
19549         (MonoGenericContext): Likewise.
19550         (MonoGenericParam): Added `MonoGenericContainer *owner'.
19551
19552         * metadata.c
19553         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
19554         (do_mono_metadata_parse_generic_inst): Likewise.
19555         (mono_metadata_parse_type_full): New public method.  This is the actual
19556         mono_metadata_parse_type() implementation - with an additional
19557         `MonoGenericContainer *' argument.
19558         (mono_metadata_parse_array_full): Likewise.
19559         (mono_metadata_parse_signature_full): Likewise.
19560         (mono_metadata_parse_method_signature_full): Likewise.
19561         (mono_metadata_parse_mh_full): Likewise.
19562         (mono_type_create_from_typespec): Likewise.
19563         (mono_metadata_interfaces_from_typedef_full): New public method;
19564         this is similar to the other _full() methods, but we take a
19565         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
19566         (mono_metadata_parse_generic_param): Take an additional
19567         `MonoGenericContainer *' argument and lookup the MonoGenericParam
19568         from that container.
19569         (mono_metadata_generic_param_equal): New static method to compare
19570         two type parameters.
19571         (_mono_metadata_type_equal): New static method; takes an
19572         additional `gboolean signature_only' argument - if true, we don't
19573         compare the owners of generic parameters.
19574         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
19575         with a TRUE argument - do a signature-only comparision.
19576
19577         * loader.c: Use the new _full() methods and pass the
19578         MonoGenericContainer to them.
19579
19580         * object-internals.h (MonoReflectionTypeBuilder): Added
19581         `MonoGenericContainer *generic_container' field.
19582         (MonoReflectionMethodBuilder): Likewise.
19583
19584 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19585
19586         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
19587         case initial images of dynamic assemblies.
19588
19589         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
19590
19591         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
19592
19593         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
19594         length of event->other array.
19595         (typebuilder_setup_events): Ditto.
19596
19597         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
19598         'assembly_by_name' and add an 'assemblies' list.
19599
19600         * assembly.h assembly.c: Add a new search hook for determining whenever
19601         an assembly is already loaded. Use this instead of searching in the
19602         loaded_assemblies list.
19603
19604         * domain.c appdomain.c: Implement the new search hook so loaded 
19605         assemblies are now scoped by appdomain. Fixes #67727.
19606
19607 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
19608
19609         * threads.c (mono_thread_attach): Initialize synch_lock field so
19610         mono_thread_detach works again.
19611
19612         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
19613         'lib' too. Fixes #63130.
19614
19615 2004-10-06  Jackson Harper  <jackson@ximian.com>
19616
19617         * culture-info-tables.h: regenerated.
19618
19619 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
19620
19621         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
19622         implemented by other interfaces in the result. Fixes #65764.
19623         
19624         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19625         Handle unloadable modules without crashing.
19626
19627         * image.c (load_modules): Revert the previous patch since modules must
19628         have a fixed index inside the array.
19629         
19630         * image.c (load_modules): Don't include native modules in the modules
19631         array.
19632
19633 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19634
19635         * reflection.h: Add param_defaults field.
19636
19637         * reflection.c: Add support for parameter defaults in dynamic methods.
19638         Fixes #64595.
19639
19640         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
19641         an empty string when a type has no namespace. Fixes #64230.
19642
19643 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
19644
19645         * tabledefs.h: Added "internal" security actions to support non-CAS
19646         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
19647         Note: they do not seems to be used anymore in 2.0 (new metadata format)
19648
19649 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
19650
19651         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
19652         constructor of abstract class. Fixes #61689.
19653
19654 2004-10-04  Martin Baulig  <martin@ximian.com>
19655
19656         * class-internals.h (MonoGenericContainer): New type.
19657         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
19658         `MonoGenericContainer *generic_container'.
19659         (MonoClass): Replaced `gen_params' and `num_gen_params' with
19660         `MonoGenericContainer *generic_container'.
19661
19662         * metadata.c (mono_metadata_load_generic_params): Return a
19663         `MonoGenericContainer *' instead of a `MonoGenericParam *';
19664         removed the `num' argument.
19665
19666 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19667
19668         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
19669         for dynamic images.
19670
19671         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
19672         machine fields.
19673
19674         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
19675
19676         * reflection.c: Save pe_kind and machine values into the generated
19677         image file.
19678
19679         * appdomain.c: Bump corlib version number.
19680
19681         * object-internals.h: Reorganize layout of LocalBuilder.
19682
19683         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
19684         New helper function.
19685
19686         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
19687         created MonoType for dynamic types. Fixes #66180.
19688
19689 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
19690
19691         * threadpool.c: the ares hashtable needs a critical section around it.
19692         this prevents some nasty segfaults
19693
19694 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19695
19696         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
19697         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
19698         bug 67324).
19699         
19700 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19701
19702         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
19703         
19704 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19705
19706         * image.c: Always canonicalize image file names, to avoid loading
19707         the same assembly twice when referenced using a relative path.
19708
19709 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19710
19711         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
19712
19713         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
19714
19715         * marshal.c: Fix warnings.
19716
19717 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
19718
19719         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
19720         attempting to marshal the delegate_trampoline as the method_addr.
19721         This patch has a static hashtable of marshalled delegates so that 
19722         we can map delegate_trampoline addresses back to delegates.  This
19723         allows a delegate passed to managed code to be passed back into native
19724         code.  Fixes #67039
19725
19726 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
19729
19730         * reflection.c (method_encode_code): Align method headers properly.
19731         Fixes #66025.
19732
19733 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19734
19735         * marshal.c: In the runtime invoke wrapper, reset the abort
19736         exception if it is cached. This avoids the automatic rethrowal of 
19737         the exception after the catch of the wrapper. Also check for pending
19738         interruptions before calling the managed method. This is done using
19739         the new method emit_thread_force_interrupt_checkpoint, since the
19740         normal checkpoint method is ignored when running the invoke wrapper.
19741         * object.c: If the abort exception is rethrown, set the abort_exc
19742         field of the thread, so it will be rethrown aftere every catch.
19743         * threadpool.c: Only run an interruption checkpoint if what has been
19744         requested is a stop of the thread (aborts will be ignored).
19745         * threads.c: By default, a thread will now never be interrumped while
19746         running the runtime invoke wrapper (this ensures that runtime_invoke
19747         will always return to the caller if an exception pointer is provided).
19748         There is a new special method mono_thread_force_interruption_checkpoint()
19749         to force an interruption checkpoint even if running a protected
19750         wrapper, which is used by the same runtime invoke wrapper to do a check
19751         at a safe point.
19752
19753 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19754
19755         * object.c, object-internals.h: Implemented mono_release_type_locks,
19756         which releases the cctor locks held by a thread.
19757         * threads.c, threads.h: In thread_cleanup, release cctor locks held
19758         by a thread. Added mono_thread_exit() method to be used to safely stop
19759         a thread.
19760
19761 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19762
19763         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19764         Move null check before dereference.  Avoid indexing beyond the end
19765         of the 'modules' array.
19766
19767 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19768
19769         * metadata-internals.h (MonoImage): Add module_count field.
19770         * image.c (load_modules): Set image->module_count.
19771         (mono_image_load_file_for_image): Use image->module_count.
19772         * reflection.c (mono_image_load_module): Append to image->modules array 
19773         of dynamic assembly.
19774         (mono_module_get_object): Fix loop to actually increment index.
19775         Use image->module_count.
19776         * assembly.c (mono_assembly_load_references): Use image->module_count.
19777         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
19778         Likewise.
19779
19780 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19781
19782         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
19783         Avoid assert on generic types.
19784
19785 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
19786
19787         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
19788
19789         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
19790
19791         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
19792         function to convert a MarshalSpec structure to its managed counterpart.
19793
19794         * reflection.c: Fix warnings.
19795         
19796         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
19797         field.
19798
19799         * icall.c (mono_create_icall_signature): Fix build.
19800
19801 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19802
19803         * icall.c: Add MakePointType icall.
19804
19805         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
19806         warnings.
19807
19808 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19809
19810         * threadpool.c: reuse allocated slots in the queue.
19811
19812 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19813
19814         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
19815
19816         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
19817
19818         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
19819         previous change.
19820
19821         * tabledefs.h: Add constants for pinvoke attributes BestFit and
19822         ThrowOnUnmappableChar.
19823
19824         * icall.c (ves_icall_Type_GetPacking): New icall.
19825
19826 2004-09-24  Martin Baulig  <martin@ximian.com>
19827
19828         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
19829
19830 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19831
19832         * appdomain.c:
19833         (mono_domain_set): allow setting a domain that is being unloaded.
19834         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
19835         being unloaded.
19836
19837 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19838
19839         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
19840         the GetCustomAttributes icall.
19841
19842 2004-09-23  Martin Baulig  <martin@ximian.com>
19843
19844         * object-internals.h (MonoReflectionGenericParam): Replaced
19845         'has_ctor_constraint', `has_reference_type' and `has_value_type'
19846         with `guint32 attrs'.
19847
19848 2004-09-23  Martin Baulig  <martin@ximian.com>
19849
19850         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
19851
19852 2004-09-23  Martin Baulig  <martin@ximian.com>
19853
19854         * object-internals.h (GenericParameterAttributes): New enum.
19855
19856 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19857
19858         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
19859         
19860         * class.c (init_events): Fill out event->other field.
19861
19862         * class.c: Fix warnings.
19863
19864         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
19865
19866 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
19867
19868         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
19869         walk which doesn't supply the IL offset.
19870
19871 2004-09-22  Martin Baulig  <martin@ximian.com>
19872
19873         * reflection.c (mono_reflection_setup_internal_class): If we're
19874         System.ValueType, System.Object or System.Enum, set
19875         `klass->instance_size' and create the vtable.
19876         (mono_reflection_create_internal_class): If we're an enum type,
19877         get the base class from our current corlib.
19878
19879 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
19880
19881         * reflection.h (MonoResolveTokenError): New type.
19882
19883         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
19884         icall.
19885
19886         * icall.c: Add an 'error' argument to the ResolveToken icalls.
19887
19888 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
19889
19890         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
19891         Support also calling constructors, but only for already allocated objects.
19892
19893 2004-09-17  Geoff Norton <gnorton@customerdna.com>
19894
19895         * reflection.c (type_get_qualified_name): If the klass is null
19896         return the typename to avoid a NullRefEx.
19897         (encode_cattr_value): Get the qualified name of the boxed type,
19898         not the underlying enumtype.  Fixes #62984.
19899
19900 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
19901
19902         * marshal.c: Fix problems with previous checkin.
19903
19904 2004-09-21    <vargaz@freemail.hu>
19905
19906         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
19907         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
19908
19909         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
19910
19911 2004-09-21  Geoff Norton <gnorton@customerdna.com>
19912
19913         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
19914         should only return a type for pointers, arrays, and passbyref types.
19915         Fixes bug #63841.
19916
19917 2004-09-21  Martin Baulig  <martin@ximian.com>
19918
19919         * domain.c (mono_debugger_check_runtime_version): New public
19920         function.
19921
19922         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
19923
19924 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
19925
19926         * reflection.c: Added missing sort to the declarative security 
19927         attributes table. MS implementation stops seeing the attributes if the
19928         token number regress in the table (as shown by ildasm and permview).
19929
19930 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
19931
19932         * object-internals.h (MonoReflectionModule): Add 'token' field.
19933         
19934         * reflection.c (mono_reflection_get_token): Add support for Module
19935         and Assembly.
19936         (mono_module_get_object): Set 'token' field.
19937         (mono_module_file_get_object): Set 'token' field.
19938
19939         * icall.c: Add new Assembly and Module icalls.
19940
19941         * appdomain.c: Bump corlib version.
19942
19943 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * loader.h loader.c class.h class.c: Add helper functions for obtaining
19946         tokens of metadata objects.
19947
19948         * reflection.h reflection.c (mono_reflection_get_token): New function
19949         to obtain the token of a metadata object.
19950
19951         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
19952
19953 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
19956         
19957         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
19958
19959 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
19960
19961         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
19962         * object-internals.h: Added 3 MonoArray* members to MonoReflection
19963         AssemblyBuilder to access the permissions set in the class lib.
19964         * reflection.c: Added security attributes encoding step in 
19965         mono_image_build_metadata.
19966         * tabledefs.h: Added new security actions defined in 2.0:
19967         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
19968
19969 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
19970
19971         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
19972         macro parameter.
19973
19974 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
19975  
19976         * locales.c: nullify the ICU_collator member of CompareInfo when it is
19977           finalized. There where random SIGSEVs at program termination, when
19978           an object being finalized was trying to do a string comparison and
19979           the current culture was already finalized.
19980  
19981 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19982
19983         * threads.c: call thread_cleanup before finishing the thread if we get
19984         there.
19985
19986 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
19987
19988         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
19989         assemblies from the parent. Fixes #65665.
19990
19991 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
19992
19993         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
19994         modifiers.
19995
19996 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
19997
19998         * reflection.h: add prototype for mono_get_dbnull_object
19999         * reflection.c: add prototypes for get_default_param_value_blobs 
20000         and mono_get_object_from_blob for fussier compilers
20001
20002 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
20003  
20004         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
20005         false deadlock checks in class initialization.
20006  
20007 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * image.c (mono_image_addref): Fix comment.
20010
20011         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
20012         possible.
20013
20014 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
20015
20016         * reflection.c (mono_param_get_objects): Modified to return
20017         ParameterInfo.DefaultValue object.
20018
20019         (get_default_param_value_blobs):
20020         (mono_get_object_from_blob):
20021         (mono_get_dbnull_object): New helper routines. 
20022
20023         * object.c (mono_get_constant_value_from_blob): New helper routine
20024         carved out from get_default_field_value ()
20025
20026         * object-internals.h (mono_get_constant_value_from_blob): Added
20027         function declaration.
20028
20029 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20030
20031         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
20032         referenced assemblies. Fixes #62135.
20033
20034         * exception.h exception.c (mono_get_exception_file_not_found2): New
20035         helper function.
20036
20037 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20038
20039         * class.h class.c: Add mono_type_get_underlying_type ().
20040
20041 2004-09-09  Geoff Norton <gnorton@customerndna.com>
20042
20043         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
20044         Fix GetTypes() to support dynamically created assemblies.
20045
20046 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
20047
20048         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
20049         
20050         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
20051         previous patch.
20052
20053         * reflection.h reflection.c loader.c: Allow dynamic construction of
20054         pinvoke methods. Fixes #65571.
20055         
20056         * reflection.c (mono_reflection_get_type): Revert previous change since
20057         it causes regressions.
20058
20059 2004-09-08  Martin Baulig  <martin@ximian.com>
20060
20061         * class.c (class_compute_field_layout): Don't call
20062         mono_class_layout_fields() for open generic instances.
20063
20064 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
20065         * threads.c appdomain.c: fix typo in GC macro
20066
20067 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20068
20069         * threads.c: don't call mono_thread_detach() in start_wrapper(),
20070         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
20071
20072 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
20073
20074         * image.c (mono_image_close): Applied patch from 
20075         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
20076         assembly is loaded multiple times from data.
20077         
20078         * image.c (mono_image_open): Fix warning.
20079
20080 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20081
20082         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20083         once. Fixes #58334.
20084         
20085         * reflection.c (mono_reflection_create_runtime_class): Initialize
20086         klass->nested_classes. Fixes #61224.
20087
20088 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20089
20090         * threads.c: sched_yield() on exit, to allow threads to quit.
20091
20092 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20093
20094         * object.c (mono_unhandled_exception): Remove leftover debug code.
20095
20096 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20097
20098         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20099
20100 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20101
20102         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20103         
20104         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20105
20106 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * marshal.c (emit_marshal_array): Null terminate string arrays.
20109         
20110         * marshal.c (raise_auto_layout_exception): Fix warning.
20111
20112         * reflection.c (mono_param_get_objects): Initialize the default value
20113         with DBNull.Value, not null. Fixes #62123.
20114
20115 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20116
20117         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20118         throw an exception with a cute explanation.
20119
20120 2004-09-06  Dick Porter  <dick@ximian.com>
20121
20122         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20123         Close the new process's thread handle, as we don't use it.  The
20124         handle stays around forever otherwise.
20125
20126 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * object.c (arith_overflow): Fix warning.
20129
20130         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20131         calling conventions in method refs. Fixes #65352.
20132
20133         * reflection.c: Fix warnings.
20134
20135 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20136
20137         * icall.c: Add a new icall for Array.Clear
20138
20139 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20140
20141         * object.c: When allocating an array, we have to throw
20142         an overflow exception if any of the lengths are < 0.
20143
20144 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20145
20146         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20147         properly. Also move implementation of string array marshalling to 
20148         managed code. Fixes #42316.
20149
20150 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20151
20152         * assembly.c: provide more information when loading an assembly fails.
20153
20154 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20155
20156         * filewatcher.c: don't expect the development fam package to be
20157         installed.
20158
20159 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20160
20161         * marshal.c: Make a copy of the signature cookie since it will be
20162         freed by the caller.
20163         
20164         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20165
20166         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20167
20168         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20169         marshal specs.
20170
20171         * marshal.c: More refactoring.
20172         
20173         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20174         smaller functions.
20175
20176 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20177
20178         * object.c: In mono_message_invoke, fill the output parameter array after
20179           calling the managed method (it was done before the call). This fixes
20180           bug #59299.
20181
20182 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20183
20184         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20185         as well.
20186
20187 2004-09-02  Martin Baulig  <martin@ximian.com>
20188
20189         * class.c (mono_class_instance_size): Don't allow generic type
20190         definitions or open generic instances.
20191         (mono_class_array_element_size): If we're a value type, call
20192         mono_class_instance_size() on the original class.
20193
20194         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20195         handle generic instances.
20196
20197         * mono-debug-debugger.c (write_type): Handle generic instances
20198         like classes.
20199
20200 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20201
20202         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20203         the allocation request fails. Fixes #65089.
20204
20205         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20206         
20207         * object.c (mono_runtime_free_method): New function to free a dynamic
20208         method.
20209
20210         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20211         delegate trampoline.
20212
20213         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20214         with hasthis as dynamic,
20215
20216         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20217
20218         * domain.c (mono_jit_info_table_remove): New function to remove an
20219         entry from the jit info table.
20220
20221         * class-internals.h (MonoMethod): Add 'dynamic' field.
20222
20223         * loader.c: Fix warnings.
20224
20225 2004-09-01  Martin Baulig  <martin@ximian.com>
20226
20227         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20228         instead of mono_debugger_lock() because the latter one is a no-op
20229         unless running in the debugger.
20230
20231 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * class.c (class_compute_field_layout): Classes with auto-layout or
20234         reference fields are not blittable.
20235         
20236 2004-09-01  Dick Porter  <dick@ximian.com>
20237
20238         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20239         mono_image_get_filename() to get the assembly location.
20240
20241         * icall.c:
20242         * metadata.h: Fix compile warnings
20243
20244 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20245
20246         * class.c (class_compute_field_layout): System.Object is blittable.
20247
20248         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20249         as in/out. Fixes #59909.
20250
20251 2004-09-01  Martin Baulig  <martin@ximian.com>
20252
20253         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20254         mono_metadata_generic_inst_is_valuetype() if we're a generic
20255         instance to check whether our underlying type is a reference type.
20256
20257 2004-09-01  Martin Baulig  <martin@ximian.com>
20258
20259         * metadata.c (mono_type_size): If we're a generic instance, call
20260         mono_class_value_size() for value types.
20261
20262 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20263
20264         * marshal.c: Implement more custom marshalling functionality. Fixes
20265         #64915.
20266
20267 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20268
20269         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20270
20271 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20272
20273         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20274
20275         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20276
20277         * icall.c: Fix some warnings.
20278
20279         * threads.c (abort_appdomain_thread): Fix unref errors.
20280         (mono_thread_current): Fix THREAD_DEBUG define.
20281
20282 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20283
20284         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20285
20286         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20287
20288 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20291         string arrays.
20292
20293 2004-08-28  Martin Baulig  <martin@ximian.com>
20294
20295         * metadata.c
20296         (mono_metadata_generic_inst_is_valuetype): New public function.
20297
20298         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20299         mono_metadata_generic_inst_is_valuetype() if we're a generic
20300         instance to check whether our underlying type is a valuetype.
20301
20302 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20305         #63768.
20306
20307 2004-08-25  Martin Baulig  <martin@ximian.com>
20308
20309         * loader.c (mono_get_method_from_token): Abstract methods can also
20310         be generic and thus have type parameters.
20311
20312         * metadata-internals.h
20313         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20314
20315         * reflection.c (mono_image_get_generic_param_info): Don't create a
20316         metadata row, just add an entry to the `gen_params' array.
20317         (build_compressed_metadata): Sort the `gen_params' array and then
20318         actually create the metadata.
20319
20320 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20321
20322         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20323
20324 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20325
20326         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20327
20328 2004-08-24  Martin Baulig  <martin@ximian.com>
20329
20330         * class.cs (mono_class_is_subclass_of): Like an interface, a
20331         generic instance also derives from System.Object.
20332
20333 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20334
20335         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20336         custom modifiers to be in any order. Fixes #61990.
20337
20338 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20339
20340         * object.c: Register mono_object_new_fast icall.
20341         
20342         * object.c (mono_class_get_allocation_ftn): Return to calling
20343         mono_object_new_fast, since it seems faster to compute the object 
20344         size in unmanaged code than passing it as a parameter.
20345
20346         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20347
20348         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20349         this function with Boehm as the oom handler, so we don't have to check
20350         the result of GC_malloc.
20351
20352         * object.c: Remove checks for oom.
20353
20354         * object.h object.c (mono_class_get_allocation_ftn): New function to
20355         return the icall which can be used to allocate an instance of a given
20356         class. 
20357
20358         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20359
20360         * class-internals.h: Add 'enabled' field.
20361
20362 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20363
20364         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20365
20366 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20367         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20368         value 0x0010.
20369
20370 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20371
20372         * appdomain.c: use the Tls function for appdomain too,
20373         at Zoltan's request. Actually return in mono_context_get
20374
20375         * appdomain.c, profiler.c, threads.c: use __thread
20376
20377 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20378
20379         * appdomain.c threads.c: Call GC_CreateThread on windows.
20380
20381         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20382         multiple libraries since this don't work on windows.
20383
20384 2004-08-18  Martin Baulig  <martin@ximian.com>
20385
20386         * class-internals.h
20387         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20388         MonoMethodHeader.
20389
20390         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20391         MonoMethodNormal since we also need it for abstract and interface
20392         methods.
20393
20394         * reflection.c
20395         (build_compressed_metadata): Sort the GenericParam table.
20396         (mono_image_create_token): Added `gboolean create_methodspec'
20397         argument; this is false when generating a MethodImpl token.
20398         (reflection_methodbuilder_to_mono_method): Abstract and interface
20399         methods may also have generic parameters.
20400
20401 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20402
20403         * appdomain.c: thread local alloc
20404
20405 2004-08-17  Martin Baulig  <martin@ximian.com>
20406
20407         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
20408
20409         * icall.c
20410         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
20411         argument.
20412
20413         * class.c (mono_type_get_full_name): New public function.
20414         (mono_type_get_name): Don't include the type arguments.
20415
20416 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20417
20418         * Makefile.am: Build static versions of libmetadata and libmonoruntime
20419         for inclusion into the mono executable.
20420
20421 2004-08-16  Martin Baulig  <martin@ximian.com>
20422
20423         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
20424         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
20425
20426 2004-08-14  Martin Baulig  <martin@ximian.com>
20427
20428         * class.c (dup_type): Also copy the `byref' field.
20429
20430 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20431
20432         * reflection.c (create_dynamic_mono_image): Revert the last change 
20433         since it breaks bootstrap.
20434
20435 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20436
20437         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
20438
20439         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
20440         not free them with g_free.
20441
20442 2004-08-11  Martin Baulig  <martin@ximian.com>
20443
20444         * reflection.c (mono_reflection_setup_internal_class): Also call
20445         mono_class_setup_mono_type() if we already have a `tb->type.type'.
20446
20447 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
20448
20449         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
20450         called during default (first) AppDomain creation. Keep track of
20451         Evidence when loading assemblies.
20452
20453 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20454
20455         * opcodes.c, opcodes.h: reduce runtime relocations.
20456
20457 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20458
20459         * culture-info.h, locales.c: fixes and chages to sue the new
20460         optimized format of the locale data.
20461         * culture-info-tables.h: regenerated.
20462
20463 2004-08-06  Geoff Norton <gnorton@customerdna.com>
20464         
20465         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
20466
20467 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
20468
20469         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
20470         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
20471         * domain-internals.h: icall declaration.
20472         * icall.c: icall registration.
20473         * object-internals.h: New fields in MonoAssembly for CAS.
20474
20475 2004-08-05  Duncan Mak  <duncan@ximian.com>
20476
20477         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20478         CEE_LDELEM_ANY.
20479
20480 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20481
20482         * reflection.c: fix to deal with object[] arrays in custom ctors
20483         (bug #62550).
20484
20485 2004-08-05  Martin Baulig  <martin@ximian.com>
20486
20487         * class.c (mono_class_array_element_size): Added support for
20488         generic instances and correctly handle "recursive" types.
20489
20490 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20491
20492         * assembly.c: Fix warnings.
20493
20494 2004-08-04  Martin Baulig  <martin@ximian.com>
20495
20496         * class.c
20497         (mono_type_get_name_recurse): Added `gboolean include_arity'
20498         argument specifying whether or not we should include the generic
20499         arity in the type name.
20500         (_mono_type_get_name): New static function.
20501         (mono_class_setup_vtable): If we're a generic instance, don't
20502         include the generic arity in the names of explicit method
20503         implementations.        
20504
20505 2004-08-03  Martin Baulig  <martin@ximian.com>
20506
20507         * class.c (mono_type_get_name_recurse): Enclose the generic type
20508         arguments in `<', '>'.
20509
20510 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20511
20512         * gc.c: make GC warning messages use the trace API, they are just
20513         noise to most of the users.
20514
20515 2004-08-03  Martin Baulig  <martin@ximian.com>
20516
20517         * debug-mono-symfile.c (read_string): Correctly read the string.
20518
20519 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20520
20521         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
20522         
20523         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
20524         icalls.
20525         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
20526
20527 2004-07-30  Martin Baulig  <martin@ximian.com>
20528
20529         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
20530         Reflect latest symbol writer changes.   
20531
20532 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20533
20534         * object.c: always create an object if null is passed
20535         to Invoke() where a valuetype is expected.
20536
20537 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20538
20539         * marshal.c (mono_marshal_init): make managed
20540         signatures match native ones better for 64bits.
20541
20542 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20543
20544         * appdomain.c: hack to build correctly the private bin path on windows.
20545         Fixes bug #61991.
20546
20547 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20548
20549         * assembly.c: Load mscorlib from the correct framework directory
20550           (mono/<version>/mscorlib.dll).
20551         * appdomain.h: Added prototypes for new functions.
20552         * internals.h: Added some prototypes.
20553         * domain.c: When initializing the runtime, get from the executable and
20554           the configuration files the runtime version that the app supports.
20555           Added support methods for reading app.exe.config. Added list of versions
20556           supported by the JIT. Added two new methods: mono_init_from_assembly,
20557           which initializes the runtime and determines the required version from
20558           the provided exe file, and mono_init_version, which initializes
20559           the runtime using the provided version.
20560         * icall.c: Get machine.config from version-specific directory.
20561         * reflection.c: When generating an image, embed the version number
20562           of the current runtime.
20563
20564 2004-07-28  Dick Porter  <dick@ximian.com>
20565
20566         * socket-io.c
20567         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
20568         returned sockaddr size before creating the remote address object.
20569         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
20570         61608.
20571
20572 2004-07-28  Dick Porter  <dick@ximian.com>
20573
20574         * locales.c (string_invariant_compare_char): Fix invariant char
20575         compares between upper and lower cases.  Fixes bug 61458.
20576
20577 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
20578         
20579         * marshal.c: actually cache stelem.ref wrappers.
20580         
20581 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20582
20583         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
20584         sections and remove the mono_cli_rva_map () function.
20585
20586 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20587
20588         * debug-mono-symfile.c: fix one more endianess issue, from a patch
20589         by Geoff Norton (<gnorton@customerdna.com>).
20590
20591 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20592
20593         * class.c: fix class loads for pointer types (typeof(int) !=
20594         typeof(int*)).
20595
20596 2004-07-27  Martin Baulig  <martin@ximian.com>
20597
20598         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
20599         reading the debugging information from an external ".mdb" file.
20600
20601 2004-07-24  Martin Baulig  <martin@ximian.com>
20602
20603         * reflection.c (mono_image_get_type_info): Only write a class
20604         layout entry if we actually have a size or a packing size.
20605
20606 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20607
20608         * reflection.c (type_get_fully_qualified_name): 
20609         insert cast to get type checking of ?: with non-gcc compilers
20610
20611 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20612
20613         * rand.c: use g_getenv for both lookups of
20614         MONO_EGD_SOCKET
20615
20616 2004-07-17  Martin Baulig  <martin@ximian.com>
20617
20618         * reflection.c (mono_reflection_bind_generic_method_parameters):
20619         Set `gmethod->reflection_info'.
20620
20621 2004-07-17  Martin Baulig  <martin@ximian.com>
20622
20623         * class.c (mono_class_create_from_typedef): Insert the newly
20624         created class into the hash table before computing the interfaces
20625         since we could be called recursively.
20626
20627 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20628
20629         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
20630         function to implement stelem.ref in managed code
20631         * class-internals.h, debug-helpers.c: a new wrapper type
20632         for the above.
20633
20634 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20635
20636         * gc.c: allow GC handles to work even when no GC is compiled in.
20637         Fix part of bug #61134 (GetAddrOfPinnedObject).
20638
20639 2004-07-13  Peter Williams  <peter@newton.cx>
20640  
20641         * process.c (complete_path): Make sure we don't attempt to execute
20642         directories.
20643  
20644 2004-07-12  Geoff Norton <gnorton@customerdna.com>
20645
20646         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
20647           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
20648           and will add/subtract the hour if needed
20649
20650 2004-07-12  Martin Baulig  <martin@ximian.com>
20651
20652         * reflection.c (mono_field_get_object): If we have
20653         `field->generic_info', take the attributes from
20654         `field->generic_info->generic_type'.    
20655
20656 2004-07-12  Martin Baulig  <martin@ximian.com>
20657
20658         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
20659         This function must be called before initializing the runtime.
20660         (mono_debug_init_1): New function; call this after initializing
20661         the runtime, but before loading the assembly.  It tells the
20662         debugger to load corlib and the builtin types.
20663
20664         * mono-debug-debugger.c: Did some larger changes in the debugging
20665         code; support recursive class declarations, make sure we actually
20666         add all classes.
20667
20668 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20669
20670         * debug-helpers.c: undo my previous patch and fixed the real issue in
20671         ../mini/exceptions-x86.c
20672
20673 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20674
20675         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
20676         when no HOME env. variable was set and a NullRef was thrown in a .cctor
20677         called from other .cctors.
20678
20679 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
20680
20681         * loader.c: Removed the mono_loader_wine_init hack now that we are
20682         doing a managed version of Windows.Forms.
20683
20684 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20685
20686         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
20687         threadpool.c, threads.c: remove static data from rootset.
20688
20689 2004-07-09  Dick Porter  <dick@ximian.com>
20690
20691         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
20692         Don't do any more processing if the matched length was 0.  It was
20693         increasing the size of the string before.  Fixes bug 61167.
20694
20695 2004-07-09  Dick Porter  <dick@ximian.com>
20696
20697         * socket-io.h:
20698         * socket-io.c
20699         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20700         Add support for SO_PEERCRED if its available.
20701
20702 2004-07-09  Peter Bartok <pbartok@novell.com>
20703         * loader.c: winelib.exe.so error message is now only displayed if
20704         MONO_DEBUG is set. To help us avoid questions when people are trying
20705         out the new Managed.Windows.Forms.
20706
20707 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
20710         for isinst and castclass wrappers.
20711
20712         * class-internals.h icall.c: Move registration and lookup of JIT icalls
20713         to libmetadata from the JIT, so they could be used by the marshalling
20714         code and the interpreter.
20715
20716         * marshal.c: Register marshalling related JIT icalls here instead of
20717         in mini.c. Use CEE_MONO_ICALL instead of the family of 
20718         CEE_MONO_PROC<x> opcodes to call marshalling functions.
20719
20720         * metadata.h: Remove unneeded marshalling conversions.
20721
20722         * opcodes.c: Update for new opcodes.
20723         
20724 2004-07-08  Martin Baulig  <martin@ximian.com>
20725
20726         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
20727         (mono_debug_get_domain_data): Make this function static.
20728
20729 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20730
20731         * gc.c, object.h: add nice GC handle API for embedders.
20732
20733 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20734
20735         * reflection.c: more changes for the new api
20736
20737         * object.c: When we reflect on a field w/ a constant value, it
20738         will not have a memory location, so we must access metadata. Also,
20739         allow easier reading of strings so that we can read them from
20740         the constant data.
20741
20742         * class.c (mono_class_layout_fields): no need for literal fields here.
20743
20744         * class-internals.h: api changes for const fields
20745
20746         * icall.c (ves_icall_get_enum_info): use new apis for const fields
20747
20748 2004-07-06  Martin Baulig  <martin@ximian.com>
20749
20750         * mono-debug.h: Increment version number to 44.
20751
20752         * mono-debug.c (mono_debug_add_wrapper): The second argument is
20753         now a gpointer, rewrote this whole method.
20754
20755         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
20756         function.  Add information about the wrapper in a new "misc table".
20757
20758         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
20759         for the new misc table.
20760
20761 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20762
20763         * metadata-internals.h image.c: Add a cache for helper signatures.
20764
20765         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
20766
20767 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20768
20769         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
20770         delegates from a delegate. Fixes #61033.
20771         
20772         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
20773         marshalling of stringbuilder arrays. Fixes #59900.
20774
20775 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20776
20777         * icall.c: Add EnumBuilder:setup_enum_type icall.
20778
20779 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20780
20781         * icall.c: Added a new icall for the property version of
20782         OffsetOfStringData.
20783
20784 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20785
20786         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
20787         it has a constant size across platforms.
20788
20789         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
20790         stack trace.
20791
20792 2004-06-29  Martin Baulig  <martin@ximian.com>
20793
20794         * mono-debug.c (mono_debug_add_method): Protect the whole function
20795         in mono_debugger_lock(), not just parts of it.
20796
20797 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20798
20799         * reflection.c: make sure padding bytes in heaps are zeroed.
20800
20801 2004-06-24  David Waite  <mass@akuma.org>
20802
20803         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
20804         image.c, loader.c, locales.c, marshal.c, metadata.c,
20805         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
20806         string-icalls.c, threads.c: change to C90-style comments from C99 /
20807         C++ -style
20808
20809 2004-06-24  Dick Porter  <dick@ximian.com>
20810
20811         * threads.c
20812         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
20813         return createdNew.  Fixes bug 60412.
20814
20815         * threads-types.h: 
20816         * icall.c: Add createdNew parameter to CreateMutex icall
20817
20818 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20819
20820         * reflection.c, object-internals.h: save default value in params.
20821
20822 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20823
20824         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
20825         no need to build a new path combining that with the application base.
20826         Fixes bug #60442.
20827
20828 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20829
20830         * reflection.c: fixed minor standard compliance issues.
20831
20832 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20833
20834         * reflection.c: fixed issue with encoding some custom attributes
20835         (arrays in properties and fields, bug #60411).
20836
20837 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20838
20839         * reflection.c: fix start address when copying the public key token.
20840
20841 2004-06-23  Martin Baulig  <martin@ximian.com>
20842
20843         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
20844         the `exc' object in a static object to put it into the GC's root set.
20845
20846 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20847
20848         * reflection.c: make mono_reflection_setup_internal_class ()
20849         callable a second time to setup a new parent class.
20850
20851 2004-06-23  Dick Porter  <dick@ximian.com>
20852
20853         * threads.c: Check for WAIT_IO_COMPLETION return values.
20854
20855 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
20856
20857         * appdomain.c: Removed the g_free on the public key token. Now copy 
20858         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
20859         * assembly.c: Added public key token string value when loading 
20860         assemblies. Fix bug #60439.
20861         * icall.c: Added missing informations (like public key) in 
20862         GetReferencedAssemblies. Fix #60519.
20863         * image.h: Changed definition for public key token from const char*
20864         public_tok_value to guchar public_key_token [17];
20865         * reflection.c: Updated for changes to public key token.
20866
20867 2004-06-22  Lluis Sanchez Gual
20868
20869         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
20870         for the field in base classes.
20871
20872 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
20873
20874         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
20875         mark headers as not supported, they are installed only for use by the
20876         debugger.
20877
20878 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
20879
20880         * *.c, *.h: avoid namespace pollution in public headers.
20881
20882 2004-06-21  Martin Baulig  <martin@ximian.com>
20883
20884         * exception.c (mono_get_exception_security): It's in
20885         "System.Security", not in "System".
20886
20887         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
20888         the exception classes.
20889
20890 2004-06-21  Martin Baulig  <martin@ximian.com>
20891
20892         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
20893         Protect the exception object from being finalized.
20894
20895 2004-06-21  Martin Baulig  <martin@ximian.com>
20896
20897         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
20898         public function.
20899
20900 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
20901
20902         * reflection.c: Load the assembly in mono_reflection_type_from_name,
20903         if it was not loaded before. Fix parts of #60439.
20904
20905 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
20906
20907         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
20908         code that was broken since Ben's change: wrappers are now
20909         dependent on the method signature only again.
20910
20911 2004-06-21  Martin Baulig  <martin@ximian.com>
20912
20913         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
20914         added interface support.
20915
20916 2004-06-21  Martin Baulig  <martin@ximian.com>
20917
20918         * class.c (mono_vtable_get_static_field_data): New public method.
20919
20920 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
20921
20922         * filewatcher.c : Windows build fix to be compliant with API changes.
20923
20924 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20925
20926         * class.h, class.c: more accessors.
20927         * metadata.h, metadata.c: prepare for hiding MonoType and
20928         MonoMethodSignature: people should use the accessors from now on
20929         outside of the tree.
20930
20931 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20932
20933         * *.c, *.h: more API cleanups.
20934
20935 2004-06-18  Jackson Harper  <jackson@ximian.com>
20936
20937         * assembly.c: Trace loading assemblies.
20938         * loader.c: Trace loading native libraries.
20939         * mono-config.c: Trace loading config files.
20940         
20941 2004-06-18  Dick Porter  <dick@ximian.com>
20942
20943         * locales.c: Tell ICU the lengths of strings, it can cope with
20944         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
20945
20946 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20947
20948         * image.c: swapped name/filename;
20949
20950 2004-06-18  Martin Baulig  <martin@ximian.com>
20951
20952         * mono-debug-debugger.c (write_class): Write the parent class at
20953         the end of the header.
20954
20955 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20956
20957         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
20958
20959 2004-06-17  Raja R Harinath  <rharinath@novell.com>
20960
20961         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
20962         (bundle_obj): New conditional define.
20963         (BUILT_SOURCES): Remove.
20964         ($(bundle_srcs)): Make parallel-make safe.
20965         (libmonoruntime_la_LIBADD): Make unconditional.
20966         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
20967         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
20968
20969 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
20970
20971         * culture-info-tables.h: It was inconsistent with the latest
20972           supp info files.
20973
20974 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
20975
20976         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
20977         be loaded.
20978
20979         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
20980         with gcc 2.95.
20981
20982 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20983
20984         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
20985         cleaned up public header threads.h.
20986
20987 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20988
20989         * Makefile.am, *.c, *.h: more API cleanups.
20990
20991 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20992
20993         * Makefile.am: removed monosn from compilation.
20994         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
20995         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
20996         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
20997         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
20998         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
20999         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
21000
21001 2004-06-15  Jackson Harper  <jackson@ximian.com>
21002
21003         * assembly.c: Make locales lower case when searching the GAC for
21004         assemblies. gacutil will always make locales lowercase when
21005         installing so this effectively makes them case insensitive.
21006         
21007 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
21008
21009         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
21010         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
21011           parameter which allows to choose whether the wait can be interrupted or 
21012           not. Also added the method mono_monitor_enter(), which locks the monitor
21013           using an infinite wait and without allowing interruption.
21014           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
21015           interrupted.
21016         * object.h: Added new fields in MonoThread. suspend_event holds the event
21017           used to susped/resume the thread. synch_lock is the lock object to use for
21018           modifying the thread state.
21019         * threads.c: Use the new synch_lock object for locking, instead of "this",
21020           which can generate deadlocks.
21021           Moved thread state change in Thread.Sleep and Thread.Join from managed
21022           to unmanaged code. This avoids a deadlock when the thread was suspended
21023           just after acquiring the thread lock.
21024           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
21025           Implemented Thread.Suspend using an event instead of ThreadSuspend,
21026           which is not fully implemented in the io-layer.
21027         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
21028
21029 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
21030
21031         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
21032         threads-types.h: more API cleanups.
21033
21034 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21035
21036         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
21037         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
21038         threadpool.c, threads.c: first pass at the exported API cleanup.
21039
21040 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21041
21042         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
21043
21044 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21045
21046         * icall.c: added internalGetHome.
21047
21048 2004-06-14  Dick Porter  <dick@ximian.com>
21049
21050         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
21051         possible to return successfully when '.' or '..' were the only
21052         entries in a directory, but were skipped.  The MonoIOStat was not
21053         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
21054         Fixes bug 59574.
21055
21056 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21057
21058         * reflection.c: make binaries run on .Net 1.1 by default.
21059
21060 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21061
21062         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
21063
21064 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
21065
21066         * marshal.c: keep track of struct size with explicit layout
21067         (bug #59979).
21068
21069 2004-06-12  Martin Baulig  <martin@ximian.com>
21070
21071         * mono-debug-debugger.c: Comment out a debugging g_message().
21072
21073 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21074
21075         * reflection.c, reflection.h: do not free custom attrs that are cached.
21076         * icall.c: use braces to make code clearer.
21077
21078 2004-06-11  Martin Baulig  <martin@ximian.com>
21079
21080         * class.h (MonoInflatedField): New type.
21081         (MonoClassField): Replaced `MonoType *generic_type' with
21082         `MonoInflatedField *generic_info'.
21083
21084         * icall.c
21085         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21086
21087 2004-06-11  Martin Baulig  <martin@ximian.com>
21088
21089         * reflection.c (mono_image_create_method_token): Correctly encode
21090         varargs methods.
21091
21092 2004-06-11  Martin Baulig  <martin@ximian.com>
21093
21094         * metadata.c (mono_metadata_parse_method_signature): When parsing
21095         a MethodDef which has VarArgs, also set sentinelpos if we don't
21096         have any parameters.
21097
21098 2004-06-11  Martin Baulig  <martin@ximian.com>
21099
21100         * verify.c (mono_method_verify): In CEE_CALL, use
21101         mono_method_get_signature() to get the method's signature, unless
21102         we're a PInvoke method.
21103
21104 2004-06-10  Jackson Harper  <jackson@ximian.com>
21105
21106         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21107         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21108         logical name as the supplied path is just a prefix to the gac not
21109         the direct path to it.
21110         
21111 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21112
21113         * reflection.c: make the token for a created method match
21114         the token of the MethodBuilder it was created from
21115         (IKVM requires this behaviour now).
21116
21117 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21118
21119         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21120         reflection.c, socket-io.c: leak fixes.
21121
21122 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21123
21124         * icall.c: handle sentinel pos in vararg methods in position different
21125         from 0.
21126
21127 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21128
21129         * culture-info-tables.h: freshly generated.
21130
21131 2004-06-09  Martin Baulig  <martin@ximian.com>
21132
21133         * loader.c (mono_get_method_constrained): Call `mono_class_init
21134         (constrained_class)'.   
21135
21136 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21137
21138         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21139         any methods. Fixes #59629.
21140
21141 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21142
21143         * culture-info-tables.h: reflecting locale-builder updates.
21144
21145 2004-06-08  Dick Porter  <dick@ximian.com>
21146
21147         * object.h:
21148         * locales.c: Fixed compile warnings, including a real bug in
21149         CompareInfo_internal_compare.
21150         
21151 2004-06-08  Dick Porter  <dick@ximian.com>
21152
21153         * locales.c
21154         (ves_icall_System_Globalization_CompareInfo_internal_index):
21155         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21156         Double-check the resuls of usearches, because ICU currently
21157         ignores most of the collator settings here.  Fixes bug 59720.
21158         
21159 2004-06-08  Dick Porter  <dick@ximian.com>
21160
21161         * locales.c
21162         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21163         Fix memory leak and segfault-causing typo.  No idea how this one
21164         lasted so long without being noticed.
21165
21166 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21167
21168         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21169         any methods. Fixes #59629.
21170
21171 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21172
21173         * assembly.c:
21174         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21175         own the critical section before). Removed dead code (that's done
21176         in the preload hook).
21177
21178         (mono_assembly_load_with_partial_name): call the preload hook.
21179
21180 2004-06-08  Martin Baulig  <martin@ximian.com>
21181
21182         * metadata.c (mono_metadata_signature_alloc): Default
21183         `sentinelpos' to -1.
21184
21185         * reflection.c (mono_image_get_array_token): Likewise.
21186
21187 2004-06-08  Martin Baulig  <martin@ximian.com>
21188
21189         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21190
21191         * metadata.c (mono_metadata_parse_method_signature): When parsing
21192         a MethodDef which has VarArgs, set sentinelpos.
21193
21194         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21195         `gint16' since we're using -1 for non-varargs methods.
21196
21197         * reflection.c
21198         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21199         (method_encode_signature): Added varargs support.
21200         (method_builder_encode_signature): Likewise.
21201         (mono_image_get_varargs_method_token): New static method.
21202         (mono_image_create_method_token): New public method; this is
21203         called via an icall instead of mono_image_create_token() when
21204         calling a varargs method.       
21205
21206 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21207
21208         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21209
21210 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21211
21212         * culture-info-tables.h : Reflecting the latest locale-builder that
21213           fixed empty array representation ({} to {0}).
21214
21215 2004-06-07  Jackson Harper  <jackson@ximian.com>
21216
21217         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21218         looking up extra gac paths. This allows MONO_GAC_PATH to act
21219         exactly like a prefix.
21220         
21221 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21222
21223         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21224         type name before modifying it. Fixes #59405.
21225
21226 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21227
21228         * culture-info.h: added fields for "all datetime patterns".
21229         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21230           _construct_datetime_format ()): fill xxx_patterns fields.
21231         * object.h: added fields for "all datetime patterns" to
21232           MonoDateTimeFormatInfo.
21233         * culture-info-tables.h: reflecting locale-builder updates.
21234
21235 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21236
21237         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21238         the event has no add and remove methods. Fixes #59629.
21239
21240 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21241
21242         * object.c: Fixed possible integer overflow when allocating large
21243         strings.
21244
21245 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21246
21247         * culture-info-tables.h: reflecting locale-builder updates.
21248
21249 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21250
21251         * culture-info-tables.h: reflecting locale-builder updates.
21252
21253 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21254
21255         * culture-info-tables.h: reflecting locale-builder updates.
21256
21257 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21258
21259         * threads.c: Made Thread.Sleep abortable.
21260
21261 2004-06-02  Martin Baulig  <martin@ximian.com>
21262
21263         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21264
21265         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21266
21267 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21268
21269         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21270
21271 2004-05-30  Jackson Harper  <jackson@ximian.com>
21272
21273         * reflection.c: Do not hardcode assembly versions or public key
21274         tokens anymore. All of this except the corlib section was dead
21275         code anyways.
21276         
21277 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21278
21279         * object.c (mono_runtime_invoke_array): Automatically create boxed
21280         objects for byref valuetypes if needed. Fixes #59300.
21281         
21282         * object.c (mono_method_return_message_restore): Handle 
21283         MONO_TYPE_OBJECT as well.
21284
21285 2004-05-28  Jackson Harper  <jackson@ximian.com>
21286
21287         * reflection.c: The modified type encoding was causing build
21288         problems. Reverted for now.
21289         
21290 2004-05-28  Jackson Harper  <jackson@ximian.com>
21291
21292         * reflection.c/h: Take an assembly ref so that we dont create
21293         fully qualified names when encoding types in the same assembly as
21294         the custom attribute being emitted.
21295         * appdomain.c: Increment version number.
21296         
21297 2004-05-26  Duncan Mak  <duncan@ximian.com>
21298
21299         * icall.c
21300         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21301         Set the full version number (major, minor, build, revision).
21302
21303 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21304
21305         * marshal.c (emit_struct_conv): increment src/dst after blit
21306         (mono_marshal_get_managed_wrapper,
21307         mono_marshal_get_native_wrapper): make sure we have marshalling
21308         info before marshalling params (info computation affects
21309         blittable)
21310
21311         * class.c (class_compute_field_layout): correctly deal with
21312         blittable
21313         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21314         value types (as per what windows dows by default)
21315         (mono_class_setup_mono_type): System.ValueType is blittable
21316         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21317         blittable
21318
21319         * marshal.c (mono_marshal_load_type_info): flag types  as
21320         non-blittable if the native layout doesn't match the managed
21321         layout
21322
21323 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21324
21325         * appdomain.c: don't add stuff in the private search path that is
21326         above the application base. If application base is not set, there's
21327         no private search path.
21328
21329 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21330
21331         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21332         byref struct arguments in native->managed marshalling.
21333
21334 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21335
21336         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21337         cache methods using signature (special case for methods
21338         that are value type or string class)
21339         
21340         * image.c (mono_image_close): clean up allocated GSList's
21341         in runtime_invoke_cache.
21342
21343 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21344
21345         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21346         there's no MONO_CFG_DIR environment variable defined.
21347
21348 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21349
21350         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21351
21352 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21353
21354         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21355           is interrumped.
21356         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21357           before waiting for it, and call CloseHandle after the wait to unref it.
21358           This will make sure that handles are not disposed too early.
21359
21360 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21361
21362         * appdomain.c:
21363         * appdomain.h:
21364         * icall.c: removed
21365         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21366         needed now.
21367
21368         * object.c: se the application_base only for the domain that runs
21369         Main. Fixes bug #59216,
21370
21371 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21372
21373         * appdomain.c:
21374         * object.c: only the domain in which Main is run have
21375         SetupInformation.ConfigurationFile set, so moved a few lines from
21376         appdomain.c to object.c.
21377
21378 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21379
21380         * appdomain.c: we tried to load [name].(dll|exe), but according
21381         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21382         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21383         There's a test case attached to bug #58922.
21384
21385 2004-05-27  Dick Porter  <dick@ximian.com>
21386
21387         * icall.c:
21388         * file-io.c: Implemented icalls for locking and unlocking regions
21389         in a file.
21390         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21391         FALSE on error (fixes both compiler warning and real bug.)
21392
21393 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
21394
21395         * culture-info-tables.h: reflecting locale-builder updates.
21396
21397           (Added missing ChangeLog entry for 05/26)
21398
21399 2004-05-27  Jackson Harper  <jackson@ximian.com>
21400
21401         * locales.c: Fix some cut and paste errors.
21402         
21403 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21404
21405         * mono-config.c: set the correct path for config. directory on windows.
21406
21407 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21408
21409         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
21410           on win32.
21411
21412 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21413
21414         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
21415         from pinvoke functions.
21416         
21417         * marshal.c (mono_ftnptr_to_delegate): Implement this.
21418
21419 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21420
21421         * culture-info-tables.h: reflecting locale-builder updates.
21422
21423 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21424
21425         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
21426         #59086.
21427
21428 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
21429
21430         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
21431         * icall.c: Modified icalls for RNG.
21432         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
21433         Windows (CryptoAPI).
21434
21435 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21436
21437         * locales.c: Fix build.
21438
21439 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
21440
21441         * culture-info-tables.h: reflecting locale-builder updates.
21442
21443 2004-05-25  Jackson Harper  <jackson@ximian.com>
21444
21445         * locales.c: When creating the current culture use the $LANGs
21446         specific culture. So DateTimeFormat and NumberFormat entries are created.
21447         
21448 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21449
21450         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
21451         a char array as parameter.
21452
21453 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
21454
21455         * image.c: In mono_image_open(), always use an absolute path name to
21456           look for already loaded images.
21457
21458 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
21459
21460         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
21461         missing in the windows build (like older cygwin include files).
21462
21463 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
21464
21465         * icall.c: Fixed check for possible integer overflow in Buffer_
21466         BlockCopy icall. Replaced comments style // by /* */.
21467
21468 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21469
21470         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
21471         
21472         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
21473         check after MONO_VTADDR. Fixes pinvoke2.exe.
21474
21475         * marshal.h marshal.c metadata.h: Add beginnings of support for
21476         ftnptr -> delegate marshalling.
21477
21478 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21479
21480         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
21481         * threads.c: Fix warnings.
21482
21483 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21484
21485         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
21486         * icall.c: Registered icalls for Suspend and Resume.
21487         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
21488           Thread.Abort.
21489         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
21490         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
21491         * process.c: Use WaitForSingleObjectEx.
21492         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
21493           checkpoints.
21494         * threads.c, threads.h: Make use of new Ex wait methods. Improved
21495           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
21496           for Suspend and Resume. Added new mono_thread_stop, used for stoping
21497           background threads. Added basic support for Abort in Windows.
21498           Start new threads using a managed delegate invoke wrapper. This wrapper
21499           has an interruption checkpoint that is needed since an interruption
21500           can be requested before the thread leaves the unmanaged code that starts 
21501           the thread.
21502         * marshal.c: Added interruption checkpoint after every native call, and
21503           also before managed calls for wrappers called from unmanaged code to
21504           go into managed code.
21505         * object.h: Added new field in MonoThread to keep track of interruption
21506           requests.
21507
21508 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21509
21510         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
21511         calls.
21512
21513 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21514
21515         * appdomain.c:
21516         * assembly.c:
21517         * gc.c:
21518         * locales.c:
21519         * mono-config.c:
21520         * rand.c: getenv -> g_getenv (windows!)
21521
21522         * process.c: complete_path is also used on non-windows platforms.
21523
21524 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21525
21526         * icall.c: new signature for Process_Start.
21527
21528         * process.[ch]: new signature for Process_Start. If we're on windows
21529         and UseShellExecute is false, we have to search for the program by
21530         ourselves if we don't get a full path.
21531
21532 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21533
21534         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
21535         marshalling and call CleanUpNativeData if needed. Fixes #58646.
21536
21537 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21538
21539         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
21540         Fixes bug #58373.
21541
21542 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21543
21544         * process.c: use double quotes to quote program name and arguments on
21545         windows. Fixes bug #58575.
21546
21547 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21548
21549         * file-io.c: don't return "." and ".." when using windows Find*File.
21550
21551 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
21552
21553         * marshal.c: Don't pass wrappers to message init because method 
21554         addressed used to lookup metadata. part of remoting[2|3] fix.
21555
21556 2004-05-15  Jackson Harper  <jackson@ximian.com>
21557
21558         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
21559         path is essentially the same as MONO_PATH except that it points to
21560         GACs instead of lib directories.
21561         * loader.h: The user gac is gone so we dont need function to
21562         enable/disable it.
21563         * mono-config.c: user gac option is now gone.
21564         
21565 2004-05-15  Jackson Harper  <jackson@ximian.com>
21566
21567         * culture-info.h: Make defines more consistent, add calendar data
21568         to the culture info table.
21569         * culture-info-tables.h: Add basic calendar data. Basically
21570         everyone gets default gregorian until all the data is
21571         updated.
21572         * locales.c: Use the new consistent defines. Set calendar data for
21573         culture info objects.
21574         * object.h: add a field for calendar data to CultureInfo
21575         
21576 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21577
21578         * image.c: image->runtime_invoke_cache is keyed on signatures now.
21579         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
21580         a signature.
21581         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
21582         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
21583         an extra param that is the pointer of the method to invoke. The IL for
21584         the invoke method is no longer specific to the method, but to the
21585         signature of the method. Thus, we can share the same code for multiple
21586         methods. This reduces the number of methods that have to be compiled.
21587
21588 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21589
21590         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
21591
21592         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21593
21594         * icall.c: Optimize Buffer.BlockCopy.
21595
21596 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21597
21598         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
21599         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
21600         quote). Changed them to "MMMM yyyy".
21601
21602 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
21603
21604         * rand.c
21605         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
21606
21607 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
21608
21609         * reflection.h: Updated after changes to managed structures.
21610
21611         * appdomain.c: Bump corlib version.
21612
21613 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21614
21615         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
21616         windows.
21617
21618 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21619
21620         * Makefile.am: link to ../os/libmonoos.la on windows.
21621
21622         * assembly.c:
21623                 -If MONO_DEBUG, warn about non-existing directories in
21624                 MONO_PATH.
21625                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
21626                 compile time variable.
21627                 -Removed init_default_path and call mono_set_rootdir from
21628                 libmonoos.a instead (windows only).
21629
21630         * assembly.h: declare mono_assembly_getrootdir().
21631
21632         * domain.c:
21633         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
21634
21635         * loader.c: s/getenv/g_getenv/
21636
21637 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21638
21639         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
21640
21641         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
21642
21643         * metadata.h: Add new marshalling conversions.
21644
21645         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
21646         function.
21647
21648         * reflection.c (mono_reflection_get_type): Lookup the type in all
21649         modules of a multi-module assembly. Fixes #58291.
21650
21651 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21652
21653         * threads.c: Before aborting a background, set the StopRequested
21654         state.  This avoids throwing the Abort exception.
21655         In mono_thread_manage, don't continue with the shutdown until all
21656         aborted threads have actually stopped.
21657
21658 2004-05-10  Jackson Harper  <jackson@ximian.com>
21659
21660         * locales.c: Remove the modifier from culture names.
21661         
21662 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21663
21664         * Makefile.am: monosn is not installed any more. It has been deprecated
21665         in favor of sn.
21666
21667 2004-05-07  Jackson Harper  <jackson@ximian.com>
21668
21669         * locales.c
21670         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
21671         Fix array construction, add bailout if the length is 0.
21672
21673 2004-05-07  Dick Porter  <dick@ximian.com>
21674
21675         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
21676         machine doesn't have a DNS entry.  Patch by Urs Muff
21677         (umuff@quark.com), fixes bug 57928.
21678
21679 2004-05-06  Jackson Harper  <jackson@ximian.com>
21680
21681         * reflection.c: Handle null PublicTokens properly. alloc mem for
21682         assembly names culture so we dont crash when freeing it.
21683         
21684 2004-05-06  Jackson Harper  <jackson@ximian.com>
21685
21686         * assembly.c: Check the usergac when loading with partial names.
21687         
21688 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21689
21690         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
21691         does nothing for now (not required for Linux/Windows) but the class
21692         library can call it (and a newer or modified runtime could need it).
21693         * icall.c: Registred icall.
21694
21695 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21696
21697         * loader.c: prints a message on module loading error we set MONO_DEBUG
21698         environment variable.
21699
21700 2004-05-05  Jackson Harper  <jackson@ximian.com>
21701
21702         * appdomain.c: Handle PublicKeyToken=null properly.
21703         
21704 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21705
21706         * environment.c|h: Added icall ves_icall_System_Environment_
21707         GetOSVersionString to get the current OS version as a string.
21708         * icall.c: Registred icall.
21709
21710 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
21711
21712         * object.c: in mono_object_get_virtual_method(), take into account that
21713         non-virtual methods don't have a slot in the vtable. Check needed when
21714         the object is a proxy.
21715
21716 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21717
21718         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
21719         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
21720
21721         * object.c (mono_class_compute_gc_descriptor): Fix warning.
21722
21723         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
21724         passed when a valuetype is expected.
21725
21726         * object.c (mono_unhandled_exception): Only set the exit code if the
21727         exception happens in the main thread. Fixes thread5.exe.
21728
21729         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
21730         invalid names. Fixes #58047.
21731
21732 2004-05-03  Jackson Harper  <jackson@ximian.com>
21733
21734         * assembly.c: This line was committed accidently and is unneeded.
21735         
21736 2004-05-03  Jackson Harper  <jackson@ximian.com>
21737
21738         * icall.c: Add new icall for Assembly::LoadWithPartialName
21739         * assembly.c/.h: new function that probes the GAC to load partial
21740         assembly names by Paolo Molaro.
21741         
21742 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21743
21744         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
21745         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
21746         (type_get_fully_qualified_name): Added PublicKeyToken when building a
21747         full type name.
21748
21749 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21750
21751         * appdomain.c: fixed check for 'neutral' culture and removed warning.
21752         * reflection.c: fix bug when parsing a full type name and Version is not
21753         the last thing in the string.
21754
21755 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
21756
21757         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
21758         crashes when it is freed.
21759
21760 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21761
21762         * assembly.c: print the compat warning to stderr.
21763
21764 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
21765
21766         * assembly.c (mono_assembly_load_references): Add a compatibility
21767         hack to run old applications that might be still referencing the
21768         3300-based assemblies, only do this for System.xxx.
21769
21770 2004-05-01  Jackson Harper  <jackson@ximian.com>
21771
21772         * appdomain.c: If the culture is neutral we set it to "".
21773         
21774 2004-04-29  Jackson Harper  <jackson@ximian.com>
21775
21776         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
21777
21778 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
21779  
21780         * string-icalls.c: added low overhead function for copying chars
21781         * icall.c: added needed icall for the above function
21782  
21783 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21784
21785         * icall.c: fix return value of get_global_assembly_cache.  Implemented
21786         Environment.GetLogicalDrives.
21787
21788 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
21789
21790         * rand.c: try and talk to egd or prngd
21791         for random bytes if opening devices fail.
21792
21793 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21794
21795         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
21796         alignment for the type using the native alignment of its members 
21797         instead of using klass->min_align.
21798
21799         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
21800
21801 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21802
21803         * file-io.c:
21804         * socket-io.c: added check for sys/aio.h.
21805
21806 2004-04-28  Dick Porter  <dick@ximian.com>
21807
21808         * threads.c: Don't abort a thread thats already aborting, when
21809         terminating everything.
21810
21811 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21812
21813         * icall.c: added 2 new async calls for Socket.
21814
21815         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
21816         IO on *nix systems.
21817
21818         * threadpool.c: removed unused variable.
21819
21820 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
21823
21824 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21825
21826         * locales.c: put back string_invariant_tolower () and
21827         string_invariant_toupper ().
21828
21829 2004-04-26 David Waite <mass@akuma.org>
21830
21831         * file-io.h:
21832         * socket-io.h:
21833         * threads.h:
21834         * unicode.h: remove comma from end of enumeration declarations
21835
21836 2004-04-26 David Waite <mass@akuma.org>
21837
21838         * debug-mono-symfile.h:
21839         * decimal.c:
21840         * mono_debug.h:
21841         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
21842
21843
21844 2004-04-26  Jackson Harper  <jackson@ximian.com>
21845
21846         * appdomain.c: Increment version number.
21847         
21848 2004-04-26  Jackson Harper  <jackson@ximian.com>
21849
21850         * appdomain.c: Set assembly references public token value when
21851         PublicKeyToken is specified, not the hash_value. Free public token
21852         values when free assembly name data. Previously the public key
21853         token was hex decoded, however we are using hex encoded public key
21854         tokens, so this is not neccasary.
21855         * assembly.c: Lookup assemblies in the gac if their public token
21856         value is set. Add function to allow enabling user gac
21857         lookups. Specify whether or not the assembly was loaded from the
21858         GAC. Compare full assembly names when checking the cache for
21859         assemblies (Temporarily disabled see comment in code). Remove
21860         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
21861         specifies trace-loader they get extra info to stdout on the
21862         loading of assemblies.
21863         * image.h: Add a field for an assembly references public token
21864         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
21865         whether an assembly has been loaded from the GAC.
21866         * image.c: Remove a corlib -> mscorlib name mapping.
21867         * loader.h: Add function to enable/disable the user gac.
21868         * mono-config.c: Check if the usergac is enabled in the config
21869         file.
21870         * icall.c: New icall to determine whether or not an assembly has
21871         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
21872         * tabldefs.h: Add constant for assemblyref flag that specifies a
21873         full public key is used instead of a public token.
21874         * reflection.c: Remove mscorlib -> corlib mappings. Set
21875         PublicTokenValue instead of hash value. This value is a hex
21876         string so it does not need to be expanded.
21877
21878 2004-04-26  Martin Baulig  <martin@ximian.com>
21879
21880         * mono-debug-debugger.c (mono_debugger_initialize): Set
21881         `mono_debugger_initialized' before calling mono_debug_lock().
21882
21883 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
21884
21885         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
21886           InternalToUpper/InternalToLower.
21887         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
21888           removed invariant culture shortcut.  This is now done in managed code.
21889         * locales.c: (string_invariant_toupper/tolower) removed.
21890
21891 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21892
21893         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
21894         Added Poll internal call.
21895
21896         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
21897         call for Poll. Select was too heavy for polling a single socket.
21898
21899         * threadpool.[ch]: added mono_threadpool_cleanup.
21900         * threads.c: use it. Don't use Thread_Abort on windows.
21901
21902 2004-04-23  Martin Baulig  <martin@ximian.com>
21903
21904         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
21905
21906 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
21907
21908         * icall.c: Registred new icalls for key pair protection and added an
21909         icall for Environment.GetFolderPath on Windows.
21910         * security.c|h: Added new icalls for key pair protection.
21911
21912 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21913
21914         * socket-io.c: don't display the non-supported family warning for known
21915         families. Now this is not displayed on windows when checking support
21916         for IPv4/IPv6.
21917
21918 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21919
21920         * class.c: don't display the layout warning for static fields.
21921
21922 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
21923
21924         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
21925         * locales.c, locales.h: Added new icalls for culture-specific
21926         Char.ToLower and Char.ToUpper.
21927
21928 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21929
21930         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
21931         by David Waite.
21932
21933 2004-04-20  Martin Baulig  <martin@ximian.com>
21934
21935         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
21936         of the type name before passing it to mono_reflection_type_from_name().
21937
21938 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21939
21940         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
21941         encodings here. Fixes #56965.
21942
21943 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
21944
21945         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
21946         fix test on strstr result not that I can see anything that
21947         relies on the result.
21948
21949 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21950
21951         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
21952         Fixes #57081.
21953
21954         * marshal.c (mono_marshal_get_string_encoding): New helper function.
21955
21956         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
21957         function to determine which marshalling to use for strings. Fixes
21958         #56965.
21959
21960         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
21961
21962         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
21963
21964 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
21965
21966         * icall.c: #include mono-config.h
21967
21968 2004-04-15  Jackson Harper  <jackson@ximian.com>
21969
21970         * culture-info-tables.h: Fix date formats for en-US culture.
21971         
21972 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
21973
21974         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
21975         ThreadPool.SetMinThreads.
21976         * threadpool.c: Implemented ThreadPool.GetMinThreads and
21977         ThreadPool.SetMinThreads.
21978
21979 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21980
21981         * mono-config.c: also load the .config file in the directory
21982         where the assembly was found.
21983
21984 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21985
21986         * assembly.c: load per-assembly config files.
21987         * icall.c: decrapified code to get the config dir and moved to
21988         mono-config.c.
21989         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
21990         per-assembly config files. When doing a dll map lookup give precedence
21991         to the per-assembly data.
21992
21993 2004-04-14  Martin Baulig  <martin@ximian.com>
21994
21995         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
21996         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
21997         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
21998
21999         * mono-debugger-debugger.c: While the debugger is locked, remember
22000         whether the symbol tables have changes and send one single
22001         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
22002
22003 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22004
22005         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
22006
22007         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
22008         function.
22009
22010         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
22011         account when marshalling string arrays. Fixes #56965.
22012
22013 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
22014
22015         * icall.c: Add new icalls mapping for security.
22016         * security.c|h: Add internal calls for WindowsIdentity,
22017         WindowsImpersonationContext and WindowsPrincipal.
22018
22019 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
22020
22021         * class.c: Added comment to ensure the System.MonoDummy class
22022         is removed when no longer necessary
22023
22024 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22025
22026         * appdomain.c: Pass arguments to the bootstraping exceptions to
22027         minimize JITed methods at boot
22028
22029         * metadata.c (mono_exception_from_name_two_strings): Allow for the
22030         second string to be null.
22031
22032         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22033         Change the protocol to minimize the JIT methods at startup.  Now
22034         it Returns the internal codepage, if the value of "int_code_page"
22035         is 1 at entry, and we can not compute a suitable code page
22036         number, returns the code page as a string.
22037
22038 2004-04-13  Jackson Harper  <jackson@ximian.com>
22039
22040         * culture-info-tables.h: Fix number of decimal digits for all
22041         english locales.
22042
22043 2004-04-13  Jackson Harper  <jackson@ximian.com>
22044
22045         * icall.c: Clairfy out of sync error message. It is not always
22046         your corlib that is out of sync.
22047
22048 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
22051         properties when only the set accessor is overriden. Fixes #55874.
22052
22053 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
22054
22055         * assembly.c (mono_assembly_load_references): Make this thread safe.
22056         Fixes #56327.
22057
22058 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22059
22060         * monosn.c: Add missing initialization calls.
22061
22062 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
22063
22064         * locales.c:
22065         ves_icall_System_Globalization_CultureInfo_construct_number_format
22066         Fix g_assert so it compiles on fussier compilers re int/ptr
22067         mismatch
22068
22069 2004-04-08  Dick Porter  <dick@ximian.com>
22070
22071         * socket-io.h:
22072         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
22073         53992.  Also rearrange the code so that the internal calls return
22074         an error value and exceptions are thrown from managed code.
22075
22076         * icall.c: Add type info to the socket icalls.
22077
22078 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22079
22080         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22081         owes me a beer.
22082
22083 2004-04-07  Martin Baulig  <martin@ximian.com>
22084
22085         * class.c (mono_class_from_generic_parameter): Don't default
22086         `klass->parent' to `mono_defaults.object_type'.
22087
22088 2004-04-07  Martin Baulig  <martin@ximian.com>
22089
22090         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22091         `param->pklass->reflection_info'.       
22092
22093 2004-04-07  Jackson Harper  <jackson@ximian.com>
22094
22095         * culture-info-tables.h: Fix date separator symbol.
22096         
22097 2004-04-07  Martin Baulig  <martin@ximian.com>
22098
22099         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22100         from System.Type to System.MonoType.
22101
22102 2004-04-07  Martin Baulig  <martin@ximian.com>
22103
22104         * reflection.h
22105         (MonoReflectionGenericParam): Added `has_reference_type' and
22106         `has_value_type' fields.
22107
22108         * reflection.c (mono_image_get_generic_param_info): Encode the
22109         correct flags if we have the `class' or `struct' constraint.
22110
22111 2004-04-07  Martin Baulig  <martin@ximian.com>
22112
22113         * reflection.h
22114         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22115
22116 2004-04-07  Jackson Harper  <jackson@ximian.com>
22117
22118         * appdomain.c: Revert extra patches, just wanted to bump the
22119         version number.
22120         
22121 2004-04-07  Jackson Harper  <jackson@ximian.com>
22122
22123         * Makefile.am: Add culture-info private headers.
22124         * icall.c: Add new icalls for contructing locales.
22125         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22126         * locales.h: Declare new culture info construction methods.
22127         * object.h: Add new fields used to avoid the CultureMap to
22128         MonoCultureInfo.
22129         * culture-info.h: Definition of structs used in the culture info
22130         tables.
22131         * culture-info-tables.h: Autogenerated tables that contain culture
22132         info data. This file was generated with the locale-builder tool.
22133         * appdomain.c: Incement corlib version number.
22134         
22135 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22136
22137         * appdomain.c: (mono_runtime_init) move mono_thread_init
22138         to before mono_object_new calls so critical sections
22139         are initialized before use.
22140
22141 2004-04-07  Martin Baulig  <martin@ximian.com>
22142
22143         * icall.c
22144         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22145         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22146         (ves_icall_MonoGenericParam_initialize): Removed.
22147         (monogenericparam_icalls): Removed.
22148         (generictypeparambuilder_icalls): Added new table for
22149         System.Reflection.Emit.GenericTypeParameterBuilder.
22150
22151         * reflection.c
22152         (mono_reflection_define_generic_parameter): Removed.
22153         (mono_reflection_initialize_generic_parameter): This is now called
22154         from GenericTypeParameterBuilder's .ctor.
22155
22156 2004-04-06  Martin Baulig  <martin@ximian.com>
22157
22158         * class.c (mono_class_init): Don't inflate nested classes in a
22159         generic instance.
22160         (mono_type_get_name_recurse): Include the generic arguments for
22161         generic instances and generic type declarations.
22162         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22163         (_mono_class_get_instantiation_name): Removed.
22164         (mono_class_create_generic): Always use `gklass->name' as our name.
22165
22166         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22167
22168         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22169         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22170         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22171         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22172         closed generic methods here.
22173
22174         * reflection.c
22175         (mono_reflection_generic_inst_get_nested_types): Removed.
22176         (inflate_mono_method): Copy the generic parameters from the
22177         MonoMethodHeader into out MonoGenericMethod.
22178
22179 2004-04-06  Martin Baulig  <martin@ximian.com>
22180
22181         * row-indexes.h
22182         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22183
22184         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22185
22186         * reflection.c (build_compressed_metadata): If we have any entries
22187         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22188         set the header version to 1.1.
22189
22190 2004-04-06  Martin Baulig  <martin@ximian.com>
22191
22192         * class.c (mono_class_init): If we're a generic instance,
22193         initialize our nested classes, too.
22194         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22195         suffix. 
22196
22197 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22198
22199         * process.c: quote the argument passed to the shell on windows.
22200
22201 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22202
22203         * threads.c (mono_alloc_special_static_data): Allow this to be
22204         called during startup.
22205
22206 2004-04-02  Martin Baulig  <martin@ximian.com>
22207
22208         * icall.c
22209         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22210
22211 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22212
22213         * icall.c: Fix build.
22214
22215 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22216
22217         * Makefile.am: Added security.c|h.
22218         * icall.c: Added icall for get_UserName;
22219         * security.c: New file for security related icalls. Added function
22220         get_UserName for System.Environment (fix #56144).
22221         * security.h: New. Header file for security.c
22222
22223 2004-04-02  Dick Porter  <dick@ximian.com>
22224
22225         * icall.c: Deleted the icalls that were obsoleted some time ago
22226         by the ICU string code, and which were mixed into the icall
22227         rearranging.  Fixes bug 55969.
22228
22229         * string-icalls.h: 
22230         * string-icalls.c: Deleted the code that those icalls reference.
22231
22232 2004-04-01  Martin Baulig  <martin@ximian.com>
22233
22234         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22235
22236         * class.c (mono_class_from_generic_parameter): Don't set 
22237         TYPE_ATTRIBUTE_INTERFACE.
22238         (my_mono_class_from_generic_parameter): Likewise.
22239
22240 2004-04-01  Martin Baulig  <martin@ximian.com>
22241
22242         * loader.c (find_method): Added an optional `MonoClass *ic'
22243         argument to search in a specific interface.
22244         (mono_get_method_constrained): New public function.
22245
22246 2004-04-01  Martin Baulig  <martin@ximian.com>
22247
22248         * reflection.c (mono_image_get_generic_field_token): Use the
22249         `handleref' cache here.
22250
22251 2004-04-01  Martin Baulig  <martin@ximian.com>
22252
22253         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22254
22255         * reflection.c (create_generic_typespec): Use the `typespec' hash
22256         here, not the `typeref' one.    
22257
22258 2004-04-01  Martin Baulig  <martin@ximian.com>
22259
22260         * class.c (mono_class_inflate_generic_type): Moved the
22261         functionality into a new static inflate_generic_type() which
22262         returns NULL if it didn't do anything.  Only increment the
22263         `mono_stats.inflated_type_count' if we actually inflated
22264         something.
22265         (mono_class_get_full): Check the classes type to see whether we
22266         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22267
22268 2004-04-01  Jackson Harper  <jackson@ximian.com>
22269
22270         * reflection.c: Set culture for assembly references.
22271         
22272 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22273
22274         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22275
22276 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22277
22278         * assembly.c:
22279         (do_mono_assembly_open): the critical section also covers
22280         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22281
22282 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22283
22284         * threads.c:
22285         (mono_manage_threads): abort the background threads when finishing.
22286         Fixes bug #47232.
22287
22288 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22289
22290         * gc.c: only close the done_event handle if there was no timeout.
22291         C-ified comments.
22292
22293 2004-03-30  Martin Baulig  <martin@ximian.com>
22294
22295         * icall.c (icall_entries): It's called "System.Activator", not
22296         "System.Activation".    
22297
22298 2004-03-30  Martin Baulig  <martin@ximian.com>
22299
22300         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22301         (mono_class_create_from_typespec): Likewise.
22302
22303 2004-03-30  Martin Baulig  <martin@ximian.com>
22304
22305         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22306         `has_ctor_constraint' and `initialized'.
22307
22308 2004-03-30  Martin Baulig  <martin@ximian.com>
22309
22310         * reflection.c (encode_new_constraint): New static function to add
22311         the constructor constraint attribute to a type parameter.
22312         (encode_constraints): Call encode_new_constraint() if necessary.
22313
22314         * reflection.h
22315         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22316
22317         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22318         
22319 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22320
22321         * reflection.c, icall.c: add support for pinning variables. 
22322
22323 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22324
22325         * marshal.c (mono_marshal_get_managed_wrapper):
22326         init bool local with zero rather than null.
22327
22328 2004-03-29  Martin Baulig  <martin@ximian.com>
22329
22330         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22331         the "official" behavior here.
22332         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22333
22334 2004-03-29  Martin Baulig  <martin@ximian.com>
22335
22336         * icall.c: Reflect latest API changes.
22337
22338 2004-03-29  Martin Baulig  <martin@ximian.com>
22339
22340         * loader.c (mono_get_method_from_token): Also call
22341         mono_metadata_load_generic_params () for abstract and interface
22342         methods; replace the type arguments in the method signature with
22343         the ones which are loaded from the metadata.
22344
22345 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22346
22347         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22348         of the lock is not the current thread. MS.NET don't do it, in spite of
22349         what the documentation says. See bug #56157.
22350
22351 2004-03-28  Martin Baulig  <martin@ximian.com>
22352
22353         * class.c (mono_class_init): Don't call init_properties() and
22354         init_events() for generic instances; set `prop->parent' when
22355         inflating properties.
22356
22357         * reflection.c (mono_generic_inst_get_object): Call
22358         `mono_class_init (ginst->klass)'.
22359         (mono_type_get_object): Only create a MonoGenericInst if your
22360         generic type is a TypeBuilder.
22361         (do_mono_reflection_bind_generic_parameters): Only set
22362         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22363
22364 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22365
22366         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22367         Fixes #56091.
22368
22369 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22370
22371         * icall.c: added Kill_internal icall.
22372         * process.[ch]: added Kill_internal icall.
22373
22374 2004-03-25  Martin Baulig  <martin@ximian.com>
22375
22376         * class.h (MonoStats): Added `generic_instance_count',
22377         `inflated_method_count', `inflated_type_count' and
22378         `generics_metadata_size'.       
22379
22380 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22381
22382         * reflection.c: no warnings now.
22383
22384 2004-03-25  Martin Baulig  <martin@ximian.com>
22385
22386         * class.c (mono_class_get_full): New public function; does a
22387         mono_class_get(), but also takes a `MonoGenericContext *'.
22388
22389         * loader.c (mono_field_from_memberref): Renamed to
22390         `field_from_memberref', made static and added `MonoGenericContext *'
22391         argument.
22392         (mono_field_from_token): Added `MonoGenericInst *' argument.
22393         (method_from_memberef): Likewise.
22394         (mono_get_method_from_token): Likewise.
22395         (mono_get_method_full): New public function; does a
22396         mono_get_method(), but also takes a `MonoGenericContext *'.
22397
22398         * verify.c (mono_method_verify): Get the method's generic context
22399         and pass it to mono_field_from_token(), mono_get_method_full() and
22400         mono_class_get_full().
22401
22402 2004-03-25  Martin Baulig  <martin@ximian.com>
22403
22404         * class.c (mono_class_inflate_generic_type): Take a
22405         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
22406         `MonoGenericMethod *'.
22407
22408 2004-03-25  Martin Baulig  <martin@ximian.com>
22409
22410         * loader.h (MonoMethodInflated): Store the MonoGenericContext
22411         instead of the MonoGenericMethod here.
22412
22413 2004-03-25  Martin Baulig  <martin@ximian.com>
22414
22415         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
22416         each time we create a new MonoGenericInst, we also create a new
22417         context which points back to us.
22418
22419         * class.c (inflate_method): Use `ginst->context' instead of
22420         creating a new context.
22421
22422         * loader.c (method_from_memberref): Use
22423         `klass->generic_inst->context' instead of creating a new context.
22424
22425 2004-03-25  Martin Baulig  <martin@ximian.com>
22426
22427         * class.h (MonoGenericContext): New struct.
22428         (MonoGenericMethod): Removed `generic_inst'.
22429
22430         * class.c (mono_class_inflate_generic_method): Take a
22431         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
22432
22433 2004-03-25  Martin Baulig  <martin@ximian.com>
22434
22435         * loader.h (MonoMethodInflated): New typedef.
22436
22437         * metadata.h (MonoMethodSignature): Removed `gen_method', make
22438         `generic_param_count' consume just 30 bits, added `is_inflated'
22439         and `has_type_parameters' flags (one bit each).
22440
22441         * class.c (mono_class_inflate_generic_method): Create a
22442         MonoMethodInflated instead of a MonoMethodNormal and set
22443         `is_inflated' in the method signature.
22444
22445         * class.h (MonoGenericMethod): Removed `generic_method'.
22446
22447 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
22448
22449         * image.c: Make sure the name of a MonoImage is always an absolute path.
22450           This fixes bug #54415.
22451
22452 2004-03-24  Martin Baulig  <martin@ximian.com>
22453
22454         * class.c (mono_class_setup_vtable): If we're a generic instance,
22455         use our generic type's vtable size.
22456
22457 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22458
22459         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
22460         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
22461         problems.
22462
22463 2004-03-23  Martin Baulig  <martin@ximian.com>
22464
22465         * class.h (MonoDynamicGenericInst): Added `int count_events' and
22466         `MonoEvent *events'.
22467
22468         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
22469         (typebuilder_icalls): Added "get_event_info"; calls
22470         mono_reflection_event_builder_get_event_info(). 
22471
22472         * reflection.c (mono_reflection_generic_inst_initialize): Added
22473         `MonoArray *events'.
22474         (mono_reflection_event_builder_get_event_info): New function.
22475
22476 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
22477
22478         * object.h: add mono_type_initialization_init
22479
22480         * object.c (mono_runtime_class_init): 
22481         implement class constructor synchronization rules
22482         to cope with threading issues.  
22483         add mono_type_initialization_init
22484
22485         * appdomain.c (mono_runtime_init): call 
22486         mono_type_initialization_init
22487
22488         * class.h: removing initializing field from MonoVTable
22489
22490 2004-03-23  Martin Baulig  <martin@ximian.com>
22491
22492         * class.c (my_mono_class_from_generic_parameter): Use
22493         `param->name' if it's not NULL. 
22494
22495 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
22496
22497         * class.c: do not insert non-virtual methods in the vtable.
22498         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
22499         that means the method is non-virtual. This never would have
22500         happened before.
22501
22502 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22503
22504         * profiler.c: Added lock for accessing coverage_hash.
22505
22506 2004-03-22  Martin Baulig  <martin@ximian.com>
22507
22508         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
22509         `method->method->signature->generic_param_count != 0' to make it
22510         work for interface methods.
22511
22512 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22513
22514         * process.c: quote the string passed to the shell using g_shell_quote.
22515
22516 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22517
22518         * threads.c:
22519         (mono_threads_manage): don't remove the finalizer thread and self
22520         from the threads hash table so that mono_thread_manage can be called
22521         more than once.
22522
22523 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22524
22525         * process.c: quote the arguments when UseShellExecute is true. Fixes
22526         bug #55790.
22527
22528 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22529
22530         * threads.c: set mono_thread_detach as a cleanup routine for every
22531         thread. This way it's always executed upon thread termination, either
22532         aborted or finished normally. No more xsp hangs!
22533
22534 2004-03-17  Martin Baulig  <martin@ximian.com>
22535
22536         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
22537         `int count_nested' and a `MonoType **nested'.
22538
22539         * reflection.c (mono_reflection_bind_generic_parameters): Moved
22540         most of the functionality into a new static
22541         do_mono_reflection_bind_generic_parameters() and don't take a
22542         `MonoType *nested_in' argument any more.  Don't compute nested
22543         types here.
22544         (mono_reflection_generic_inst_get_nested_types): New public method
22545         to get nested types.
22546
22547         * class.c (mono_class_create_generic): Set `klass->nested_in' if
22548         we're a nested class.
22549
22550         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
22551         mono_reflection_generic_inst_get_nested_types() to compute the
22552         nested types.
22553
22554 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22555
22556         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
22557         descriptive error message under windows.
22558         
22559 2004-03-17  Martin Baulig  <martin@ximian.com>
22560
22561         * class.c (dup_type): Added `const MonoType *original' argument;
22562         copy the attrs from the original type.
22563
22564 2004-03-17  Martin Baulig  <martin@ximian.com>
22565
22566         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
22567         `m->generic_inst_cache' here.
22568
22569 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22570
22571         * exception.h exception.c: Add stack_overflow_exception.
22572
22573 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22574
22575         * threadpool.c:
22576         (overlapped_callback): call SetEvent *after* invoking the callback.
22577         No need to call CloseHandle.
22578
22579 2004-03-16  Martin Baulig  <martin@ximian.com>
22580
22581         * reflection.c (mono_image_get_fieldref_token): Take a
22582         `MonoReflectionField *' instead of a `MonoClassField *' and a
22583         `MonoClass *'; store the `MonoReflectionField *' in the hash.
22584
22585 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22586
22587         * appdomain.c: don't add the culture to the filename we're looking for
22588         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
22589
22590 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22591
22592         * locales.c: don't ignore symbols when doing case insensitive compares.
22593         Thanks Dick! Fixes bug #54046.
22594
22595         * threads.c: surround 'threads' usage with enter/leave in
22596         mono_thread_manage.
22597
22598 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22599
22600         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
22601         implicitly marshalled as [Out]. Fixes #55450.
22602
22603         (mono_marshal_get_runtime_invoke): Zero out the result if there is
22604         an exception.
22605
22606 2004-03-16  Martin Baulig  <martin@ximian.com>
22607
22608         * class.c (mono_class_from_generic_parameter): Use the actual
22609         parameter name. 
22610
22611 2004-03-16  Martin Baulig  <martin@ximian.com>
22612
22613         * reflection.c (type_get_signature_size): New static function.
22614         Compues the size of the type in a method signature.
22615         (method_get_signature_size): New static function; calls
22616         type_get_signature_size() to compute the actual size of the
22617         method's signature.
22618         (method_encode_signature): Use method_get_signature_size() to get
22619         the signature's size rather than using `nparams * 10'.
22620
22621 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22622
22623         * file-io.h: define here WapiOverlapped on windows. I don't want the
22624         regular OVERLAPPED one.
22625
22626         * file-io.c:
22627         * threadpool.c: somehow, BindIoCompletionCallback is not found.
22628         Disabling AIO on windows.
22629
22630 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22631
22632         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
22633         bug #55385.
22634
22635 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22636
22637         * appdomain.c: upgraded corlib version.
22638
22639         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
22640         and BeginWrite. Allow opening files for asynchrnous operations.
22641
22642         * file-io.h: new struct that maps FileStreamAsyncResult.
22643         * icall.c: added new icalls.
22644         * process.[ch]: support setting child process environment variables
22645         and use the SHELL or COMSPEC when UseShellExecute is true.
22646
22647         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
22648         callback for async. IO is here and also BindHandle.
22649
22650         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
22651         from here.
22652
22653 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22654
22655         * reflection.c (create_custom_attr): Allow len == 0.
22656
22657         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
22658         computation on big-endian machines.
22659
22660 2004-03-13  Martin Baulig  <martin@ximian.com>
22661
22662         * class.h (MonoGenericInst): Added `int count_ifaces'.
22663
22664         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
22665         `ginst->count_ifaces' instead `klass->interface_count' since we
22666         may get called before the vtable is created.
22667
22668         * loader.c (mono_method_get_param_names): If we're a generic
22669         instance, return and don't initialize the class.
22670
22671         * reflection.c (mono_reflection_setup_generic_class): Don't call
22672         ensure_runtime_vtable().
22673         (mono_reflection_bind_generic_parameters): Set
22674         `ginst->count_ifaces'.
22675
22676 2004-03-11  Jackson Harper <jackson@ximian.com>
22677
22678         * icall.c:
22679         * unicode.c:
22680         * unicode.h: Remove unused System.Char icalls.
22681         
22682 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
22683
22684         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
22685         code when we P/Invoke the first library in Windows.Forms, instead
22686         of when we first open the assembly.
22687
22688         * assembly.c: Drop the lookup from here.
22689
22690 2004-03-10  Martin Baulig  <martin@ximian.com>
22691
22692         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
22693         class for properties, fields and events.  Finally fixes #54945.
22694
22695 2004-03-10  Martin Baulig  <martin@ximian.com>
22696
22697         * metadata.c (mono_metadata_class_equal): New static function;
22698         checks whether two generic instances or two generic parameters are
22699         equal.
22700         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
22701         compare classes.        
22702
22703 2004-03-10  Martin Baulig  <martin@ximian.com>
22704
22705         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
22706
22707         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
22708         argument and write it into the `reflection_info' field.
22709
22710         * icall.c
22711         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
22712         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
22713
22714 2004-03-09  Jackson Harper  <jackson@ximian.com>
22715
22716         * char-conversions.h: use 8 bits for numeric data its all we need
22717         * icall.c: numeric data is only 8 bits now.
22718
22719 2004-03-09  Martin Baulig  <martin@ximian.com>
22720
22721         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
22722
22723         * class.c (init_properties, init_events): Initialize the new
22724         `parent' field.
22725
22726         * reflection.c (typebuilder_setup_properties): Likewise.
22727         (typebuilder_setup_events): Likewise.
22728
22729         * reflection.h (MonoEventInfo): Replaced `parent with
22730         `declaring_type' and `reflected_type'.
22731
22732         * icall.c (ves_icall_get_property_info): Distinguish between
22733         declaring and reflected type.
22734         (ves_icall_get_event_info): Likewise.
22735
22736 2004-03-09  Martin Baulig  <martin@ximian.com>
22737
22738         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
22739         (ves_icall_Type_GetField): Correctly set field->klass.
22740
22741 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22742
22743         * loader.h: Fix warning.
22744
22745 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
22746
22747         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
22748         library routine if present.  Notice that it will still continue
22749         executing even if its missing, for those working on the Gtk#
22750         edition of Windows.Forms.
22751
22752         * assembly.c (do_mono_assembly_open): If loading the
22753         System.Windows.Forms call mono_loader_wini_init.
22754
22755 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22756
22757         * class.h: Added MonoRemoteClass struct.
22758         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
22759         function for MonoStrings.
22760         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
22761         Added internal call for getting the proxy type.
22762         * marshal.c: Get the type of transparent proxies from its remote_class.
22763         Added methods that generate the IL for type checks and casts:
22764         mono_marshal_get_isinst, mono_marshal_get_castclass, 
22765         mono_marshal_get_proxy_cancast.
22766         * marshal.h: Declaration of the previous new methods.
22767         * object.c: Added new moethods for creating and updating MonoRemoteClass
22768         instances: mono_remote_class, mono_upgrade_remote_class, 
22769         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
22770         * verify.c: FIx transparent_proxy_fields layout.
22771         * appdomain.c: Bump corlib version.
22772
22773 2004-03-04  Jackson Harper  <jackson@ximian.com>
22774
22775         * icall.c: Add icall to access char conversion tables.
22776         * char-conversions.h: Character conversion tables.
22777         * Makefile.am: Add char-conversions.h private header file.
22778         
22779 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
22780
22781         * appdomain.c (unload_thread_main): Increase unloading timeout to
22782         10 sec as a temporary workaround for Nant problems.
22783
22784 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
22785
22786         * gc.c: Add checks for GC_enable and GC_disable.
22787
22788         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
22789         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
22790         (bug #54988).
22791         
22792 2004-02-27  Martin Baulig  <martin@ximian.com>
22793
22794         * reflection.c (mono_reflection_bind_generic_parameters): Take a
22795         `MonoReflectionType *' instead of a `MonoType *'.
22796
22797 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22798
22799         * gc.c (run_finalize): Avoid finalizing the object representing the
22800         finalizer thread.
22801         (finalizer_thread): Fix warning.
22802
22803 2004-02-25  Martin Baulig  <martin@ximian.com>
22804
22805         * class.c (_mono_class_get_instantiation_name): Added `int offset'
22806         argument for nested types.
22807         (mono_class_create_generic): Added support for nested generictypes.
22808
22809         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
22810         `GList *nested'.
22811
22812         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
22813
22814         * reflection.c (method_encode_signature): Increase the minimum
22815         value of `size' from 10 to 11.
22816         (mono_reflection_bind_generic_parameters): Take `int type_argc'
22817         and `MonoType **types' arguments instead of the `MonoArray
22818         *types'; added `MonoType *nested_in'.  Recursively instantiate
22819         nested classes. 
22820
22821 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22822
22823         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
22824         stack_overflow_ex members which are used by exception handling.
22825
22826         * appdomain.c (mono_runtime_init): Initialize the new members.
22827
22828         * gc.c (mono_gc_enable): New helper function.
22829         * gc.c (mono_gc_disable): New helper function.
22830
22831 2004-02-23  Martin Baulig  <martin@ximian.com>
22832
22833         * icall.c: I must have been really stupid - make it actually work
22834         this time ;-)
22835
22836 2004-02-23  Martin Baulig  <martin@ximian.com>
22837
22838         * loader.c (method_from_memberref): Only inflate the method if
22839         it's in another klass.
22840
22841 2004-02-23  Martin Baulig  <martin@ximian.com>
22842
22843         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
22844         (mono_class_init): If we're a generic instance and an interface,
22845         compute `class->interface_id'; also create `class->interfaces'
22846         here and inflate them.
22847
22848         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
22849         `ginst->is_open'.
22850         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
22851
22852         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
22853
22854 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
22855
22856         * reflection.c (method_encode_code): Improved the error message
22857         generated by the exception.
22858
22859 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22860
22861         * icall.c: Martin did not do what he said in the ChangeLog for
22862         2004-02-18, but put back the changes for properties and events.
22863         Commenting those changes out again and adding comment to bug #54518.
22864         
22865         * process.c: removed warning.
22866
22867 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
22868
22869         * marshal.c (emit_struct_conv): Print an error message instead of
22870         asserting when a type does not have the StructLayout attribute.
22871
22872 2004-02-20  Martin Baulig  <martin@ximian.com>
22873
22874         * reflection.c (mono_type_get_object): Also use the cache for
22875         generic instances.
22876         (mono_reflection_bind_generic_parameters): Always compute
22877         `ginst->ifaces'.        
22878
22879 2004-02-20  Martin Baulig  <martin@ximian.com>
22880
22881         * class.h (MonoGenericMethod): Removed `klass'.
22882
22883         * class.c (mono_class_inflate_generic_method): Added `MonoClass
22884         *klass' argument.
22885
22886 2004-02-20  Martin Baulig  <martin@ximian.com>
22887
22888         * reflection.c (method_encode_methodspec): Actually use the
22889         uninflated signature for the memberref.
22890
22891 2004-02-20  Martin Baulig  <martin@ximian.com>
22892
22893         * class.h (MonoGenericMethod): Removed `declaring'.
22894
22895         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
22896         is NULL, compute it here.
22897
22898 2004-02-20  Martin Baulig  <martin@ximian.com>
22899
22900         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
22901
22902         * metadata.c (mono_metadata_generic_inst_hash): New method.
22903         (mono_metadata_generic_inst_equal): New method.
22904
22905         * reflection.c (mono_reflection_bind_generic_parameters): Use the
22906         `klass->image->generic_inst_cache' cache to avoid creating
22907         duplicate MonoGenericInst's.
22908
22909         * class.c (mono_class_inflate_generic_type): Use the cache.
22910
22911 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
22912
22913         * object.c: fixed gc descriptor calculation for embedded valuetypes.
22914
22915 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22916
22917         * icall.c: added Socket.WSAIoctl icall.
22918
22919         * socket-io.[ch]: implemented
22920         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
22921
22922 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
22923
22924         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
22925
22926 2004-02-18  Urs C Muff  <umuff@quark.com>
22927
22928         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
22929         this work on PPC and other big-endian architectures.
22930
22931         * debug-mono-symfile.h: Prepended the names of all the `guint32'
22932         fields with an underscore to make sure they're only accessed by
22933         the read32() macro.
22934
22935 2004-02-18  Martin Baulig  <martin@ximian.com>
22936
22937         * icall.c: Put the klass->refclass changes back for methods and
22938         fields, but not for properties and events.  We're currently not
22939         distinguishing between DeclaringType and ReflectedType for
22940         properties and events, that's what caused the regressions.
22941
22942 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22943
22944         * object.c:
22945         (mono_async_result_new): the handle can be NULL.
22946
22947         * threadpool.c: Use an event instead of a semaphore, don't initialize
22948         it until needed. This saves quite a few semaphores from being created
22949         when using the threadpool.
22950
22951 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
22952
22953         * object.c (mono_string_is_interned_lookup): Fix interning of long
22954         strings. Fixes #54473.
22955
22956         * domain.c (ldstr_equal): Optimize if the two strings are equal.
22957
22958         * icall.c: Revert the klass->refclass changes since they introduce
22959         regressions (bug #54518).
22960
22961 2004-02-18  Martin Baulig  <martin@ximian.com>
22962
22963         * class.c (mono_class_init): If we're a generic instance and don't
22964         come from a TypeBuilder, inflate our members here.
22965         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
22966         (mono_class_create_generic): New public method.
22967         (mono_class_initialize_generic): Removed.
22968         (get_instantiation_name): Renamed to
22969         _mono_class_get_instantiation_name() and made it public.
22970
22971 2004-02-18  Martin Baulig  <martin@ximian.com>
22972
22973         * class.c (mono_class_inflate_generic_type): Clear the new
22974         instance's `nginst->klass' when inflating a generic instance.
22975         (mono_class_is_subclass_of): Added (basic) support for generic
22976         instances.
22977
22978 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
22979
22980         * appdomain.h, domain.c: use a MonoCodeManager instead of a
22981         MonoMempool to hold compiled native code.
22982
22983 2004-02-17  Martin Baulig  <martin@ximian.com>
22984
22985         * class.h (MonoDynamicGenericInst): Added `count_properties' and
22986         `properties'.
22987
22988         * reflection.c (mono_reflection_generic_inst_initialize): Added
22989         `MonoArray *properties' argument.
22990
22991         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
22992
22993 2004-02-17  Martin Baulig  <martin@ximian.com>
22994
22995         * icall.c (ves_icall_Type_GetFields): Renamed to
22996         ves_icall_Type_GetFields_internal() and added a
22997         `MonoReflectionType *rtype' argument; pass it to
22998         mono_field_get_object() to set the field's "reflected" type.
22999         (ves_icall_Type_GetConstructors): Likewise.
23000         (ves_icall_Type_GetEvents): Likewise.
23001         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
23002         argument; pass it to mono_method_get_object() to set the method's
23003         "reflected" type.       
23004
23005 2004-02-17  Martin Baulig  <martin@ximian.com>
23006
23007         * class.h (MonoDynamicGenericInst): New type.
23008         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
23009
23010         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
23011         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
23012         (ves_icall_MonoGenericInst_GetFields): New interncall.
23013
23014         * class.c (mono_class_from_generic): Don't call
23015         mono_class_initialize_generic() if this is a dynamic instance;
23016         ie. it's being created from a TypeBuilder.
23017         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
23018         `class->byval_arg.type'.
23019
23020         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
23021         to `inflate_method' and made static.
23022         (mono_reflection_inflate_field): Removed.
23023         (mono_reflection_generic_inst_initialize): New public method.
23024
23025         * reflection.h (MonoReflectionGenericInst): Removed `methods',
23026         `ctors' and `fields'; added `initialized'.
23027
23028 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23029
23030         * debug-helpers.c (mono_method_full_name): Fix output for empty
23031         namespaces.
23032
23033 2004-02-12  Martin Baulig  <martin@ximian.com>
23034
23035         * class.h (MonoClassField): Added `MonoType *generic_type'.
23036
23037         * reflection.c (mono_image_get_fieldref_token): Added support for
23038         instantiated generic types.
23039         (field_encode_inflated_field): Removed.
23040         (mono_image_get_inflated_field_token): Removed.
23041         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
23042
23043         * reflection.h (MonoReflectionInflatedField): Removed.
23044
23045 2004-02-12  Martin Baulig  <martin@ximian.com>
23046
23047         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
23048         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
23049
23050         * reflection.c (mono_image_get_methodspec_token): Take a
23051         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
23052         (mono_image_create_token): Check whether we have a
23053         `method->signature->gen_method' and call
23054         mono_image_get_methodspec_token() if appropriate.
23055         (inflated_method_get_object): Removed.
23056         (mono_reflection_bind_generic_method_parameters): Return a
23057         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
23058         (mono_reflection_inflate_method_or_ctor): Likewise.
23059
23060         * reflection.h (MonoReflectionInflatedMethod): Removed.
23061
23062 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
23063
23064         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
23065         for custom valuetype marshalling.
23066
23067         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
23068
23069 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23070
23071         * icall.c: fixed WSAGetLastError_internal name.
23072
23073 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23074
23075         * threads.c (mono_thread_attach): Allow this to be called multiple
23076         times for a thread.
23077         
23078         * threads.c (build_wait_tids): Do not wait for ourselves.
23079
23080         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23081         appdomain list is empty.
23082
23083         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23084         memory returned by mono_string_builder_to_utf16, since it points into
23085         managed memory. Thanks to Bernie Solomon for noticing this.
23086
23087         * icall.c: Add AppDomainSetup icalls.
23088
23089         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23090
23091         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23092         types.
23093
23094         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23095         custom attributes to the method_aux struct. Also fix array indexes etc.
23096
23097         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23098         
23099 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23100
23101         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23102         (both static and runtime) and reduce startup time.
23103
23104 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23105
23106         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23107         AsAny marshalling conversion instead of crashing.
23108
23109         * marshal.c: Fix warnings.
23110
23111 2004-02-09  Martin Baulig  <martin@ximian.com>
23112
23113         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23114
23115         * reflection.h (MonoReflectionInflatedMethod): Removed the
23116         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23117
23118         * reflection.c (method_encode_methodspec): Removed the `method'
23119         argument; we get it from `gmethod->declaring'.
23120         (inflated_method_get_object): Removed the `declaring' argument.
23121
23122 2004-02-09  Martin Baulig  <martin@ximian.com>
23123
23124         * class.h (MonoGenericMethod): New type.
23125         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23126         `generic_method'.
23127
23128         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23129         a `MonoGenericMethod *gen_method' one.
23130
23131         * class.c (mono_class_inflate_generic_type): Take an additional
23132         `MonoGenericMethod * argument.  This is only non-NULL if we're
23133         inflating types for a generic method.   
23134         (mono_class_inflate_generic_signature): Renamed to
23135         inflate_generic_signature() and made static; take a
23136         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23137         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23138         instead of a `MonoGenericInst *' one.
23139         (mono_class_inflate_generic_method): Likewise.
23140
23141         * reflection.c (encode_generic_method_sig): Take a
23142         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23143         (method_encode_methodspec): Likewise.
23144         (inflated_method_get_object): Likewise. 
23145
23146         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23147         field with a `MonoGenericMethod *gmethod' one.  
23148
23149 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23150
23151         * class.h (mono_class_has_parent): add parens to expansion
23152         so you can ! this.
23153
23154 2004-02-08  Martin Baulig  <martin@ximian.com>
23155
23156         * image.h (MonoImage): Removed `generics_cache'.
23157
23158         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23159         instead of a `MonoType *' argument; removed the `inflate_methods'
23160         argument.  Don't inflate methods here.
23161
23162         * loader.c (find_method): If it's a generic instance, call
23163         mono_class_init() on the `sclass->generic_inst->generic_type'.
23164
23165         * metadata.c (mono_type_size): Make this work on uninitialized
23166         generic instances; call it on the `ginst->generic_type's class.
23167
23168         * reflection.c (mono_reflection_bind_generic_parameters): Call
23169         mono_class_from_generic() to create the `ginst->klass'.
23170
23171 2004-02-08  Martin Baulig  <martin@ximian.com>
23172
23173         * class.h (MonoClass): Changed type of `generic_inst' from
23174         `MonoType *' to `MonoGenericInst *'.
23175
23176 2004-02-08  Martin Baulig  <martin@ximian.com>
23177
23178         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23179         mono_type_get_object(), this is now creating a `MonoGenericInst'
23180         for MONO_TYPE_GENERICINST.
23181         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23182         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23183
23184         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23185         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23186         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23187         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23188         and reflected type.
23189
23190         * reflection.h (MonoReflectionInflatedMethod): Removed
23191         `declaring_type' and `reflected_type'.
23192
23193 2004-02-08  Martin Baulig  <martin@ximian.com>
23194
23195         * class.h (MonoGenericInst): Added `MonoType *parent' and
23196         `MonoType **ifaces'.
23197
23198         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23199         `parent' and `interfaces'.
23200
23201         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23202         `MonoType *' argument and return a `MonoType *'.
23203
23204         * icall.c
23205         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23206         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23207
23208 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23209
23210         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23211         valuetype marshalling.
23212
23213 2004-02-06  Martin Baulig  <martin@ximian.com>
23214
23215         * class.c
23216         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23217         (my_mono_class_from_generic_parameter): Likewise.
23218
23219 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23220
23221         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23222         contents of the symbol files lazily.
23223
23224         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23225
23226         * threads.h threads.c icall.c: New icalls for getting and setting the
23227         threads name.
23228
23229 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23230
23231         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23232         Raise an exception when the domain is not found.
23233
23234 2004-02-03  Martin Baulig  <martin@ximian.com>
23235
23236         * reflection.c (mono_image_get_methodspec_token): Use the
23237         uninflated signature; fixes gen-33.
23238
23239 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23240
23241         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23242         the finalizer code can use thread functionality.
23243
23244         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23245         the finalizer thread.
23246
23247         * threads.c: Make some functions more robust.
23248
23249         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23250
23251         * metadata.h: Add new marshalling conventions.
23252
23253         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23254         stringbuilder marshalling. Fixes #53700.
23255
23256         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23257
23258         * reflection.c (mono_image_get_type_info): Save declarative security
23259         info.
23260
23261         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23262         unmanaged fields as well.
23263
23264         * appdomain.c: Bump corlib version.
23265
23266 2004-02-01  Martin Baulig  <martin@ximian.com>
23267
23268         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23269         method type arguments.  
23270
23271 2004-01-30  Duncan Mak  <duncan@ximian.com>
23272
23273         * marshal.h: Add prototype for
23274         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23275         and
23276         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23277         fix the build.
23278
23279 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23280
23281         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23282         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23283
23284 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23285
23286         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23287         custom marshalling of valuetypes.
23288
23289         * marshal.c: Fix some warnings.
23290
23291 2004-01-29  Martin Baulig  <martin@ximian.com>
23292
23293         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23294         for generic method parameters.
23295
23296         * reflection.c (method_encode_methodspec): Write the uninflated
23297         signature into the methodspec table.
23298         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23299         is always the uninflated method.
23300         (reflection_methodbuilder_to_mono_method): Copy the generic
23301         parameters from the MethodBuilder into `header->gen_params'.
23302
23303 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23304
23305         * class.c (mono_class_from_generic_parameter): Fix warning.
23306
23307 2004-01-27  Martin Baulig  <martin@ximian.com>
23308
23309         * class.c (mono_class_from_generic_parameter): Don't create
23310         `klass->methods' here.  
23311
23312 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23313
23314         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23315         extension since it does not work with libraries named lib<FOO>.dll.so.
23316
23317 2004-01-25  Martin Baulig  <martin@ximian.com>
23318
23319         * class.c (mono_class_inflate_generic_type): Added support for
23320         MONO_TYPE_GENERICINST.
23321
23322         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23323         inflate methods on open constructed types.      
23324
23325 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23326
23327         * object.c: fire ProcessExit event in the root AppDomain after running
23328         Main. Fixes bug #53299.
23329
23330 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23331
23332         * socket-io.c: include the new socket-wrappers.h header.
23333         Use the wrappers instead of the unix socket functions to make the code
23334         more clear.
23335
23336 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23337
23338         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23339
23340         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23341         Fixes #22532.
23342
23343 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23344
23345         * reflection.c (mono_image_create_pefile): Handle the case when the
23346         entry point is not a MethodBuilder.
23347
23348         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23349         field to ReflectionMethod since it is not allways a builder.
23350
23351         * reflection.c (type_get_fully_qualified_name): New helper function to
23352         return the fully qualified name of a type.
23353
23354         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23355         type name for custom marshallers.
23356
23357         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23358
23359         * class.c (mono_class_setup_vtable): If a parent class already 
23360         implements an interface, use the implementing methods from that class.
23361         Fixes #53148.
23362
23363 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23364
23365         * threadpool.c: just return instead of ExitThread to allow for thread
23366         clean up earlier.
23367
23368 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23369
23370         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23371         when closing resource modules.
23372
23373         * reflection.c (mono_image_create_pefile): Handle the case when the
23374         entry point is not a MethodBuilder.
23375
23376         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23377         field to ReflectionMethod since it is not allways a builder.
23378
23379 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23380
23381         * marshal.c (mono_marshal_get_managed_wrapper): 
23382         mono_marshal_alloc takes native int so CONV_I
23383         the arg for 64bits.
23384
23385 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23386
23387         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23388         tokens in the cattr table. Fixes #53108.
23389
23390 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23391
23392         * loader.c: don't trim ".dll" before looking up in the config file.
23393         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
23394
23395 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23396
23397         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
23398         Return the module which contains the resource as well.
23399         (ves_icall_System_Reflection_Module_Close): New icall.
23400
23401         * appdomain.c: Bump corlib version number.
23402
23403         * image.c (mono_image_addref): New public function.
23404
23405         * assembly.c: Call mono_image_addref.
23406
23407         * reflection.c (mono_module_get_object): Increase reference count of 
23408         the image.
23409
23410         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23411         Fixes #22532.
23412
23413         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
23414         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
23415         proper exceptions on DllImport problems.
23416
23417 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
23418
23419         * class.c, metadata.c: eliminate CSIZE macro.
23420
23421 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
23422
23423         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
23424         * object.h: Added async_callback field in MonoAsyncResult.
23425         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
23426         * verify.c: Added async_callback in MonoAsyncResult layout.
23427
23428 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
23429
23430         * reflection.c (mono_reflection_get_custom_attrs): Add support
23431         for Modules.
23432
23433 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23434
23435         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
23436         marshalling.
23437         (mono_marshal_method_from_wrapper): Add null pointer check.
23438
23439 2004-01-16  Martin Baulig  <martin@ximian.com>
23440
23441         * debug-mono-symfile.h: Set version number to 36 and reflect
23442         latest symbol writer changes.
23443
23444 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23445
23446         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
23447         multi-dimensional arrays.
23448         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
23449         (mono_class_from_mono_type): Use bounded_array_class_get.
23450         
23451         * class.c (mono_bounded_array_class_get): New function which takes
23452         a 'bounded' bool argument to distinguish vectors from one dimensional
23453         arrays.
23454
23455         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
23456         bounded_array_class_get if the array has bounds.
23457
23458         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23459         Search modules loaded using AssemblyBuilder:AddModule as well.
23460
23461 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23462
23463         * appdomain.c: increased corlib version.
23464         * filewatcher.c: removed g_print.
23465         * icall.c:
23466         (get_property_info): only allocate what is actually requested.
23467         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
23468
23469 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23470
23471         * Makefile.am: added filewatcher.[ch]
23472         * filewatcher.[ch]: FileSystemWatcher runtime support.
23473         * icall.c: added new FSW icalls.
23474
23475 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
23476
23477         * string-icalls.c: fix stringbuilder regression as suggested by
23478         Iain McCoy <iain@mccoy.id.au>.
23479
23480 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23481
23482         * process.c (process_read_stringtable_block): Recognize '007f' as
23483         a language neutral stringtable block.
23484
23485 2004-01-12  Patrik Torstensson
23486
23487         * object.h (MonoStringBuilder) : Changed layout to support our
23488         new stringbuilder class.
23489         * marshal.c: Change marshalling to support the new layout of 
23490         string builder.
23491         * appdomain.c: increased version number because new layout of
23492         string builder.
23493
23494 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
23495
23496         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
23497         assembly name as an string instead of an AssemblyName, since it is
23498         easier to extract info from it.
23499
23500         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
23501         the culture subdirectories too. Fixes #52231.
23502
23503 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23504
23505         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
23506         It takes 2 new parameters with an optional name for the method to look
23507         for and case ignoring info.
23508
23509         * threadpool.c: removed unused variable.
23510
23511 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23512
23513         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
23514         It takes 2 new parameters with an optional name for the property to look
23515         for and case ignoring info.
23516         Fixes bug #52753.
23517
23518 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23519
23520         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
23521         Fix #52451.
23522
23523 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23524
23525         * appdomain.c:
23526         * assembly.c: escape the uri before passing it to g_filename_from_uri.
23527         Fixes bug #52630.
23528
23529 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
23530
23531         * reflection.c: Add support for more than one unmanaged resource.
23532
23533         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
23534         in field->def_value, as done in all other cases.
23535
23536         * reflection.c (mono_reflection_get_custom_attrs): Add support for
23537         TypeBuilders.
23538
23539         * reflection.c (mono_reflection_create_runtime_class): Remove 
23540         errorneous assignment to klass->element_class, since it is already
23541         done in mono_reflection_setup_internal_class.
23542
23543 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23544
23545         * gc.c: added missing LeaveCriticalSection.
23546         * icall.c: indented a couple of lines.
23547         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
23548         if we call EndInvoke inside a callback. Fixes bug #52601.
23549
23550 2004-01-07  Martin Baulig  <martin@ximian.com>
23551
23552         * mono-debug-debugger.h
23553         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
23554
23555 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
23556
23557         * appdomain.c: Use messages in NotImplementedException.
23558
23559         * exception.c (mono_get_exception_not_implemented): Now this takes
23560         a message argument.
23561
23562         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
23563         exception instead of g_asserting an aborting when something is not
23564         implemented.
23565
23566         Add some inline docs.
23567
23568 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
23569
23570         * reflection.h: Update after changes to object layout.
23571
23572         * reflection.c: Implement saving of unmanaged aka win32 resources.
23573
23574         * appdomain.c: Bump version number.
23575
23576         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
23577         Handle missing domains gracefully.
23578
23579 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
23580
23581         * file-io.c : On Windows, there are much more invalid_path_chars.
23582
23583 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23584
23585         * class.h, object.c: prepare for GetType () speedup.
23586
23587 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
23588
23589         * profiler.c: workaround for --profile null reference exception on
23590           cygwin. Patch by Patrik Torstensson.
23591
23592 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
23593
23594         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
23595         make work for unaligned access.
23596
23597 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
23598
23599         * class.c: small cleanup (class->fields [i] -> field).
23600         * image.c: check address of metadata is valid.
23601
23602 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
23603
23604         * assembly.h assembly.c (mono_assembly_loaded): New public function to
23605         search the list of loaded assemblies.
23606
23607         * reflection.c (mono_reflection_type_from_name): Use 
23608         mono_assembly_loaded instead of mono_image_loaded.
23609
23610         * reflection.c: Fix warnings.
23611
23612 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
23613
23614         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
23615         is dynamic. This is needed since an assembly can contain both dynamic and
23616         non-dynamic images.
23617
23618         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
23619         assembly->dynamic.
23620
23621         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
23622
23623         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
23624         to store modules loaded using AddModule.
23625
23626         * reflection.c (mono_image_fill_file_table): Generalize this so it works
23627         on Modules.
23628
23629         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
23630
23631         * reflection.c (mono_image_fill_export_table_from_module): New function to
23632         fill out the EXPORTEDTYPES table from a module.
23633
23634         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
23635         into a separate function. Also handle loaded non-dynamic modules.
23636
23637         * reflection.c (mono_image_basic_init): Fix memory allocation.
23638
23639         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23640
23641         * assembly.c (mono_assembly_load_references): Make this public.
23642
23643 2003-12-19  Martin Baulig  <martin@ximian.com>
23644
23645         * class.c (mono_class_initialize_generic): Made this static, take
23646         a `MonoGenericInst *' instead of a `MonoClass *'.
23647         (mono_class_from_generic): Call mono_class_initialize_generic()
23648         unless we're already initialized or being called from
23649         do_mono_metadata_parse_generic_inst().
23650
23651         * class.h (MonoGenericInst): Added `initialized' and
23652         `init_pending' flags.
23653
23654         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
23655         `mono_class_init (gklass)' or mono_class_initialize_generic()
23656         here; set `generic_inst->init_pending' while parsing the
23657         `type_argv'.
23658
23659 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
23660
23661         * locales.c: include string.h for memxxx prototypes
23662
23663 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23664
23665         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
23666         constructor when accessing literal fields.
23667
23668 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
23669
23670         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23671
23672         * reflection.c (assembly_add_resource_manifest): New function to fill
23673         the MANIFESTRESOURCE table.
23674
23675         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
23676
23677         * reflection.h: Update to changes in class layout.
23678
23679         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
23680         Reenable call to mono_runtime_is_shutting_down ().
23681
23682         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
23683         determine if the runtime is shutting down.
23684
23685 2003-12-16  Jackson Harper <jackson@ximian.com>
23686
23687         * icall.c: comment out call to mono_runtime_is_shutting_down to
23688         fix build.
23689         
23690 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
23691
23692         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
23693         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
23694
23695 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
23696
23697         * reflection.c: move definition of swap_with_size
23698         to before its first call
23699
23700 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
23701
23702         * appdomain.c (mono_runtime_is_shutting_down): New public function.
23703
23704         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
23705         icall.
23706
23707         * object.c: Fix warnings.
23708
23709         * icall.c (ves_icall_Type_Get...): Only consider inherited static
23710         members if FlattenHierarchy is set.
23711
23712         * reflection.c (mono_image_add_decl_security): New function to emit
23713         declarative security.
23714
23715         * reflection.h reflection.c: Add support for declarative security.
23716
23717         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23718         
23719 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23720
23721         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23722         
23723         * appdomain.c verify.c: Moved corlib version checking into its own
23724         function in appdomain.c since it needs to create vtables etc.
23725
23726 2003-12-13  Patrik Torstensson <p@rxc.se>
23727
23728         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
23729         instead of unwrapped server.
23730
23731 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
23732
23733         * verify.c (check_corlib): Fix field index.
23734
23735 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
23736
23737         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
23738         GetGacPath icall.
23739
23740 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
23741
23742         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
23743         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
23744         cope with sizeof(size_t) != sizeof(guint32).
23745
23746 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23747
23748         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
23749         in case of failure.
23750
23751 2003-12-10  Mark Crichton <crichton@gimp.org>
23752
23753         * icall.c: removed the GetNonZeroBytes.  We now handle this case
23754         in managed code.
23755
23756         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
23757
23758 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
23759
23760         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
23761         marked as deleted.
23762
23763 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23764
23765         * verify.c (check_corlib): Handle the case when the version field is 
23766         initialized by a static constructor.
23767
23768 2003-12-08  Patrik Torstensson  <p@rxc.se>
23769
23770     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
23771
23772 2003-12-08  Martin Baulig  <martin@ximian.com>
23773
23774         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
23775         a MonoReflectionGenericParameter, also take the parameter index
23776         and name as arguments.
23777         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
23778         (ves_icall_MonoGenericParam_initialize): New interncall.
23779         (ves_icall_Type_make_byref_type): New interncall.
23780
23781         * reflection.h (MonoReflectionGenericParam): Derive from
23782         MonoReflectionType, not just from MonoObject.  Added `refobj' and
23783         `index' fields.
23784
23785         * reflection.c (mono_reflection_define_generic_parameter): Create
23786         and return a new MonoReflectionGenericParam; don't initialize the
23787         constraints here.
23788         (mono_reflection_initialize_generic_parameter): New public method;
23789         initializes the constraints and creates the `param->pklass'.
23790
23791 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23792
23793         * reflection.h reflection.c: Use the new fields 'num_types', 
23794         'num_fields' and 'num_methods' to track the number of types etc.
23795
23796         * verify.c (check_corlib): Check corlib version number.
23797
23798 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
23799
23800         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
23801         function works on all methods.
23802
23803 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23804
23805         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
23806         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
23807         the custom_type_info flag of the transparent proxy.
23808         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
23809         objects that supports IRemotingTypeInfo.
23810         * object.h: Added custom_type_info field in transparent proxy.
23811
23812 2003-12-06  Martin Baulig  <martin@ximian.com>
23813
23814         * class.c (mono_class_create_from_generic): Removed.
23815         (mono_class_from_generic): Check `ginst->klass' before doing
23816         anything else.  This is important to fully support "recursive"
23817         generic types.
23818
23819         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
23820         empty `generic_inst->klass' before doing anything else.
23821
23822 2003-12-06  Dick Porter  <dick@ximian.com>
23823
23824         * verify.c: 
23825         * object.h:
23826         * icall.c:
23827         * locales.c: Use C structs to access class fields.  Don't do a
23828         conversion between MonoString and UChar because both are
23829         platform-endian UTF-16.  Compare now takes startindex and count
23830         parameters.  Add a char overload for IndexOf.  Speed up the
23831         invariant string IndexOf.
23832
23833 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * Makefile.am (monosn_LDADD): Fix parallel build.
23836
23837 2003-12-04  Martin Baulig  <martin@ximian.com>
23838
23839         * icall.c
23840         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
23841         (ves_icall_Type_make_array_type): New interncall.       
23842
23843 2003-12-04  Martin Baulig  <martin@ximian.com>
23844
23845         * locales.c: also change it in the !HAVE_ICU case.
23846
23847 2003-12-04  Dick Porter  <dick@ximian.com>
23848
23849         * icall.c:
23850         * locales.c: construct_compareinfo is now in CompareInfo, not
23851         CultureInfo.
23852
23853 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23854
23855         * image.c (mono_image_load_file_for_image): Cache loaded images in the
23856         image->files array.
23857
23858         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
23859         table as well.
23860
23861         * assembly.c (mono_assembly_load_references): Only load references
23862         once.
23863
23864         * class.c (mono_class_from_name): Avoid linear search of the 
23865         EXPORTEDTYPE table.
23866
23867         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
23868
23869 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23870
23871         * image.h (MonoImage): Add 'field_cache' field.
23872
23873         * loader.c (mono_field_from_token): Cache field lookups.
23874         
23875         * reflection.c (mono_module_get_object): Fix name property.
23876
23877         * icall.c (ves_icall_get_enum_info): Update after changes to 
23878         mono_metadata_get_constant_index ().
23879
23880         * icall.c: Get rid of get_type_info icall, use a separate icall for
23881         each type property to avoid needless memory allocations. Fixes #51514.
23882
23883         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
23884         to avoid needless binary searches.
23885
23886         * class.c (class_compute_field_layout): Move the initialization of
23887         field->def_value to mono_class_vtable ().
23888
23889         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
23890         non-corlib types.
23891
23892         * object.c (mono_object_allocate): Make it inline.
23893
23894         * object.c (mono_object_allocate_spec): Make it inline.
23895         
23896 2003-12-02  Dick Porter  <dick@ximian.com>
23897
23898         * locales.c (create_NumberFormat): NumberFormatInfo construction.
23899         Patch by Mohammad DAMT (mdamt@cdl2000.com).
23900
23901 2003-12-01  Dick Porter  <dick@ximian.com>
23902
23903         * threads.c: Fix signature and call in CreateMutex and
23904         CreateEvent.
23905
23906 2003-12-01  Dick Porter  <dick@ximian.com>
23907
23908         * icall.c: 
23909         * locales.c: Implement string compares and searching
23910
23911         * object.h: Add extra Thread field
23912
23913 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
23914
23915         * reflection.c (fixup_method): Add support for MonoCMethod.
23916
23917 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
23918
23919         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
23920
23921         * reflection.c (assembly_name_to_aname): Allow extra characters in
23922         assembly names. Fixes #51468.
23923
23924 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23925
23926         * exception.c (mono_exception_from_name_domain): New helper function.
23927
23928         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
23929         exception object in the correct domain.
23930
23931         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
23932         formatting + make a copy a the input data.
23933
23934         * loader.c (mono_get_method_from_token): Methods which contain
23935         native code do not have entries in the ImplMap.
23936
23937         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
23938         Thanks to Gonzalo for spotting this.
23939         
23940         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
23941         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
23942
23943         * assembly.h (mono_assembly_load_from): Split the second part of 
23944         assembly loading into a new public function.
23945
23946         * exception.h (mono_get_exception_bad_image_format): New function.
23947
23948 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
23949
23950         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23951         Enumerate all modules inside a dynamic assembly. Fixes #51293.
23952         
23953         * icall.c: Add new icall for creating dynamic methods.
23954
23955         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
23956
23957         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
23958
23959         * reflection.c (mono_reflection_create_dynamic_method): New icall to
23960         create a dynamic method.
23961
23962         * reflection.c (resolve_object): New helper function.
23963
23964         * reflection.c: Generalize ReflectionMethodBuilder and the functions
23965         which manipulate it so they can also work on dynamic methods.
23966
23967         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
23968         creating the MonoReflectionMethodAux structure if it is not needed.
23969         
23970         * reflection.h verify.c: Update after changes to object layout.
23971
23972         * reflection.c (method_builder_encode_signature): Fix compilation on
23973         gcc 2.95.x.
23974
23975 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
23976
23977         * appdomain.h: Added support for context static fields. Added static_data
23978           field to MonoAppContext and renamed thread_static_fields to a more
23979           generic special_static_fields in MonoAppDomain, since it can now contain
23980           context static fields.
23981         * domain.c: Updated hashtable name.
23982         * object.c: Replaced field_is_thread_static() for a more generic
23983           field_is_special_static() which also checks for context static attribute.
23984           In mono_class_vtable(), added support for static context fields.
23985         * threads.c: Changed methods that manage thread static fields to more
23986           generic methods so they can be reused both for thread and context static
23987           data.
23988         * threads.h: Declared some new methods.
23989
23990 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
23991
23992         * reflection.h: Update after changes to the managed types.
23993
23994         * reflection.c (encode_custom_modifiers): New helper function.
23995
23996         * reflection.c (method_encode_signature): Emit custom modifiers.
23997
23998         * reflection.c (field_encode_signature): Emit custom modifiers.
23999
24000 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24001
24002         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
24003
24004         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
24005         implementation.
24006
24007         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
24008         icall.
24009
24010         * object.c (mono_field_get_value_object): New function.
24011
24012         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
24013         specific.
24014
24015 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24016
24017         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
24018         return a preallocated out-of-memory exception instance.
24019
24020         * object.c (out_of_memory): Use the new function.
24021
24022         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
24023         flag is before the custom modifiers. Fixes #49802.
24024
24025 2003-11-16  Martin Baulig  <martin@ximian.com>
24026
24027         * class.c (mono_class_is_open_constructed_type): Implemented the
24028         MONO_TYPE_GENERICINST case.
24029
24030 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24031
24032         * assembly.c (mono_assembly_fill_assembly_name): New function to
24033         fill out the MonoAssemblyName structure.
24034         (mono_assembly_open): Use the new function.
24035
24036         * icall.c (fill_reflection_assembly_name): New helper function.
24037
24038         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
24039         new function.
24040
24041         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
24042
24043 2003-11-15  Martin Baulig  <martin@ximian.com>
24044
24045         * class.c (mono_class_is_open_constructed_type): New public
24046         function; checks whether a type is an open constructed type,
24047         ie. whether it still contains type parameters.
24048         (mono_class_inflate_generic_type): If we're a type parameter and
24049         the inflated type is also a MONO_TYPE_(M)VAR, return the original
24050         type.
24051
24052         * class.h (MonoGenericInst): Added `guint32 is_open'.
24053
24054         * loader.c (method_from_methodspec): Check whether we're an open
24055         or closed constructed type and set `ginst->is_open'.
24056
24057         * reflection.c (mono_reflection_bind_generic_parameters): Check
24058         whether we're an open or closed constructed type and set
24059         `ginst->is_open'.
24060         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
24061         from open constructed types.
24062
24063 2003-11-15  Martin Baulig  <martin@ximian.com>
24064
24065         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24066         a generic instance (instead of a generic type declaration) with
24067         unbound generic parameters, bind them to our actual types.
24068
24069 2003-11-14  Martin Baulig  <martin@ximian.com>
24070
24071         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
24072
24073         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24074         an interface type, populate `res->interfaces' with instantiated
24075         versions of all the interfaces we inherit.
24076
24077 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24078
24079         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24080         when MONO_PATH is set but doesn't contain the install dir.
24081
24082 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24083
24084         * icall.c:
24085         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24086         it's also implemented in base classes. Fixes bug #50927.
24087
24088 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24089
24090         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24091         if this method is called from a finalizer. Fixes #50913.
24092
24093 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24094
24095         * threads.c: Implement VolatileRead/VolatileWrite
24096
24097         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24098
24099 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24100
24101         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24102         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24103         2.95.3.
24104
24105         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24106         from Peter Ross (pro@missioncriticalit.com).
24107         
24108 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24109
24110         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24111
24112 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24113
24114         * assembly.c (mono_assembly_load_references): Disable check because it
24115         triggers on older corlibs which lots of people have.
24116
24117 2003-11-12  Jackson Harper  <jackson@ximian.com>
24118
24119         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24120         load corlib.dll if mscorlib.dll is not found.
24121         * assembly.h: Remove corlib name define.
24122         * class.c:
24123         * domain.c:
24124         * image.c: Change corlib name to mscorlib.
24125         
24126 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24127
24128         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24129
24130 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24131
24132         * appdomain.h: Added loader_optimization here to sync with the C#
24133         code, and add disallow_binding_redirects field.
24134
24135 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24136
24137         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24138
24139         * reflection.c (mono_image_build_metadata): Fix crash on modules
24140         with no types.
24141
24142         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24143
24144         * icall.c (ves_icall_get_method_info): Return callingConvention as
24145         well.
24146
24147         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24148         namespaces from the EXPORTEDTYPE table as well.
24149
24150         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24151         from all modules inside the assembly.
24152         
24153 2003-11-11  Martin Baulig  <martin@ximian.com>
24154
24155         * reflection.c (mono_reflection_bind_generic_parameters): Make
24156         this work for interfaces.
24157
24158 2003-11-11  Martin Baulig  <martin@ximian.com>
24159
24160         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24161
24162 2003-11-11  Martin Baulig  <martin@ximian.com>
24163
24164         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24165         "MonoInflatedMethod" and "MonoInflatedCtor".
24166
24167 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24168
24169         * reflection.c (resolution_scope_from_image): Use the assembly table
24170         from the manifest module, since other modules don't have it.
24171
24172         * debug-helpers.c (mono_type_full_name): New helper function.
24173
24174         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24175
24176         * image.c (mono_image_load_file_for_image): New public function which
24177         is a replacement for the load_file_for_image in class.c.
24178
24179         * assembly.c (mono_assembly_load_module): A wrapper for the function
24180         above which does assembly association and reference loading too.
24181
24182         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24183
24184 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24185
24186         * appdomain.c: not all of the attributes for the full assembly name
24187         are required and the order doesn't matter. Fixes bug #50787.
24188
24189 2003-11-10  Dick Porter  <dick@ximian.com>
24190
24191         * locales.c: Use platform-endian UTF16
24192
24193 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24194
24195         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24196         
24197 2003-11-10  Martin Baulig  <martin@ximian.com>
24198
24199         * metadata.c
24200         (mono_metadata_load_generic_params): Make this actually work.
24201
24202         * reflection.c (mono_reflection_bind_generic_parameters): If our
24203         parent is a generic instance, pass all the `types' to it, no
24204         matter whether it has the same number of type parameters or not.
24205
24206 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24207
24208         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24209
24210         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24211         assignment code to this function so it gets called recursively for all
24212         modules.
24213
24214         * image.c (load_modules): Remove the assembly assignment since it is
24215         now done by mono_assembly_load_references.
24216         
24217         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24218         Add 'module' argument.
24219         (mono_module_get_types): New helper function.
24220         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24221
24222 2003-11-08  Martin Baulig  <martin@ximian.com>
24223
24224         * class.c (mono_class_inflate_generic_method): Interface method
24225         don't have a header.
24226
24227         * reflection.c (mono_image_get_methodspec_token): Take an
24228         additional `MonoGenericInst *' argument instead of reading it from
24229         the header; this is necessary to support interfaces.
24230         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24231         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24232         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24233         argument.
24234
24235         * reflection.h (MonoReflectionInflatedMethod): Added
24236         `MonoGenericInst *ginst'.
24237
24238 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24239
24240         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24241
24242 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24243
24244         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24245
24246 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24247
24248         * reflection.c 
24249         (reflection_methodbuilder_from_method_builder):
24250         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24251         initialize a ReflectionMethodBuilder structure.
24252         (mono_image_get_methodbuilder_token):
24253         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24254         tokens which point to types in another module inside the same assembly.
24255
24256         * reflection.c: Use the new helper functions.
24257         
24258         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24259
24260         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24261         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24262
24263         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24264         neccesary.
24265
24266         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24267         current module. Emit the manifest only for the main module.
24268
24269         * reflection.c (mono_image_create_token): Add assertion when a 
24270         memberref needs to be created.
24271
24272         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24273
24274         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24275         larger buffer for the custom attribute blob. Fixes #50637.
24276         
24277 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24278
24279         * threadpool.c: notify listener on async processing handles after
24280         invoking the async callback. Thanks to Zoltan.
24281
24282 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24283
24284         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24285         avoid code duplication.
24286
24287         * reflection.h (MonoDynamicImage): New type which is currently unused,
24288         but will be used through the ref.emit code in place of 
24289         MonoDynamicAssembly.
24290
24291         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24292         object layout.
24293
24294         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24295         a MonoDynamicImage instead of just a MonoImage.
24296         
24297         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24298         icalls to ModuleBuilder but keep their semantics, so they will work
24299         with moduleb->assemblyb. This will change later.
24300         
24301 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24302
24303         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24304         object layout.
24305
24306         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24307         main module, since it is now done by the managed code.
24308
24309 2003-11-03  Martin Baulig  <martin@ximian.com>
24310
24311         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24312         `ginst->klass' here.
24313         (method_encode_methodspec): Don't use the `ginst->generic_method's
24314         klass if it's a generic instance, use `ginst->klass' in this case.
24315
24316 2003-11-03  Martin Baulig  <martin@ximian.com>
24317
24318         * reflection.c (mono_image_get_generic_method_param_info):
24319         Removed, use mono_image_get_generic_param_info() instead.
24320         (mono_image_get_type_info): Write the GenericParam table before
24321         the Method table.  This is neccessary because in the GenericParam
24322         table, type parameters of the class (ie. '!0' etc.) must come
24323         before the ones from its generic methods (ie. '!!0' etc).
24324
24325 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24326
24327         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24328
24329 2003-11-02  Martin Baulig  <martin@ximian.com>
24330
24331         * reflection.c (create_generic_typespec): Take a
24332         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24333         the generic parameters from it.
24334
24335 2003-11-02  Martin Baulig  <martin@ximian.com>
24336
24337         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24338         instead of a `MonoClassField *' since we just need the type.
24339         (create_generic_typespec): New static function.  Creates a
24340         TypeSpec token for a generic type declaration.
24341         (mono_image_get_generic_field_token): New static function.
24342         (mono_image_create_token): If we're a FieldBuilder in a generic
24343         type declaration, call mono_image_get_generic_field_token() to get
24344         the token.
24345
24346 2003-11-02  Martin Baulig  <martin@ximian.com>
24347
24348         * reflection.h
24349         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24350         `MonoReflectionGenericInst *declaring_type' and
24351         `MonoReflectionGenericInst *reflected_type' fields.
24352
24353         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24354         `MonoReflectionGenericInst *declaring_type' and a
24355         `MonoReflectionGenericInst *reflected_type' argument instead of a
24356         single `MonoReflectionGenericInst *type' one.  Set
24357         `res->declaring_type' and `res->reflected_type' from them.
24358         (mono_reflection_inflate_field): Likewise.      
24359
24360 2003-11-02  Martin Baulig  <martin@ximian.com>
24361
24362         * class.c (mono_class_setup_vtable): Don't store generic methods
24363         in the vtable.  
24364
24365 2003-11-02  Martin Baulig  <martin@ximian.com>
24366
24367         * reflection.h (MonoReflectionGenericInst): Added
24368         `MonoReflectionType *declaring_type'.
24369
24370         * reflection.c (mono_reflection_bind_generic_parameters): Use
24371         `if (tb->parent)' instead of `klass->parent'.
24372
24373 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24374
24375         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24376         with an empty ASSEMBLY table.
24377
24378         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24379         variable in the inner and outer loops.
24380
24381 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24382
24383         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24384         argument.
24385
24386         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24387         
24388         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24389         icalls. Instead, do everything in managed code. This is needed since
24390         it is hard to restore the original domain etc. in unmanaged code in the
24391         presence of undeniable exceptions.
24392
24393         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
24394         New icalls to push and pop appdomain refs.
24395
24396 2003-10-31  Martin Baulig  <martin@ximian.com>
24397
24398         * class.c (inflate_generic_type): Renamed to
24399         mono_class_inflate_generic_type() and made it public.
24400
24401         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
24402         New interncall.
24403
24404         * loader.c (mono_field_from_memberref): Also set the retklass for
24405         typespecs.
24406
24407         * fielder.c (mono_image_get_inflated_field_token): New static
24408         method; creates a metadata token for an inflated field.
24409         (mono_image_create_token, fixup_method): Added support for
24410         "MonoInflatedField".
24411         (fieldbuilder_to_mono_class_field): New static function.
24412         (mono_reflection_inflate_field): New public function.
24413
24414         * reflection.h
24415         (MonoReflectionGenericInst): Added `MonoArray *fields'.
24416         (MonoReflectionInflatedField): New typedef.     
24417
24418 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
24419
24420         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
24421         for Solaris and other platforms without s6_addr16
24422
24423 2003-10-30  Martin Baulig  <martin@ximian.com>
24424
24425         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
24426         argument instead of two.
24427         (mono_class_inflate_generic_signature): Likewise.
24428         (inflate_generic_header): Likewise.
24429         (mono_class_inflate_generic_method): Likewise.  In addition, if
24430         `ginst->klass' is set, it becomes the new `method->klass'.
24431
24432         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
24433         field.
24434
24435         * reflection.c (encode_generic_method_sig): Write a 0xa as the
24436         first byte. [FIXME]
24437         (method_encode_methodspec): If we have generic parameters, create
24438         a MethodSpec instead of a MethodRef.
24439         (fixup_method): Added support for "MonoInflatedMethod" and
24440         "MonoInflatedCtor".
24441         (mono_image_create_token): Added support for "MonoInflatedMethod"
24442         and "MonoInflatedCtor".
24443         (inflated_method_get_object): New static function; returns a
24444         managed "System.Reflection.MonoInflatedMethod" object.
24445         (mono_reflection_bind_generic_method_parameters): Return a
24446         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
24447         (mono_reflection_inflate_method_or_ctor): Likewise.
24448         (mono_image_get_generic_method_param_info): Initialize unused
24449         fields to zero.
24450         (mono_image_get_generic_param_info): Likewise.
24451
24452         * reflection.h (MonoReflectionInflatedMethod): New public
24453         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
24454         "S.R.MonoInflatedCtor" classes.
24455
24456         * loader.c (method_from_memberref): If we're a TypeSpec and it
24457         resolves to a generic instance, inflate the method.
24458
24459 2003-10-28  Dick Porter  <dick@ximian.com>
24460
24461         * object.c (mono_runtime_run_main): Convert command-line arguments
24462         into utf8, falling back to the user's locale encoding to do so.
24463
24464 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24465
24466         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
24467         at this time.
24468
24469         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
24470
24471         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
24472         up icalls at method definition time. Partially fixes #33569.
24473
24474 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
24475
24476         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
24477         marshalling of arrays. Fixes #50116.
24478
24479         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
24480
24481         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
24482         points to a vtable in the dying appdomain.
24483
24484         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
24485         listeners into unmanaged code inside the lock.
24486
24487         * object.c (mono_class_vtable): Turn off typed allocation in non-root
24488         domains and add some comments.
24489
24490 2003-10-25  Martin Baulig  <martin@ximian.com>
24491
24492         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
24493
24494         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
24495
24496         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
24497         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
24498         currently parsing.  Create the generic class and store it in
24499         `generic_inst->klass' before parsing the type arguments.  This is
24500         required to support "recursive" definitions; see mcs/tests/gen-23.cs
24501         for an example.
24502         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
24503         to support recursive typespec entries.
24504
24505         * class.c (mono_class_setup_parent): If our parent is a generic
24506         instance, we may get called before it has its name set.
24507         (mono_class_from_generic): Splitted into
24508         mono_class_create_from_generic() and mono_class_initialize_generic().
24509
24510 2003-10-25  Martin Baulig  <martin@ximian.com>
24511
24512         * icall.c (ves_icall_Type_BindGenericParameters): Return a
24513         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
24514         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
24515         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
24516
24517         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
24518         (create_typespec): Likewise.
24519         (mono_reflection_bind_generic_parameters): Return a
24520         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
24521         (mono_reflection_inflate_method_or_ctor): New public function.
24522
24523         * reflection.h (MonoReflectionGenericInst): New typedef.        
24524
24525 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24526
24527         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
24528         inside the domain lock. Fixes #49993.
24529         
24530         * object.c (mono_class_vtable): When typed allocation is used, 
24531         allocate vtables in the GC heap instead of in the mempool, since the
24532         vtables contain GC descriptors which are used by the collector even
24533         after the domain owning the mempool is unloaded.
24534
24535         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
24536
24537         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
24538         reflect what it does. Also invalidate mempools instead of freeing
24539         them if a define is set.
24540
24541         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
24542         of the appdomain.
24543         
24544         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
24545         hold the finalizable objects in this domain.
24546
24547         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
24548         appdomain.
24549
24550         * appdomain.c (mono_domain_set): New function to set the current
24551         appdomain, but only if it is not being unloaded.
24552
24553         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
24554         appdomain which is being unloaded.
24555         
24556         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
24557         unloading of the root appdomain.
24558
24559         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
24560         icall to execute a method in another appdomain. Intended as a 
24561         replacement for InternalSetDomain, which can confuse the code 
24562         generation in the JIT.
24563
24564         * appdomain.c (mono_domain_is_unloading): New function to determine
24565         whenever an appdomain is unloading.
24566
24567         * appdomain.c (mono_domain_unload): New function to correctly unload
24568         an appdomain.
24569
24570         * assembly.c (mono_assembly_load_references): Check that an assembly
24571         does not references itself.
24572
24573         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
24574         domain manually, it asks the finalizer thread to do it, then waits for
24575         the result. Also added a timeout.
24576
24577         * icall.c: Register the new icalls.
24578
24579         * threads.h threads.c: Export the mono_gc_stop_world and 
24580         mono_gc_start_world functions.
24581         
24582         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
24583         function to fill out the mempool with 0x2a.
24584
24585 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
24586
24587         * reflection.h (MonoReflectionMethodAux): New structure to store
24588         information which is rarely used, thus is not in the MonoMethod
24589         structure.
24590
24591         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
24592         store the aux info.
24593
24594         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
24595         and marshalling info into the aux structure.
24596
24597         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
24598         from the aux structure.
24599
24600         * loader.c (mono_method_get_param_names): Retrieve the param names from
24601         the aux structure.
24602         
24603 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
24604
24605         * exception.h exception.c: Add AppDomainUnloadedException && fix 
24606         warning.
24607
24608 2003-10-21  Dick Porter  <dick@ximian.com>
24609
24610         * socket-io.c
24611         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
24612         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
24613
24614 2003-10-21  Martin Baulig  <martin@ximian.com>
24615
24616         * reflection.c (mono_reflection_bind_generic_parameters):
24617         `klass->parent' is NULL for interfaces.
24618
24619 2003-10-21  Martin Baulig  <martin@ximian.com>
24620
24621         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24622
24623 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
24624
24625         * exception.c (mono_exception_from_name_msg): New helper function for
24626         creating exceptions and initializing their message field.
24627
24628         * exception.c: Simplify functions using the new helper.
24629
24630         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
24631         New function.
24632
24633         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
24634         mono_raise_exception, since otherwise gcc doesn't generate the function
24635         epilog for raise_exception, confusing the stack unwinding in the JIT.
24636         Fixes #45043.
24637
24638         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
24639         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
24640         Fixes #49499.
24641
24642 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24643
24644         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
24645         utf8.
24646
24647 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
24648
24649         * icall.c: Removed GetUninitializedObject method because
24650           AllocateUninitializedClassInstance does the same.
24651
24652 2003-10-18  Martin Baulig  <martin@ximian.com>
24653
24654         * class.c (inflate_generic_signature): Renamed to
24655         mono_class_inflate_generic_signature() and made it public.
24656         (my_mono_class_from_generic_parameter): New static function; if we
24657         don't already have the generic parameter's MonoClass, create a
24658         very simple one which is just used internally in the runtime and
24659         not passed back to managed code.
24660
24661         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
24662
24663         * metadata.h (MonoMethodSignature): Moved the
24664         `MonoGenericParam *gen_params' to the MonoMethodHeader.
24665         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
24666
24667         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
24668         ves_icall_MonoMethod_GetGenericArguments(); this is now an
24669         interncall on the MonoMethod class, not on MethodInfo.
24670         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
24671         calling mono_reflection_bind_generic_method_parameters() directly.
24672
24673         * loader.c (mono_method_get_signature): If this is a MethodSpec;
24674         return the already computed `method->signature'.
24675         (method_from_methodspec): New static function to load a method
24676         from a MethodSpec entry.
24677         (mono_get_method_from_token): Call the new method_from_methodspec()
24678         for MethodSpec tokens.  
24679         (mono_get_method_from_token): If we're a generic method, load the
24680         type parameters.
24681
24682         * reflection.c (mono_image_get_memberref_token): Allow
24683         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
24684         table.
24685         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
24686         (mono_image_create_token): First check whether it's a generic
24687         method (so we'd need to create a MethodSpec), then do the other
24688         two alternatives.
24689         (mono_reflection_bind_generic_method_parameters): Return a
24690         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
24691         called directly from the interncall.
24692
24693 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
24694
24695         * reflection.c (load_public_key): Move loading of the public key
24696         into managed code.
24697
24698         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
24699
24700         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
24701         fields.
24702
24703         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
24704         culture, hash_alg and public_key. Fixes #49555.
24705
24706 2003-10-17  Martin Baulig  <martin@ximian.com>
24707
24708         * class.h (MonoGenericInst): Moved this declaration here and added
24709         `MonoMethod *generic_method'.
24710
24711         * icall.c
24712         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
24713         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
24714
24715         * metadata.c (mono_metadata_type_equal): Two types of
24716         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
24717         index; ie. don't compare the address of the `MonoGenericParam'
24718         structure.
24719         (mono_metadata_load_generic_params): Removed the `MonoMethod
24720         *method' argument.
24721
24722         * metadata.h (MonoGenericInst): Moved declaration to class.h.
24723         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
24724
24725         * reflection.c (method_encode_signature): Encode the number of
24726         generic parameters.
24727         (encode_generic_method_sig): New static function.
24728         (method_encode_methodspec): New static function; creates an entry
24729         in the MethodSpec table for a generic method.
24730         (mono_image_get_methodspec_token): New static function.
24731         (mono_image_create_token): Call mono_image_get_methodspec_token()
24732         for generic methods.
24733         (mono_reflection_bind_generic_method_parameters): New public
24734         function.  Instantiates a generic method.
24735
24736 2003-10-16  Martin Baulig  <martin@ximian.com>
24737
24738         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
24739         *gen_params' here from MonoMethodHeader.
24740
24741         * metadata.c (mono_metadata_parse_method_signature): If we have
24742         generic parameters, initialize `method->gen_params' and then set
24743         the correct `type->data.generic_param' in all the parameters.
24744
24745 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24746
24747         * threads.c (mono_threads_get_default_stacksize): New function to 
24748         return the default stacksize.
24749
24750         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
24751         termination of the finalizer thread, since the previous method had
24752         race conditions. Fixes #49628.
24753
24754         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
24755         as for the other managed threads.
24756
24757 2003-10-16  Martin Baulig  <martin@ximian.com>
24758
24759         * class.c (inflate_generic_signature): Copy `generic_param_count'
24760         and `gen_params'.
24761
24762         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
24763         New interncall.
24764
24765         * metadata.c (mono_metadata_parse_method_signature): Actually set
24766         the `method->generic_param_count' here.
24767         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
24768
24769 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24770
24771         * object.h: Add a new field to TypedRef to simplify the implementation
24772         of the REFANY opcodes in the JIT.
24773
24774         * icall.c: Make use of the new field.
24775
24776         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
24777         dynamically.
24778
24779 2003-10-15  Martin Baulig  <martin@ximian.com>
24780
24781         * class.c (mono_class_from_gen_param): Renamed to
24782         mono_class_from_generic_parameter() and moved most of the
24783         functionality from mono_reflection_define_generic_parameter()
24784         here; ie. we create a "real" class here.
24785         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
24786         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
24787         previously been called.
24788
24789         * class.h (MonoGenericParam): Moved the declaration of this struct
24790         here from metadata.h and added `MonoMethod *method'.
24791
24792         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
24793         interncall.
24794
24795         * loader.c (mono_get_method_from_token): If we have any generic
24796         parameters, call mono_metadata_load_generic_params() to read them
24797         from the MONO_TABLE_GENERICPAR.
24798
24799         * metadata.c (mono_metadata_load_generic_params): Added
24800         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
24801
24802         * metadata.h (MonoMethodSignature): Replaced
24803         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
24804         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
24805
24806         * reflection.c (mono_reflection_define_generic_parameter): Moved
24807         most of the functionality into the new
24808         mono_class_from_generic_parameter(); set the `method' field if
24809         we're a method parameter.       
24810
24811 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
24812
24813         * marshal.c (emit_struct_conv): if native size is 0
24814         emit no code.
24815
24816 2003-10-14  Martin Baulig  <martin@ximian.com>
24817
24818         * icall.c: The generics API has changed in the spec since it was
24819         added to System.Type; these modifications make it match the spec
24820         again.
24821         (ves_icall_Type_GetGenericParameters): Renamed to
24822         `ves_icall_Type_GetGenericArguments'.
24823         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
24824         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
24825         `ves_icall_MonoType_get_HasGenericArguments'.
24826         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
24827         `ves_icall_MonoType_get_IsGenericParameter'.
24828         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
24829         this is no interncall anymore.
24830         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
24831         `ves_icall_TypeBuilder_get_IsGenericParameter'.
24832
24833 2003-10-14  Martin Baulig  <martin@ximian.com>
24834
24835         * reflection.c (mono_reflection_bind_generic_parameters): Also
24836         inflate generic methods if we're reading the class from IL.
24837
24838 2003-10-13  Martin Baulig  <martin@ximian.com>
24839
24840         * reflection.c (mono_reflection_define_generic_parameter): This
24841         method isn't called directly from the icall anymore; take a
24842         `MonoReflectionAssemblyBuilder *' so we can use this for type and
24843         method generic parameters.
24844         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
24845         (method_builder_encode_signature): Encode generic parameters.
24846         (mono_image_get_method_info): Write generic params to the
24847         MONO_TABLE_GENERICPARAM table.
24848
24849         * reflection.h (MonoReflectionMethodBuilder): Added
24850         `MonoArray *generic_params'.
24851
24852         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
24853
24854         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
24855         wrapper for mono_reflection_define_generic_parameter().
24856         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
24857
24858 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
24859
24860         * marshal.h: Add missing function to fix build.
24861
24862         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
24863         the SetLastError pinvoke attribute.
24864
24865         * marshal.c (mono_marshal_set_last_error): New helper function called
24866         by the generated code.
24867         
24868         * marshal.c (mono_mb_emit_branch): New helper function.
24869
24870         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
24871
24872         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
24873         classes as parameters and return values of delegates. Fixes #29256. 
24874
24875 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
24876
24877         * locales.c: use gint32 in non HAVE_ICU case
24878
24879 2003-10-11  Martin Baulig  <martin@ximian.com>
24880
24881         * mono-debug.c (mono_debug_add_method): Added a workaround for
24882         bug #48591.
24883
24884 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24885
24886         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
24887         delegates passed to native code must use the STDCALL calling 
24888         convention. Fixes #35987.
24889
24890 2003-10-10  Martin Baulig  <martin@ximian.com>
24891
24892         * class.c (inflate_generic_type): If we're inflating for a generic
24893         type instance (and not for a generic method), return
24894         MONO_TYPE_MVAR unchanged.
24895
24896 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24897
24898         * string-icalls.c: Join ignores null strings in the source array.
24899         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
24900         * threads.c: GetAvailableTheads is slightly more accurate.
24901
24902 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
24903
24904         * threads.h threads.c : add mono_threads_set_default_stacksize
24905         and pass default to CreateThread calls.
24906
24907 2003-10-09  Dick Porter  <dick@ximian.com>
24908
24909         * icall.c:
24910         * locales.h:
24911         * locales.c: Internal calls for constructing CultureInfo and
24912         related objects from libicu (if its available.)
24913
24914 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24915
24916         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
24917
24918 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24919
24920         * threadpool.c: added an argument to async_invoke_thread that is the
24921         item to process, pass the MonoAsyncResult to the thread start function
24922         when creating a new thread. This way we don't need to acquire any lock
24923         when we're creating a new thread. Readded a semaphore for faster
24924         response times (instead of that Sleep i added).
24925
24926 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
24927
24928         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
24929         get daylight change dates better on Windows, fix handling
24930         of platforms without tm_gmtoff.
24931
24932 2003-10-06  Martin Baulig  <martin@ximian.com>
24933
24934         * class.c (inflate_generic_method): Renamed to
24935         mono_class_inflate_generic_method() and made public.
24936         (mono_class_init): Don't inflate the generic methods here.
24937         (mono_class_from_generic): Added `gboolean inflate_methods'
24938         argument.  Inflate the methods here.
24939
24940         * loader.c (mono_method_get_param_names): Ignore instances of
24941         generic types for the moment.
24942
24943         * reflection.c (fixup_method): Added support for inflated methods.
24944         (mono_image_create_token): Use mono_image_get_methodref_token()
24945         for inflated methods.
24946         (mono_custom_attrs_from_param): Ignore instances of generic types
24947         for the moment.
24948         (mono_reflection_bind_generic_parameters): New public function.
24949         Moved all the functionality from
24950         ves_icall_Type_BindGenericParameters() here and added support for
24951         dynamic types.
24952         (mono_reflection_define_generic_parameter): Initialize
24953         `klass->methods' here.
24954
24955         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
24956         functionality into mono_reflection_define_generic_parameter().
24957         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
24958         TypeBuilder, return that TypeBuilder.
24959
24960 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24961
24962         * appdomain.c: removed mono_delegate_semaphore.
24963
24964         * threadpool.c:
24965         (mono_thread_pool_add): moved hash table creation inside and the thread 
24966         creation outside of the critical region.
24967         (mono_thread_pool_finish): removed obsolete code.
24968         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
24969         continue or exit the thread depending on the queue.
24970
24971 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
24972
24973         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
24974         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
24975         handle more bool marshalling options
24976
24977 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
24978
24979         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
24980         arrays of structs. Also add a more descriptive error message when
24981         a structure member is marshalled as LPArray.
24982
24983 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24984
24985         * marshal.c (mono_marshal_get_native_wrapper): Add support for
24986         marshalling arrays of complex types. Fixes #29098. Also remove an
24987         usused and incomplete function.
24988
24989 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
24990
24991         * gc.c: report heap_size - free_bytes as total memory allocated
24992         (bug#49362).
24993
24994 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24995
24996         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
24997         fix timezone handling problems on Windows.
24998         
24999         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
25000         asserts when the year is outside the range handled by ms the functions.
25001
25002         * class.c (setup_interface_offsets): If the class is an interface,
25003         fill out its interface_offsets slot.
25004
25005 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25006
25007         * threadpool.c: mark threadpool threads as background.
25008
25009 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
25010
25011         * decimal.c - define DECINLINE to nothing if not using GCC
25012
25013 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
25014
25015         * assembly.c: More refcount fixes.
25016
25017 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25018
25019         * string-icalls.c: if we're not trimming, return the same string.
25020         When not splitting, don't create a new string.
25021
25022 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25023
25024         * image.c:
25025         (mono_image_open): increment the ref_count inside the critical section.
25026
25027 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
25028
25029         * image.c (mono_image_open): Fix reference counting bug.
25030
25031 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
25032
25033         * marshal.c (mono_marshal_type_size) struct alignment changed for 
25034         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
25035         64bits. Avoid leak in mono_marshal_get_native_wrapper when
25036         mono_lookup_pinvoke_call throws.        
25037
25038 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
25039
25040         * reflection.c (mono_reflection_parse_type): Fix #49114.
25041
25042         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
25043         temporary workaround for cygwin header problem.
25044
25045         * object.c (mono_object_isinst): Synchronize this with the code
25046         generated by the JIT for casts.
25047
25048 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
25049
25050         * reflection.c (encode_type): Fix #38332.
25051
25052 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
25053
25054         * marshal.c (mono_marshal_method_from_wrapper): New function to return
25055         the original method from the wrapper method.
25056
25057 2003-09-25  Martin Baulig  <martin@ximian.com>
25058
25059         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
25060         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
25061         (ves_icall_Type_get_IsGenericInstance): New interncall.
25062
25063 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
25064
25065         * object.c: fix cast warning in big endian code.
25066
25067 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
25068
25069         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
25070         
25071 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25072
25073         * assembly.c: don't call check_env from mono_assembly_load. It's
25074         already done once in mono_assemblies_init and may cause headaches when
25075         multiple threads are loading assemblies.
25076
25077 2003-09-19  Martin Baulig  <martin@ximian.com>
25078
25079         * reflection.c (mono_reflection_define_generic_parameter): Don't
25080         allocate `klass->methods', set `klass->flags' to
25081         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25082
25083 2003-09-18  Martin Baulig  <martin@ximian.com>
25084
25085         * class.c (mono_class_init): Don't create `class->methods' if it's
25086         already initialized.
25087
25088         * metadata.c (mono_metadata_load_generic_params): Make this
25089         actually work.
25090
25091         * reflection.c (mono_reflection_define_generic_parameter): Set
25092         parent class and interfaces from the constraints.
25093
25094         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25095         to keep this struct in sync with the declaration in TypeBuilder.cs.
25096
25097 2003-09-17  Martin Baulig  <martin@ximian.com>
25098
25099         * metadata.h (MonoType): Replaced the data's `int type_param'
25100         field with `MonoGenericParam *generic_param'.
25101         (MonoGenericParam): Added `MonoClass *klass'.
25102
25103         * class.c (mono_class_from_gen_param): Removed the
25104         `MonoImage *image' and `int type_num' arguments.
25105
25106         * metadata.c (mono_metadata_parse_generic_param): New static
25107         method; creates a MonoGenericParam which just contains the index.
25108         (do_mono_metadata_parse_type): Call
25109         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25110         MONO_TYPE_MVAR.
25111
25112         * reflection.c (mono_image_typedef_or_ref): Generic type
25113         parameters may be in the same assembly, but never use a typedef
25114         for them.
25115         (mono_reflection_define_generic_parameter): We're now creating a
25116         "real" class for the type parameter; it's now safe to call
25117         mono_class_from_mono_type() on the class'es type, it'll do the
25118         right thing.
25119
25120 2003-09-16  Martin Baulig  <martin@ximian.com>
25121
25122         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25123         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25124         the `symfile' data structure must be fully initialized before it
25125         gets added to the table.
25126
25127 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25128
25129         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25130
25131         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25132         class init trampolines.
25133
25134 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25135
25136         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25137         to the built-in profiler to turn off time and allocation profiling
25138         respectively.
25139
25140 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25141
25142         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25143         g_direct_equal.
25144
25145         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25146         in human readable form.
25147
25148 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25149
25150         * reflection.c icall.c: Fixed warnings.
25151
25152         * image.c (load_class_names): Use a temporary hash table to hold the
25153         namespaces in order to avoid doing many string comparisons.
25154
25155         * image.h: Fix typo.
25156
25157         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25158         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25159         since the NULL case is short-circuited inside g_hash_table_lookup, 
25160         leading to better performance.  
25161
25162         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25163         obtain the first custom attribute for a given index. Depends on the
25164         CustomAttribute table being sorted by the parent field.
25165
25166         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25167         for better performance.
25168
25169 2003-09-07  Martin Baulig  <martin@ximian.com>
25170
25171         * class.c (mono_class_init): If we're a generic instance, inflate
25172         all our methods instead of loading them from the image.
25173         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25174
25175 2003-09-07  Martin Baulig  <martin@ximian.com>
25176
25177         * mono-debug-debugger.c: Added support for constructors.
25178
25179 2003-09-06  Martin Baulig  <martin@ximian.com>
25180
25181         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25182         New interncall.
25183
25184         * reflection.c (mono_reflection_setup_generic_class): Call
25185         ensure_runtime_vtable() to create the vtable.
25186
25187 2003-09-05  Martin Baulig  <martin@ximian.com>
25188
25189         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25190         MONO_TYPE_MVAR.
25191
25192 2003-09-04  Martin Baulig  <martin@ximian.com>
25193
25194         * reflection.c (mono_reflection_define_generic_parameter): Generic
25195         parameters start with zero.
25196
25197 2003-09-04  Martin Baulig  <martin@ximian.com>
25198
25199         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25200
25201         * reflection.h (MonoReflectionGenericParam): New typedef.
25202         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25203         the generic parameters from the managed TypeBuilder.
25204
25205         * reflection.c (mono_reflection_define_generic_parameter): New function.
25206         (mono_reflection_create_runtime_class): Encode generic parameters.
25207         (mono_reflection_setup_generic_class): New function; this is
25208         called after adding adding all generic params to the TypeBuilder.
25209         (encode_type): Added MONO_TYPE_VAR.
25210
25211 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25212
25213         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25214         here from the JIT.
25215
25216         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25217         load hook.
25218
25219 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25220
25221         * reflection.h reflection.c class.h class.c: Delete duplicate 
25222         definition of mono_type_get_name () from reflection.c and export the
25223         one in class.c.
25224
25225         * class.c: Class loading fixes from Bernie Solomon 
25226         (bernard@ugsolutions.com).
25227
25228         * reflection.c: Endianness fixes from Bernie Solomon 
25229         (bernard@ugsolutions.com).
25230         
25231 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25232
25233         * assembly.h assembly.c: Define a file format version for AOT
25234         libraries.
25235         
25236         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25237
25238         * appdomain.h (MonoJitInfo): New field to determine whenever the
25239         code is domain neutral.
25240         
25241 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25242
25243         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25244
25245 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25246
25247         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25248         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25249         Avoid caching the result since strings must be domain specific. Fixes
25250         #48050.
25251
25252 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25253
25254         * marshal.c (mono_marshal_init): Make this callable multiple times
25255         since it is hard to find a correct place to call it.
25256
25257         * object.c (mono_runtime_class_init): Execute static constructors in
25258         the correct appdomain.
25259
25260         * image.c (build_guid_table): Handle the case when multiple images have
25261         the same GUID.
25262
25263 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25264
25265         * icall.c: added a couple of icalls for System.Web.
25266
25267 2003-08-28  Martin Baulig  <martin@ximian.com>
25268
25269         * icall.c (ves_icall_Type_BindGenericParameters): Use
25270         `klass->generic_inst' instead of `&klass->byval_arg' in the
25271         mono_type_get_object() call.  The returned type must be
25272         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25273
25274 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25275
25276         * NOTES: New file.
25277
25278         * object.c (mono_class_proxy_vtable): Make it thread safe.
25279
25280         * pedump.c: Fix warning.
25281
25282         * object.c appdomain.h: Get rid of metadata_section. 
25283         It is no longer needed and it was causing deadlocks with domain->lock.
25284
25285         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25286
25287 2003-08-26  Martin Baulig  <martin@ximian.com>
25288
25289         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25290
25291 2003-08-26  Martin Baulig  <martin@ximian.com>
25292
25293         * pedump.c (main): Call mono_metadata_init(),
25294         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25295         and mono_loader_init().
25296
25297 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25298
25299         * loader.h: Add missing include to fix build.
25300
25301         * image.h: mono_image_load_references is no more.
25302
25303         * assembly.c: Reworked assembly loading to make it really thread safe.
25304         After these changes, the assembly returned by mono_assembly_open is
25305         fully initialized, i.e. all its references assemblies are loaded.
25306
25307         * assembly.c (mono_image_load_references): Renamed to 
25308         mono_assembly_load_references, and made private, since clients no
25309         longer need to call it.
25310
25311         * class.c: Removed calls to mono_assembly_load_references, since it was
25312         a source of deadlocks.
25313
25314         * loader.h loader.c class.h class.c: Protect data structures using a 
25315         new lock, the loader lock.
25316
25317         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25318         GPtrArrays only when needed.
25319
25320         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25321         into empty structures by mcs. Fixes pinvoke7.cs.
25322         
25323         * domain.c (mono_init): Call a new initialization function.
25324
25325         * appdomain.c (mono_runtime_init): Call the new initializer function
25326         of the marshal module.
25327
25328         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25329         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25330
25331         * marshal.h marshal.c: Added locks around the wrapper caches to make
25332         this module thread safe.
25333
25334         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25335         this argument. Fixes pinvoke1.exe.
25336
25337 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25338
25339         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25340         enumeration of values. Removed fields to store remote call output values in
25341         MonoAsyncResult. Not needed any more.
25342         * object.c: Initialize call_type and async_result fields in mono_message_init.
25343         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25344         dispatching the message.
25345         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25346         async call to finish. To do it use a message with EndInvoke call type.
25347
25348 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25349
25350         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25351         determines whenever a method has marshalling info.
25352
25353 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25354
25355         * assembly.c: fix the build on windows.
25356
25357 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25358
25359         * object.cs: Fixed bug #47785.
25360
25361 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25362
25363         * string-icalls.c (StringReplace): If their are no occurances of
25364         the old string found return a reference to the supplied
25365         string. This saves some memory and matches MS behavoir.
25366         
25367 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25368
25369         * socket-io.c: fixed compilation for systems that define AF_INET6
25370         and don't define SOL_IP/SOL_IPV6.
25371
25372 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25373
25374         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25375         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25376
25377         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25378
25379         * domain.c: Make this module thread safe.
25380
25381         * domain.c (mono_init): Call new initialization function.
25382
25383         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25384         reference types too. Fixes #38812.
25385
25386         * image.c (mono_image_init): Fixed warnings.
25387
25388         * class.c (mono_class_from_typeref): Handle assembly load failure
25389         correctly.
25390
25391         * appdomain.c (add_assemblies_to_domain): Handle the case when
25392         the references of an assembly are not yet loaded.
25393
25394         * metadata.c image.c assembly.c: Moved initialization of global
25395         variables to a separate function called at startup since lazy 
25396         initialization of these variables is not thread safe.
25397         
25398         * image.c assembly.c: Made this module thread safe by adding locks in 
25399         the appropriate places.
25400
25401         * domain.c (mono_init): Call the new initialization functions of the
25402         three modules.
25403
25404 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
25405
25406         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
25407           make a direct call. It is proxy's work to make the call asynchronous.
25408           mono_delegate_end_invoke(): If the targe is a proxy, just collect
25409           the return values.
25410         * object.cs: mono_method_call_message_new(): read AsyncResult and
25411           state object from parameters list, if this info is requested.
25412         * object.h: Added fields to store remote call output values in
25413           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
25414
25415 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25416
25417         * object.h: add needed fields to MonoThread.
25418         * threads.c, threads.h: allow registering a function to cleanup data
25419         allocated per thread by the JIT.
25420
25421 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25422
25423         * loader.h: portability fix by Bernie Solomon
25424         * <bernard@ugsolutions.com>.
25425
25426 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
25427
25428         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
25429         return a MonoArray. This simplifies the code and also ensures that
25430         the cache allways contains an object reference as a value.
25431
25432         * icall.c (ves_icall_get_parameter_info): Simplified using the new
25433         function.
25434
25435 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25436
25437         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
25438         fixes a problem with byte ordering when getting the address family for
25439         a socket.
25440
25441 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
25442
25443         * .cvsignore: Added monosn.
25444
25445         * reflection.h reflection.c loader.c: Added support for parameter
25446         marshalling to dynamically created types. Fixes #47295.
25447
25448 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25449
25450         * rand.c: remove useless warnings.
25451
25452 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25453
25454         * class.c: implemented ldtoken for methods and fieldrefs.
25455
25456 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25457
25458         * threadpool.c: when mono_async_invoke was called, no one took care of
25459         monitoring the queue. So if the method invoked took some time and we
25460         got new async invoke requests after 500 ms (the thread created waited
25461         that long in WaitForSingleObject), the new async invoke was not called
25462         until the previous one finished.
25463
25464         This is fixed now. Thanks to Totte for helping with it.
25465
25466 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25467
25468         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
25469
25470 2003-08-11  Martin Baulig  <martin@ximian.com>
25471
25472         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
25473
25474 2003-08-06  Martin Baulig  <martin@ximian.com>
25475
25476         * mono-debug-debugger.c: Added support for static fields,
25477         properties and methods.
25478
25479 2003-08-06  Martin Baulig  <martin@ximian.com>
25480
25481         * mono-debug-debugger.c: Don't store the MonoString's vtable to
25482         make this work for applications with multiple application domains.
25483
25484 2003-08-04  Martin Baulig  <martin@ximian.com>
25485
25486         * mono-debug-debugger.c: Completely reworked the type support; the
25487         most important thing is that we're now just using one single
25488         `MonoType' instance per type.
25489
25490 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
25491
25492         * mono-endian.h, mono-endian.c, icall.c: Added icall
25493         ves_icall_System_Double_AssertEndianity to assert double word endianity
25494         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
25495
25496 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25497
25498         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
25499         support, icalls and fixes.
25500
25501 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
25502
25503         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
25504         classes that are a punctuation character in .NET is not the same a
25505         g_unichar_ispunct.
25506
25507 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25508
25509         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
25510
25511 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
25512
25513         * icall.c: Add new MemCopy internalcall.
25514         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
25515         Simplified code; It is not necessary to handle all the cases here,
25516         as the C# code takes care of it.  Only handle the case of the name
25517         resource embedded into the assembly.
25518
25519         Changed signature to return the data pointer and the size of the
25520         data. 
25521
25522 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
25523
25524         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
25525         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
25526
25527 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25528
25529         * socket-io.c: ignore EINTR error in select.
25530
25531 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
25532
25533         * class.h, class.c: removed unused subclasses field in MonoClass.
25534
25535 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25536
25537         * icall.c: improve fix of get_base_definition(). If the parent class
25538           doesn't have the mehod, look at the parent of the parent.
25539         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
25540           to check if a parameter is an in or out parameter
25541           (PARAM_ATTRIBUTE_IN is not set by default).
25542           mono_method_return_message_restore(): Use mono_class_value_size to
25543           get the size of a value type. mono_type_stack_size (parameterType)
25544           does not return the correct value if parameterType is byRef.
25545           mono_load_remote_field(), mono_load_remote_field_new(),
25546           mono_store_remote_field(), mono_store_remote_field_new():
25547           raise exception if the remote call returns an exception.
25548
25549 2003-07-28  Martin Baulig  <martin@ximian.com>
25550
25551         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
25552         method.  This is a wrapper around mono_runtime_invoke() which
25553         boxes the instance object if neccessary.
25554
25555 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25556
25557         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
25558         metadata.h, row-indexes.h, verify.c: first cut of generics support.
25559
25560 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25561
25562         * icall.c: disable mcs bug workaround.
25563
25564 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25565
25566         * object.c (mono_runtime_class_init): Take the metadata_section
25567         mutex before obtaining the domain mutex.
25568
25569         * appdomain.h: Added definition of metadata_section mutex here. 
25570
25571         * object.c: define metadata_mutex here.
25572
25573 2003-07-24  Ravi Pratap  <ravi@ximian.com>
25574
25575         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
25576         fixed.
25577
25578 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
25579
25580         * reflection.c: Fix bug #46669
25581
25582 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25583
25584         * exception.c:
25585         * exception.h:
25586         * icall.c:
25587         * object.h: fill in the type name for TypeLoadException.
25588
25589 2003-07-23  Ravi Pratap  <ravi@ximian.com>
25590
25591         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
25592         relationship between TypeBuilders while compiling corlib) and bug
25593         45993 (Array types returned from the runtime while compiling
25594         corlib were from the loaded corlib).
25595
25596 2003-07-22  Martin Baulig  <martin@ximian.com>
25597
25598         * mono-debug-debugger.c: Reworked the type support a bit more;
25599         distinguish between types and classes.
25600
25601 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
25602
25603         * icall.c: add IsArrayImpl icall.
25604
25605 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
25606
25607         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
25608         initializing real_size only once. Also fix bug #46602.
25609
25610 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
25611
25612         * object.c: Renamed mono_metadata_section to metadata_section.
25613
25614 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
25615
25616         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
25617           empty array if the type is an array. Fixed.
25618           ves_icall_MonoMethod_get_base_definition: if the base method
25619           is abstract, get the MethodInfo from the list of methods of
25620           the class.
25621         * reflection.c: ParameterInfo.PositionImpl should be zero-based
25622           and it was 1-based. Fixed in mono_param_get_objects.
25623
25624 2003-07-20  Martin Baulig  <martin@ximian.com>
25625
25626         * mono-debug.h: Set version number to 31.
25627         (mono_debug_init): Added `MonoDomain *' argument.
25628
25629         * mono-debug-debugger.c: Reworked the type support; explicitly
25630         tell the debugger about builtin types; pass the `klass' address to
25631         the debugger.
25632
25633 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
25634
25635         * image.c: Allow new metadata tables to be loaded without a
25636         warning. Also update the warning message to give the new constant value.
25637                 
25638 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25639
25640         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
25641         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
25642         array type representation changes.
25643
25644 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25645
25646         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
25647         on Environment.Exit () call.
25648
25649 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25650
25651         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
25652         requires a matching corlib.
25653
25654 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25655
25656         * Changelog: My editor decided to add a CR to each line. Sorry about that.
25657           Committed again without the CRs.
25658         
25659 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25660
25661         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
25662           getting it from the "this" socket instance. Did not work
25663           if the socket is a subclass of Socket.
25664           Also fixed bug #35371.
25665
25666 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25667
25668         * metadata.c: fixed size for TypedByRef.
25669         * loader.c: when searching for a method, consider the vararg amrker.
25670         * unicode.c, decimal.c: constify some arrays.
25671
25672 2003-07-15  Dick Porter  <dick@ximian.com>
25673
25674         * socket-io.c: Fixed compilation for gcc < 3.2.
25675
25676         Fixed compilation for machines that don't have AF_INET6 (thanks to
25677         Bernie Solomon <bernard@ugsolutions.com> for that part.)
25678
25679         Fixed compile warnings.
25680         
25681         Fixed formatting and line endings.
25682
25683 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
25684
25685         * socket-io.h:
25686         * socket-io.c: Added IPv6 support.
25687
25688 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
25689
25690         * class.c (mono_class_is_assignable_from): New function to implement
25691         the is_assignable_from logic. Used by mono_object_isinst, 
25692         Type::IsAssignableFrom () and the interpreter.
25693
25694         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
25695         Object, even interfaces.
25696         
25697         * object.c (mono_object_isinst): Implement in terms of 
25698         is_assignable_from.
25699
25700         * icall.c (ves_icall_type_is_assignable_from): New icall.
25701
25702 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
25703
25704         * domain.c (foreach_domain): fix compiler warning.
25705
25706 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
25707
25708         * image.c (load_metadata_ptrs): use g_strndup because strndup is
25709         not available on all plattforms
25710
25711 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
25712
25713         * image.h image.c: Store the metadata version string in MonoImage.
25714         * icall.c: New icall to retrieve the image version.
25715         * reflection.c (create_dynamic_image): Fill in the image version field
25716         * reflection.c (build_compressed_metadata): Use the image version
25717         from the image structure.
25718
25719 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25720
25721         * appdomain.c: modified comment.
25722         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
25723         That will be its last iteration when mono_gc_cleanup is called from
25724         mono_runtime_cleanup and before the domain is unloaded.
25725
25726         Fixes bug #45962.
25727
25728 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
25729
25730         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
25731         attributes.
25732
25733 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25734
25735         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
25736         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
25737         Bernie Solomon <bernard@ugsolutions.com>.
25738
25739 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25740
25741         * object.c, object.h: provide mono_object_new_fast() for faster
25742         allocation in some special cases.
25743
25744 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25745
25746         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
25747         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
25748
25749 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25750
25751         * threadpool.c: fix leaks.
25752
25753 2003-07-01  Dick Porter  <dick@ximian.com>
25754
25755         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
25756         using MonoGHashTables.  Fixes threadpool bug posted to list.
25757
25758 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25759
25760         * image.h, image.c: added support to load an assembly from a byte array.
25761         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
25762         assembly bundle support.
25763
25764 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
25765
25766         * threadpool.c (mono_thread_pool_add): keep a reference to the
25767         AsyncResult to prevent GC
25768
25769 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25770
25771         * class.c: leak fix.
25772
25773 2003-06-25  Dick Porter  <dick@ximian.com>
25774
25775         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
25776         for the async object, the WaitHandle object will close the handle.
25777         Fixes bug 45321.
25778
25779 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25780
25781         * class.c: in mono_array_class_get (), lookup from the hash with the
25782         same type we insert: this works around a bug in
25783         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
25784         lluis. The real fix will have to wait for after the release.
25785
25786 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25787
25788         * icall.c: fix memory leak when getting type members.
25789
25790 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25791
25792         * reflection.c: added more pubtoken special cases.
25793
25794 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25795
25796         * class.c: handle field offset correctly when class size
25797         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
25798
25799 2003-06-20  Martin Baulig  <martin@ximian.com>
25800
25801         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
25802         *image' field.
25803
25804 2003-06-20  Martin Baulig  <martin@ximian.com>
25805
25806         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
25807
25808 2003-06-20  Martin Baulig  <martin@ximian.com>
25809
25810         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
25811         just distinguish between variables in registers and variables at
25812         an offset relative to a register.
25813
25814 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25815
25816         * icall.c: #ifdef out latest changes until mcs is fixed.
25817
25818 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25819
25820         * icall.c: return members in metadata order.
25821
25822 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25823
25824         * icall.c: avoid infinite loop in GetTimeZoneData.
25825
25826 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25827
25828         * icall.c: added Marshal.Prelink/All icalls.
25829
25830 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25831
25832         * object.c, object.h: fix warnings and do some overflow checking
25833         when creating arrays.
25834
25835 2003-06-17  Dick Porter  <dick@ximian.com>
25836
25837         * file-io.h:
25838         * file-io.c: File attributes need to be tweaked slightly when
25839         passed from the managed to the w32 world.
25840
25841 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25842         * profiler.h profiler-private.h profiler.c: Rework last patch
25843         based on suggestion by Paolo.
25844         
25845 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25846
25847         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
25848         instruction level coverage data collection.
25849         * profiler.h profiler.c (: Added new callback function which can be
25850         used by the profiler to limit which functions should have coverage
25851         instrumentation.
25852         * profiler.c (mono_profiler_load): Call g_module_build_path to
25853         generate the file name of the profiler library.
25854
25855 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25856
25857         * profiler.c, profiler.h, profiler-private.h: added basic block 
25858         coverage profiling API.
25859
25860 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
25861
25862         * reflection.c (mono_reflection_create_runtime_class): Add support
25863         for events in dynamically generated code.
25864
25865         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
25866         not allocated.
25867
25868 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25869
25870         * icall.c: when getting timezone info, return reasonable values if we
25871         can't get the actual data.
25872
25873 2003-06-14  Dick Porter  <dick@ximian.com>
25874
25875         * threads.c (start_wrapper): Remove the reference to the thread
25876         object in the TLS data, so the thread object can be finalized.
25877         This won't be reached if the thread threw an uncaught exception,
25878         so those thread handles will stay referenced :-( (This is due to
25879         missing support for scanning thread-specific data in the Boehm GC
25880         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
25881
25882 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
25883
25884         * reflection.c: ensure streams and tables are first allocated with
25885         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
25886
25887 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25888
25889         * icall.c: fixed GetElementType for byrefs (bug# 44792).
25890
25891 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
25892
25893         * reflection.c (mono_reflection_create_runtime_class): Add support for
25894         properties to dynamically created classes.
25895         * reflection.c: Fix a few places where non-MonoObjects were inserted
25896         into the tokens hashtable.
25897
25898 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25899
25900         * object.c: some support to handle out of memory exceptions.
25901
25902 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
25903
25904         * marshal.c (mono_marshal_get_native_wrapper): support reference
25905         return types
25906
25907 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25908
25909         * object.h, object.c: more portability stuff from Bernie Solomon.
25910         Unexport mono_object_allocate(). Added mono_object_unbox ().
25911         Set exitcode when an unhandled exception is thrown.
25912
25913 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
25914
25915         * marshal.c (mono_marshal_get_native_wrapper): use custom
25916         marshaler for return types.
25917
25918 2003-06-10  Dick Porter  <dick@ximian.com>
25919
25920         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
25921         ip_mreq is available
25922
25923 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25924
25925         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
25926         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
25927         by Bernie Solomon <bernard@ugsolutions.com>.
25928
25929 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
25930
25931         * gc.c (mono_gc_init): Avoid error message on shutdown when
25932         GC_DONT_GC=1 is used.
25933
25934         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
25935         New icall to return the GUID of a module.
25936
25937 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25938
25939         * class.c: ensure instance size always includes the parent's size
25940         even whem class size is set explicitly (fixes bug#44294).
25941
25942 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25943
25944         * profiler.h, profiler.c: made the simple profiler thread-safe,
25945         get more accurate timing info. Allow the loading of an
25946         externally-developed profiler module.
25947
25948 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
25949
25950         * marshal.c (mono_marshal_get_native_wrapper): improved
25951         class/byref arguments.
25952         (mono_marshal_get_native_wrapper): better string marshaling support.
25953
25954 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25955
25956         * class.c: ensure .pack and .size are handled correctly and
25957         simplified layout of static fields.
25958
25959 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25960
25961         * appdomain.c
25962         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
25963
25964         * loader.c (mono_lookup_pinvoke_call): look for modules in the
25965         current directory (fix bug 44008)
25966
25967 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
25968
25969         * marshal.c (mono_marshal_get_native_wrapper): started support for
25970         custom marshalers.
25971         (mono_delegate_to_ftnptr): consider marshalling specifications
25972
25973 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25974
25975         * reflection.c, reflection.h: emit custom marshal info.
25976
25977 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25978
25979         * object.c: free the GError.
25980         * icall.c: added CloseEvent_internal.
25981         * threads.[ch]:
25982         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
25983         call.
25984
25985 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
25986
25987         * loader.c (mono_method_get_signature): Add support for dynamic
25988         assemblies.
25989
25990 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25991
25992         * reflection.c: fixed bug #43905.
25993
25994 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25995
25996         * class.c, domain.c, icall.c, metadata.h, object.h: support for
25997         handling TypedReference and ArgIterator.
25998         * loader.c, loader.h: added function to get signature at call site.
25999
26000 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26001
26002         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
26003         data readonly. Buglets and warning fixes. Some MethodSpec support.
26004
26005 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26006
26007         * class.h, class.c, object.c: remove relative numbering support.
26008
26009 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
26010
26011         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
26012         free the string, until we get a chance to fix Gtk#
26013
26014 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26015
26016         * marshal.c: revert last patch.
26017
26018 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
26019
26020         * icall.c: updates for new mono_class_vtable() not calling
26021         the type constructor anymore.
26022
26023 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26024
26025         * object.h, object.c: separate vtable creation from type
26026         initialization. Make running the .cctor thread safe.
26027
26028 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
26029
26030         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
26031
26032 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
26033
26034         * loader.c (mono_get_method): consider calling convention
26035
26036 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
26037
26038         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
26039         to return the invisible global type for a module.
26040
26041         * reflection.c (mono_image_build_metadata): Emit global fields too.
26042
26043 2003-05-20  Peter Williams  <peterw@ximian.com>
26044
26045         * loader.c (mono_lookup_internal_call): Add a few newlines.
26046
26047 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
26048
26049         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
26050         literal strings.
26051
26052         * appdomain.c (set_domain_search_path): Recalculate search path when
26053         AppDomainSetup.PrivateBinPath changes.
26054
26055         * object.c (mono_class_compute_gc_descriptor): It turns out some
26056         parts of the class libs (like System.Thread) holds pointers to
26057         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
26058         to treat native int a pointer type here.
26059         
26060 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
26061
26062         * appdomain.h, domain.c: add hashtable for jump target resolution.
26063
26064 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
26065
26066         * reflection.h reflection.c icall.c: Added new icalls 
26067         GetManifestResourceInfoInternal, GetModulesInternal and support
26068         infrastructure.
26069
26070 2003-05-16  Dick Porter  <dick@ximian.com>
26071
26072         * icall.c:
26073         * file-io.h:
26074         * file-io.c: Implement System.IO.MonoIO::GetTempPath
26075
26076 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
26077
26078         * object.c: mono_store_remote_field: little fix to previous patch.
26079
26080 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26081
26082         * class.c: add constructors to array classes.
26083         * icall.c: special case array construction for InternalInvoke (),
26084
26085 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26086
26087         * class.h class.c reflection.c object.c: Added support for field
26088         defaults in dynamically generated classes.
26089
26090 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26091
26092         * reflection.c: properly encode charset for ddlimport.
26093
26094 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26095
26096         * threads.c: allow compiling without GC.
26097
26098 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26099
26100         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26101         handling of thread static data.
26102
26103 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26104
26105         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26106
26107 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26108
26109         * class.c (mono_array_class_get): always set the serializable flags
26110         (mono_array_class_get): always set the SEALED attribute for array types
26111
26112 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26113
26114         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26115         attributes (fix for bug 42021).
26116
26117 2003-05-12  Dick Porter  <dick@ximian.com>
26118
26119         * gc.c: Don't run finalizers when the finalizer thread is
26120         finishing up, because the default domain has already been
26121         destroyed.
26122
26123 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26124
26125         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26126         value is null, we should throw an exception.   This is slightly
26127         different than the other conventions used for the constructor.
26128
26129 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26130
26131         * socket-io.c: fixed windows build.
26132
26133 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26134
26135         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26136
26137 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26138
26139         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26140         compilers.
26141
26142 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26143
26144         * class.c (mono_class_layout_fields): Add experimental GC aware
26145         auto layout facility. Requires class library changes to work correctly.
26146
26147         (mono_class_setup_vtable): Avoid overriding explicit interface
26148         method implementations. Fixes iface3.exe test.
26149
26150         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26151         object reference.
26152         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26153         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26154
26155         * metadata.h: Add new type classification macro which determines
26156         whenever the type holds an object reference.
26157
26158 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26159
26160         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26161
26162 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26163
26164         * gc.c (finalizer_thread): Work around a GC bug.
26165
26166 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26167
26168         * marshal.c (emit_struct_conv): allow unions
26169
26170         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26171
26172 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26173
26174         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26175
26176 2003-05-06  Martin Baulig  <martin@ximian.com>
26177
26178         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26179
26180 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26181
26182         * socket-io.c:
26183         (Select_internal): allow NULLs, don't create arrays if not needed.
26184         Coupled with Socket.cs changes.
26185
26186         * threadpool.c:
26187         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26188         register a finalizer for it that will close the semaphore handle. This
26189         fixes the leak and make Lupus' test run with > 4080 loops.
26190
26191 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26192
26193         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26194         Jerome Laban (bug #42287)
26195
26196 2003-05-02  Martin Baulig  <martin@ximian.com>
26197
26198         * debug-mono-symfile.h
26199         (MonoSymbolFile): Moved declaration into mono-debug.h.
26200         (MonoDebugMethodJitInfo): Likewise.
26201         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26202         argument.
26203         (_mono_debug_address_from_il_offset): Take a
26204         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26205
26206         * mono-debug.h
26207         (MonoDebugDomainData): New struct.
26208         (mono_debug_get_domain_data): New function.
26209         (mono_debug_add_method): Take an additional `MonoDomain *'
26210         argument.
26211         (mono_debug_source_location_from_address): Likewise.
26212         (mono_debug_il_offset_from_address): Likewise.
26213         (mono_debug_address_from_il_offset): Likewise.
26214
26215 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26216
26217         * reflection.c: one more check for null type in custom attrs.
26218
26219 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26220
26221         * reflection.c: avoid warning (comparison is always false due to limited
26222         range of data type).
26223
26224 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26225
26226         * icall.c: throw an exception in Type.GetField if the argument 'name'
26227         is NULL.
26228
26229 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26230
26231         * reflection.c: fixed handling of enums in named arguments to custom
26232         attributes (bug #42123).
26233
26234 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26235
26236         * reflection.c: use the right array element type and handle
26237         a null for a Type argument, too.
26238
26239 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26240
26241         * reflection.c: handle arrays as arguments to custom attributes.
26242
26243 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26244
26245         * reflection.c: handle a string value in a custom attr
26246         ctor that takes an object.
26247
26248 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26249
26250         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26251         (fix bug #42063)
26252
26253 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26254
26255         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26256
26257 2003-04-27  Martin Baulig  <martin@ximian.com>
26258
26259         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26260         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26261         MONO_DEBUGGER_EVENT_BREAKPOINT.
26262         (mono_breakpoint_trampoline_code): Removed.
26263         (mono_debugger_event_handler): The last argument is now a
26264         `guint32'.
26265         (mono_debugger_insert_breakpoint_full): Removed the
26266         `use_trampoline' argument.
26267         (mono_debugger_method_has_breakpoint): Likewise.
26268         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26269         mono_debugger_breakpoint_callback(); take the method and
26270         breakpoint number as arguments.
26271
26272 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26273
26274         * metadata.c: fix off by one when loading parameters attributes.
26275
26276 2003-04-24  Martin Baulig  <martin@ximian.com>
26277
26278         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26279
26280 2003-04-24  Martin Baulig  <martin@ximian.com>
26281
26282         * mono-debug-debugger.c: Moved all code which interacts with the
26283         Mono Debugger here.
26284
26285         * debug-mono-symfile.c: This code now just deals with the symbol
26286         file itself, the debugger code is now in mono-debug-debugger.c.
26287
26288 2003-04-23  Martin Baulig  <martin@ximian.com>
26289
26290         * mono-debug.c (mono_debug_source_location_from_il_offset):
26291         New method; like mono_debug_source_location_from_address(), but
26292         takes an IL offset instead of a machine address.
26293
26294 2003-04-23  Martin Baulig  <martin@ximian.com>
26295
26296         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26297         `line' field; this is now computed by the debugger.
26298
26299 2003-04-23  Martin Baulig  <martin@ximian.com>
26300
26301         * mono-debug.[ch]: New files.  This is the new debugging interface.
26302
26303         * mono-debug-debugger.[ch]: New files.  Moved all code which
26304         interacts with the Mono Debugger here.
26305
26306 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26307
26308         * domain.c (mono_init): initialize mono_defaults.monitor_class
26309
26310 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26311
26312         * reflection.c (method_encode_code): Add a spicy exception to help
26313         future compiler authors.
26314
26315 2003-04-21  Martin Baulig  <martin@ximian.com>
26316
26317         * icall.c
26318         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26319         Make this work with relative pathnames; g_filename_to_uri() needs
26320         an absolute filename.
26321
26322 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26323
26324         * icall.c: Track name changes in Object and ValueType.
26325
26326 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26327
26328         * metadata.c (mono_type_stack_size): size should be a multiple of
26329         sizeof (gpointer)
26330
26331 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26332
26333         * gc.c:
26334         (internal_domain_finalize): moved into mono_domain_finalize. No need
26335         to create another thread because the finalizers will be run in the
26336         finalizer thread.
26337         
26338         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26339         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26340         to be run (MS does this too).
26341
26342 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26343
26344         * object.c (mono_class_compute_gc_descriptor): Update comment.
26345
26346         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26347
26348         * image.h: Add synchronized wrapper cache.
26349
26350         * image.c (do_mono_image_open): Initialize cache.
26351
26352         * reflection.c (create_dynamic_mono_image): Initialize cache.
26353
26354 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26355
26356         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26357         ves_icall_System_Buffer_ByteLengthInternal.
26358
26359 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26360
26361         * reflection.c: setup klass->nested_in earlier. Allow
26362         a dash in the assembly name.
26363
26364 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26365
26366         * metadata.c (mono_type_to_unmanaged): dont access
26367         type->data.klass for MONO_TYPE_OBJECT
26368         (mono_type_to_unmanaged): consider System.Delegate class
26369
26370 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26371
26372         * class.c: just setup supertypes in the proper place instead of
26373         initializing the full element class for arrays.
26374
26375 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26376
26377         * class.c: ensure the element class of arrays is initialized.
26378         Setup the supertype info for array classes, too.
26379
26380 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26381
26382         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26383
26384 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26385
26386         * Makefile.am: re-added -m option when running cygpath. This way,
26387         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26388         separator.
26389         * mono-config.c: same codepath for locating mono config file for WIN32
26390         and the rest.
26391         * assembly.c: if mono_assembly_setrootdir is called, don't override
26392         the value set.
26393
26394 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26395
26396         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
26397         MONO_ASSEMBLIES variable.
26398
26399 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
26400
26401         * icall.c: added Assembly::GetNamespaces() icall.
26402
26403 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26404
26405         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
26406
26407 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
26408
26409         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
26410         * object.c: fixed bug in the construction of vtable for proxies
26411
26412 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
26413
26414         * object.c (mono_array_new): Mark mono_array_new as an icall.
26415
26416 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26417
26418         * class.c: fixed test for public method when overriding interfaces.
26419         Closes bug #40970.
26420
26421 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26422
26423         * appdomain.h, domain.c: added mono_domain_foreach() to
26424         be able to access the currently loaded appdomains.
26425         * object.c: make string interning work across sppdomains.
26426         Mark some functions for use as icalls.
26427
26428 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26429
26430         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
26431
26432         * reflection.h reflection.c: Allocate long living data using 
26433         GC_MALLOC_ATOMIC so the collector does not need to scan it.
26434
26435         * reflection.c: Double the allocation size in streams instead of
26436         increasing it, to prevent unneccesary copying on large assemblies.
26437         
26438         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
26439         creation if the assembly does not have the Run flag set.
26440
26441 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
26442
26443         * class.h: avoid the C++ keywords in header files (Jerome Laban
26444         spotted and fixed this).
26445
26446 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26447
26448         * object.c:
26449         (mono_unhandled_exception): fill in the arguments for the
26450         UnhandledException event. Only trigger that event for the default
26451         domain (as MS does).
26452
26453 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
26454
26455         * object.c: Improve typed allocation stuff based on suggestions from
26456         Paolo. Also turn it on if the GC library supports it.
26457
26458 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26459
26460         * object.c object.h class.h: Added experimental typed allocation
26461         facility using the interfaces in gc_gcj.h.
26462
26463         * os/gc_wrapper.h: Added new include files.
26464         
26465 2003-04-03  Martin Baulig  <martin@ximian.com>
26466
26467         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
26468         which is not yet enabled by default.
26469
26470         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
26471         functions.
26472         (mono_gc_lock, mono_gc_unlock): New static functions.
26473
26474         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
26475         functions; stop/start the world for the garbage collector.  This
26476         is using the windows API; we need to complete the SuspendThread()/
26477         ResumeThread() implementation in the io-layer to make this work on Unix.
26478         (mono_gc_push_all_stacks): New public function; tells the garbage
26479         collector about the stack pointers from all managed threads.
26480
26481 2003-04-03  Martin Baulig  <martin@ximian.com>
26482
26483         * object.h (MonoThread): Added `gpointer stack_ptr'.
26484
26485         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
26486
26487 2003-04-03  Martin Baulig  <martin@ximian.com>
26488
26489         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
26490
26491 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26492
26493         * reflection.c (typebuilder_setup_fields): Initialize field.first and
26494         field.last.
26495
26496 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
26497
26498         * loader.c (mono_lookup_internal_call): Report the corlib that is
26499         out of sync.
26500
26501 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
26502
26503         * icall.c (ves_icall_type_GetTypeCode): fixed check for
26504         System.DBNull (it's class not valuetype).
26505
26506 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26507
26508         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
26509         if the array method was already assigned a token (fixes bug#40646).
26510
26511 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
26512
26513         * reflection.c (mono_reflection_get_type): Attempt type resolve even
26514         if no assembly is given.
26515
26516 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
26517
26518         * metadata.h: Added the new tables.
26519
26520         * row-indexes.h: Added definitions for new tables.
26521
26522         * metadata.c: Add schemas for new tables, and add support for
26523         computing the sizes of them.
26524
26525         * class.c: Update for handling the new type cases.
26526
26527 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
26528
26529         * metadata.h (MONO_TYPE_IS_VOID): new macro
26530
26531 2003-03-31  Martin Baulig  <martin@ximian.com>
26532
26533         * threads.h (MonoThreadCallbacks): Added `thread_created'.
26534
26535         * threads.c (mono_thread_new_init): Call `thread_created' in the
26536         mono_thread_callbacks.
26537
26538 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
26539
26540         * loader.h: added marshalbyrefobject_class to mono_defaults
26541         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
26542         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
26543           generation of output parameters.
26544           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
26545         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
26546           contextbound and the target object belongs to the context of the caller.
26547         * object.h: added context and unwrapped_server variables in MonoRealProxy.
26548         * object.c: Implemented support for interfaces and abstract classes
26549           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
26550           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
26551
26552 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
26553
26554         * class.h class.c (mono_class_is_subclass_of): New function.
26555         
26556         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
26557         routines for most common case (calls from ArrayList::ToArray).
26558
26559         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
26560         routine so programs which call Environment::Exit() can be profiled.
26561
26562         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
26563         Added MONO_ARCH_SAVE_REGS.
26564
26565         * icall.c (ves_icall_type_is_subtype_of): Use new function.
26566
26567 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
26568
26569         * blob.h: Add a couple of new MonoType types definitions.
26570
26571         * tabledefs.h: Add a couple of new call convs.
26572
26573 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
26574
26575         * reflection.h (MonoReflectionDynamicAssembly): track changes in
26576         the layout of the class.
26577
26578         * reflection.c (alloc_table): double the size on overflow to avoid
26579         unnecessary copying.
26580
26581         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
26582         avoid filling out metadata tables and blobs. Also set mb->ilgen to
26583         null so it can be garbage collected.
26584         
26585 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
26586
26587         * reflection.c (mono_reflection_get_type): Return the resolved type
26588         only if it is in the assembly we searched.
26589
26590         * reflection.c (ensure_runtime_vtable): Initialize method slots.
26591
26592         * class.c (mono_class_setup_vtable): Set the slot of the overriding
26593         method.
26594
26595 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26596
26597         * appdomain.c:
26598         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
26599         the right one is 'file:///blah', but MS allows it.
26600         * assembly.c:
26601         (mono_assembly_open): allow 'file://blah'
26602
26603         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
26604
26605 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
26606
26607         * socket-io.c: fixes bug #40310.
26608
26609 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
26610
26611         * reflection.c (mono_reflection_parse_type): handle deeply nested
26612         types correctly.
26613
26614         * reflection.c (mono_image_create_token): Use unique token values
26615         since they will be put into a hash table.
26616
26617         * class.c (mono_class_setup_vtable): If a method occurs in more than
26618         one place in the vtable, and it gets overriden, then change the
26619         other occurances too.
26620
26621         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
26622         object as return type.
26623
26624 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26625
26626         * icall.c: Deleted "ToString" implementation for double and float
26627         because they are full implemented in managed code.
26628
26629 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26630
26631         * reflection.c, reflection.h: implemented and exported functions
26632         to retrieve info about custom attributes.
26633
26634 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26635
26636         * appdomain.c: moved Uri handling to assembly.c
26637         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
26638         work when using a file Uri in *nix and windows.
26639
26640         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
26641         GetReferencedAssemblies.
26642
26643 2003-03-18  Dick Porter  <dick@ximian.com>
26644
26645         * icall.c: Rename a couple of internal calls
26646
26647         * threads.c: Set the thread state to Stopped when a thread exits.
26648         Fixes bug 39377.
26649
26650 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
26651
26652         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
26653         New icall.
26654
26655         * object.c (mono_class_vtable): fix warning.
26656
26657 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
26658
26659         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
26660
26661         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
26662         memory.
26663         (method_encode_clauses): Create exception info structures in the right
26664         order.
26665         (mono_reflection_setup_internal_class): Initialize supertypes field.
26666
26667         * class.c object.c: Handle interfaces which implement other interfaces 
26668         correctly.
26669
26670         * class.h class.c: Move the supertypes array initialization code into 
26671         a separate function so it can be used for dynamic types too. Also call
26672         it earlier, in mono_class_init(), since it can be used before the
26673         type is initialized.
26674
26675 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26676
26677         * Makefile.am:
26678         * assembly.c:
26679         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
26680
26681         * appdomain.c:
26682         * appdomain.h:
26683         * marshal.c:
26684         * object.c: remove warnings.
26685
26686 2003-03-13  Martin Baulig  <martin@ximian.com>
26687
26688         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
26689         (MonoDebugLexicalBlockEntry): New types.
26690
26691         * debug-mono-symfile.c
26692         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
26693
26694 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26695
26696         * process.c: ret can be any non-zero value accroding to MS doc.
26697
26698 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
26699
26700         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
26701         fixing a warning for a miss-used prototype, would have cause
26702         random memory corruption.
26703
26704 2003-03-07  Martin Baulig  <martin@ximian.com>
26705
26706         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
26707         getting really annoying ....
26708
26709 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
26710
26711         * reflection.c (fixup_method): added support for array methods.
26712
26713 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
26714
26715         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
26716         (pointed out by Michael Adams).
26717
26718 2003-03-04  Dick Porter  <dick@ximian.com>
26719
26720         * icall.c: Temporarily reverted the Double and Single ToString()
26721         change, because it broke nunit.
26722
26723 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
26724
26725         * object.h, threads.h: make include files compatible with C++
26726         (patch by Jerome Laban <jlaban@wanadoo.fr>).
26727
26728 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26729
26730         * icall.c: Erased ToString helper functions for Double and Single.
26731         Now, that implementations ar all in managed code (Double and Single
26732         Formatters).
26733
26734 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
26735
26736         * appdomain.c: Added method for initializing the default context of
26737         a domain. Added internal call for getting the default context.
26738         * appdomain.h: Added context variable in MonoDomain struct.
26739         * domain.c: mono_domain_set also sets the default context of the domain
26740         * icall.c: Mapped internal method InternalGetDefaultContext.
26741         * object.c: mono_object_get_virtual_method returns always a remoting
26742         wrapper if the object is a transparent proxy.
26743         mono_runtime_invoke_array: when creating an object by calling the
26744         constructor, if the created object is a proxy, then the constructor should
26745         be called using the a remoting wrapper.
26746
26747 2003-03-03  Dick Porter  <dick@ximian.com>
26748
26749         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
26750         variable so it compiles on solaris.  Problem spotted by
26751         Christopher Taylor <ct@cs.clemson.edu>
26752
26753 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26754
26755         * appdomain.c:
26756         (get_info_from_assembly_name): don't leak value.
26757
26758         * icall.c:
26759         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
26760         result.
26761
26762 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
26763
26764         * assembly.c: export mono_image_load_references ().
26765         * class.c: handle function pointers. mono_class_from_name() now
26766         supports nested type names directly.
26767
26768 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
26769
26770         * reflection.h reflection.c: Encode already created dynamic methods 
26771         and fields correctly as a DEF instead of a REF.
26772
26773         * reflection.c: Get rid of the force_ref argument to 
26774         mono_image_typedef_or_ref since it was wrong in the first place.
26775
26776         * string-icalls.c: add error checking to string constructors according
26777         to the MSDN docs.
26778
26779         * reflection.c: Emit types in the order their TypeBuilders were 
26780         created. Previously, a new table index was assigned to each type before
26781         the tables were emitted. This was wrong because the signature blob
26782         might already refer to a type by its original table index.
26783
26784 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
26785
26786         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
26787         change.
26788         
26789 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26790
26791         * Makefile.am: make assemblies dir have \ instead of / on windows.
26792
26793 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
26794
26795         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
26796         iterate over the NESTEDCLASS table using a linear search since the
26797         table is not guaranteed to be sorted by the secondary key.
26798
26799         * class.c (mono_class_create_from_typedef): fixed up call to
26800         mono_metadata_nesting_typedef.
26801         
26802 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
26803
26804         * marshal.c (mono_string_to_byvalstr): clear the memory as
26805         suggested by Jerome Laban <jlaban@wanadoo.fr>
26806
26807 2003-02-26  Dick Porter  <dick@ximian.com>
26808
26809         * process.c: Cope with padding in .rsrc blocks
26810
26811 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26812
26813         * metadata.h: reverted the filter_len change, it breaks reflection
26814         
26815 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26816
26817         * metadata.h: added a new field to store the filter_len
26818         
26819
26820 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
26821
26822         * reflection.c: handle custom attributes for types and members
26823         created with Reflection.Emit (bug#38422).
26824
26825 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
26826
26827         * reflection.c: define RTSpecialName automatically for constructors for
26828         compatibility with MS.NET.
26829
26830         * reflection.c (mono_reflection_create_runtime_class): initialize
26831         nested_in field of dynamically created classes.
26832
26833 2003-02-22  Martin Baulig  <martin@ximian.com>
26834
26835         * debug-mono-symfile.h: Incremented version number.
26836
26837 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
26838
26839         * object.h icall.c process.c: fix warnings.
26840
26841 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
26842
26843         * appdomain.h appdomain.c:
26844         (mono_domain_try_type_resolve): split the 
26845         name_or_tb argument into a name and a tb argument.
26846         (mono_domain_has_type_resolve): new function to check whenever the
26847         application has registered a TypeResolve event handler.
26848         
26849         * icall.c reflection.h reflection.c: move the type resolve logic into
26850         mono_reflection_get_type () so it will be invoked when 
26851         Assembly::GetType () is called.
26852
26853         * reflection.c:
26854         (mono_reflection_get_type): renamed to get_type_internal.
26855         (mono_reflection_get_type): fixed type name generation so it works 
26856         for nested types too.
26857         (mono_reflection_get_type): call has_type_resolve () to avoid the 
26858         costly type name generation if there is no resolve event handler.
26859
26860 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26861
26862         * class.c, image.c: load exported types from file references.
26863
26864 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
26865
26866         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
26867           used to cache the managed methods used to create proxies and make 
26868           remote invocation of methods.
26869         * class.h: Added in MonoVTable a flag to indicate that a class needs 
26870           to be remotely created.
26871         * object.c: Modified the method mono_class_vtable(). It now initializes 
26872           the remote flag of the vtable. Modified mono_object_new_specific(), 
26873           so now it checks the remote flag.
26874         * icall.c: Added a couple of internal methods, one for enabling instance 
26875           creation interception for a type, and one for creating objects bypassing
26876           the remote check.
26877
26878 2003-02-18  Martin Baulig  <martin@ximian.com>
26879
26880         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
26881         New interncall to get a method's metadata token.
26882
26883         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
26884         New interncall for the debugger.
26885
26886 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
26887
26888         * class.c (mono_class_setup_vtable): allocate supertype array
26889
26890 2003-02-18  Martin Baulig  <martin@ximian.com>
26891
26892         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
26893
26894 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26895
26896         * reflection.c:
26897         (assembly_name_to_aname): jump over unknown properties (i've found
26898         something like: 'type, assembly, version=xxx, custom=null, public...',
26899         so now will ignore custom=null and still get the rest of the values).
26900
26901 2003-02-17  Dick Porter  <dick@ximian.com>
26902
26903         * threads.c: Have Thread.Start() wait for a semaphore to signal
26904         that the thread has set up all its local data.  This fixes bug
26905         34323, where Abort() raced the new thread's TLS data.
26906
26907         Also removes the handle_store() call from start_wrapper, because
26908         threads are now always created suspended and there is no longer a
26909         race between the parent and child threads to store the info.
26910
26911 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
26912
26913         * image.c: explain the #- heap issue in a message, hopefully
26914         avoiding FAQs on mono-list.
26915
26916 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26917
26918         * icall.c:
26919         (GetEntryAssembly): if the domain has not invoked
26920         AppDomain.ExecuteAssembly yet, return the assembly of the default
26921         AppDomain.
26922
26923 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
26924
26925         * class.c (mono_ldtoken): make it work in dynamic assemblies.
26926
26927 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
26928
26929         * metadata.c, reflection.c: simple speedup to type hash
26930         and equals code.
26931
26932 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
26933
26934         * image.c, image.h, class.c, assembly.c: move module loading
26935         to MonoImage. When loading metadata, consider alignemnet from
26936         the start of metadata, not from the metadata address in memory.
26937
26938 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
26939
26940         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
26941         AssemblyBuilder objects. Factored out custom attribute creation into
26942         a separate function.
26943         (create_custom_attr): new function to create custom attributes.
26944
26945 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
26946
26947         * Makefile.am: Got tired of typing the full pathname to pedump.
26948         Until there is another option, am installing this.
26949
26950 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
26951
26952         * class.c (class_compute_field_layout): always set field->parent 
26953         (mono_ldtoken): use mono_defaults.fieldhandle_class;
26954
26955 2003-02-11  Dick Porter  <dick@ximian.com>
26956
26957         * threads-types.h:
26958         * monitor.c: Rewrote Monitor, making lock much faster and
26959         Pulse/Wait work as specified.  Also uses much fewer handles, and only
26960         creates them as needed.
26961
26962         * exception.c: Added SynchronizationLockException
26963
26964         * threads.c: Deleted old Monitor implementation.  The new one is
26965         in a new file.
26966
26967 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
26968
26969         * class.c: handled TypedReference type code. Set the correct size for
26970         class data. Setup interface_offsets for interface classes, too.
26971
26972 2003-02-09  Martin Baulig  <martin@ximian.com>
26973
26974         * debug-mono-symfile.h: Reflect latest symbol writer changes.
26975
26976 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
26977
26978         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
26979         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
26980         * object.c: fixed mono_object_get_virtual_method () for interfaces.
26981         * verify.c: check for code that runs after the end of the method.
26982
26983 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26984
26985         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
26986         "System.Math::Round2".
26987         * sysmath.h: Added Floor, Round and Round2 definitions.
26988         * sysmath.c: Modified certain functions that were not 100% compliant
26989         with MS.NET (math precision) and added the implementation of Floor,
26990         Round and Round2.
26991
26992 2003-02-07  Martin Baulig  <martin@ximian.com>
26993
26994         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
26995
26996 2003-02-07  Martin Baulig  <martin@ximian.com>
26997
26998         * debug-mono-symfile.c: Reflected latest symwriter changes.
26999         (mono_debug_create_mono_symbol_file): Removed.
27000         (mono_debug_open_mono_symbol_file): Take an argument which
27001         specifies whether to create a dynamic symbol file.
27002
27003 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
27004
27005         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
27006
27007 2003-02-05  Martin Baulig  <martin@ximian.com>
27008
27009         * reflection.c (mono_image_build_metadata): Make this public,
27010         protect it against being called multiple times, don't create
27011         resources and don't build the compressed metadata here.
27012         (mono_image_create_pefile): Do this here.
27013
27014         * icall.c
27015         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
27016
27017 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27018
27019         * socket-io.c: fixed bug #36322.
27020
27021 2003-02-06  Piers Haken <piersh@friskit.com>
27022
27023         * appdomain.[ch]:
27024         * class.h:
27025         * debug-mono-symfile.c:
27026         * icall.c:
27027         * loader.c:
27028         * mono-config.c:
27029         * monosn.c:
27030         * reflection.c:
27031         * socket-io.c: warning cleanups
27032
27033 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
27034
27035         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
27036         function. works like remoting invoke, but does a check for the Proxy first.
27037
27038 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
27039
27040         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
27041
27042 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
27043
27044         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
27045         array of pointers.
27046         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
27047         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
27048
27049         * object.c (mono_store_remote_field_new): used by the new jit
27050         instead of mono_store_remote_field
27051         (mono_load_remote_field_new): used by the new jit
27052         instead of mono_load_remote_field
27053
27054 2003-02-05  Patrik Torstensson
27055
27056         * appdomain.c: changed unload to take the domain id instead
27057         of domain
27058         
27059         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
27060
27061
27062 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27063
27064         * appdomain.c: don't look for assemblies in ApplicationBase if
27065         PrivateBinPathProbe is set.
27066
27067 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27068
27069         * object.c: make the first argument in main_args contain the absolute
27070         path to the assembly. Fixes bug #37511.
27071
27072 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27073
27074         * icall.c: get correct UTC offset for countries not using daylight
27075         time saving. Fixes bug #30030.
27076
27077 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27078
27079         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27080         and 1 are the family).
27081
27082 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27083
27084         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27085
27086         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27087
27088 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27089
27090         * reflection.c: added support for SignatureHelper tokens, which is
27091         needed by the Calli opcode.
27092
27093         * reflection.h: track changes to SignatureHelper class.
27094
27095         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27096
27097 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27098
27099         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27100
27101 2003-02-03  Patrik Torstensson
27102         * appdomain.[c|h], domain.c : 
27103          - Added support for getting a domain via domain id
27104          - Support for setting and getting domain from System.AppDomain 
27105            (used in cross appdomain channel)
27106          - Added support for get/set for a MonoAppContext on a thread 
27107            (Context class in System.Runtime.Remoting.Contexts),
27108          - Removed hack in Get/SetData and ExecuteAssembly.
27109         
27110         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27111         the managed world to get control when a proxy is created.
27112
27113         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27114         
27115 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27116
27117         * icall.c
27118         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27119         Populate the codebase field as well.
27120
27121 2003-02-02  Martin Baulig  <martin@ximian.com>
27122
27123         * debug-mono-symfile.c
27124         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27125         (mono_debug_symfile_add_method): Allow interncalls.
27126
27127 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27128
27129         * icall.c: throw parse exception if strtod fails or the string is empty.
27130
27131 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27132
27133         * marshal.c: handle object type separately from defined
27134         class types.
27135
27136 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27137
27138         * marshal.c: handle NATIVE_LPSTR for strings when it's
27139         explicitly specified.
27140
27141 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27142
27143         * reflection.c, reflection.h, icall.c: setup the reflection
27144         handle cache for ModuleBuilders and AssemblyBuilders.
27145
27146 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27147
27148         * reflection.c (reflection_methodbuilder_to_mono_method): set
27149         pinvoke flag
27150
27151 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27152
27153         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27154
27155 2003-01-29  Dick Porter  <dick@ximian.com>
27156
27157         * threads.c: No need for the fake_thread kludge now that Thread
27158         doesn't run a class constructor
27159         
27160 2003-01-29  Dick Porter  <dick@ximian.com>
27161
27162         * threads.c: Use g_direct_hash instead of the rather bogus
27163         g_int_hash
27164
27165 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27166
27167         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27168         (fix pinvoke12.exe)
27169         (mono_marshal_get_struct_to_ptr): generate valid IL code
27170         (mono_marshal_get_ptr_to_struct): generate valid IL code
27171         (*): correctly set sig->pinvoke, we need to memdup the signature
27172         to do that
27173
27174 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27175
27176         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27177         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27178
27179 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27180
27181         * profiler.c: provide more callers information.
27182
27183 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27184
27185         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27186
27187         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27188
27189         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27190
27191 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27192
27193         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27194         exception instead of going into an infinite loop on dates which it 
27195         can't yet handle.
27196
27197         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27198         out-of-range exception if needed.
27199
27200         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27201         an implementation for an interface method and to override an inherited
27202         method at the same time. 
27203         Imagine a scenario when a virtual method is used to override a
27204         virtual abstract method in a parent class, and this same method 
27205         provides an implementation for an method inherited from an interface. 
27206         In this case, the interface resolution code will set im->slot, which 
27207         means that the virtual method override pass will skip this method 
27208         which means a pointer to the abstract method inherited from the parent
27209         will remain in the vtable of this non-abstract class.
27210
27211         * class.c: (mono_class_setup_vtable): continue search for a real 
27212         method if only an abstract method is found.     
27213
27214 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27215
27216         * reflection.c: add size to encoding for ByValStr and ByValArray
27217         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27218
27219 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27220
27221         * class.c (mono_class_setup_vtable): pass the override info as an
27222         argument.
27223
27224         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27225         correctly.
27226         
27227         * reflection.c (ensure_runtime_vtable); add support for method 
27228         overrides.
27229         
27230 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27231
27232         * reflection.c (resolution_scope_from_image): Hack to work to work with
27233         dynamic assemblies.
27234
27235         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27236         added a 'force_ref' argument to force this function to allways return 
27237         a TypeRef. This is needed by mono_image_get_memberref_token ().
27238         
27239 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27240
27241         * reflection.c (mono_image_get_type_info): interfaces really don't have
27242         a parent.
27243
27244         * reflection.c (mono_image_basic_init): fill out missing fields of
27245         image structure.
27246
27247         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27248         dynamic assemblies. This is required so dynamic assemblies show up in
27249         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27250         Type::GetType() etc. This is consistent with MS behaviour.
27251
27252         * image.c image.h reflection.c: add newly created classes to the name 
27253         cache so mono_class_get () will find them.      
27254
27255 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27256
27257         First part of changes to get IKVM.NET running under mono.
27258         
27259         * appdomain.h, appdomain.c: added new function 
27260         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27261         This function will call AppDomain::DoTypeResolve to do the actual work.
27262
27263         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27264         moved existing code dealing with dynamic tokens to a new function 
27265         called mono_reflection_lookup_dynamic_token (). This function will 
27266         raise TypeResolve events when appropriate. Since reflection.c is not 
27267         part of libmetadata, a new hook function called 
27268         mono_lookup_dynamic_token() is added to class.c which will call this.
27269
27270         * assembly.h assembly.c: make the invoke_load_hook function public,
27271         so it can be called for dynamic assemblies.
27272
27273         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27274
27275         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27276         type isn't found.
27277
27278         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27279         MonoGHashTable, since it contains pointers to objects which the GC 
27280         needs to track.
27281
27282         * assembly.c (search_loaded): remove unused variable.
27283         
27284 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27285
27286         * object.c: fixed issue exposed by gcc-generated IL programs
27287         that use RVA data for pointers.
27288
27289 2003-01-25  Martin Baulig  <martin@ximian.com>
27290
27291         * threads.c (start_wrapper): Moved the initialization of
27292         `start_func' above the mono_new_thread_init() call to which we
27293         pass it as argument.
27294
27295 2003-01-24  Martin Baulig  <martin@ximian.com>
27296
27297         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27298         the MonoThread pointer.
27299
27300 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27301
27302         * icall.c: Rename `PowImpl' to Pow.
27303
27304 2003-01-23  Dick Porter  <dick@ximian.com>
27305
27306         * threads.c (start_wrapper): Create a Thread object if needed, so
27307         the Main() thread can do the class initialisation in a subthread
27308         that has been set up to allow managed code execution.
27309
27310         Pass the thread ID instead of the MonoThread pointer to the thread
27311         start and attach callbacks.  This change is required, because the
27312         jit thread start callback must be called _before_ the Thread
27313         object can be created.
27314         
27315         (mono_thread_init): Removed much object creation code that is no
27316         longer needed.  No managed code is called from here now.
27317
27318         * object.c (mono_runtime_exec_managed_code): Create a subthread
27319         for Main, and call back to the runtime to use it.
27320         Set the exit code when Main exits.
27321
27322         * gc.c: Make sure domain finalisation happens in a subthread.
27323         Re-enable threaded GC, fixing bug 31333 (again).
27324
27325         * environment.c: System.Environment internall calls (so far just
27326         ExitCode is here, the others are still in icall.c)
27327
27328         * appdomain.c (mono_runtime_cleanup): All threads running managed
27329         code should have finished before mono_runtime_cleanup() is
27330         reached, so no need to clean up threads.
27331
27332 2003-01-22  Martin Baulig  <martin@ximian.com>
27333
27334         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27335         `gpointer func' arguments.      
27336         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27337         but added `MonoThread *thread' argument.
27338         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27339
27340         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27341         and pass it to the mono_thread_start_cb callback.
27342         (mono_install_thread_callbacks): New public function to install a
27343         set of callbacks which are set by the debugger.
27344         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27345
27346 2003-01-22  Martin Baulig  <martin@ximian.com>
27347
27348         * Makefile.am: Install debug-mono-symfile.h.
27349
27350 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27351
27352         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27353
27354 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27355
27356         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27357         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27358         (mono_array_class_get): correctly set access levels of arrays
27359
27360 2003-01-20      Patrik Torstensson
27361         * image.h (MonoAssemblyName): changed major, minor, build, revision
27362         from signed to unsigned.
27363
27364 2003-01-20  sean kasun <skasun@azstarnet.com>
27365
27366         * reflection.c (load_cattr_value): Now this handles
27367         MONO_TYPE_SZARRAY.  Fixes bug #35629
27368
27369 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27370
27371         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27372         integer value
27373
27374 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27375
27376         * decimal.c: fixed bug #26056.
27377
27378 2003-01-17  Martin Baulig  <martin@ximian.com>
27379
27380         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27381
27382 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27383
27384         * exception.[ch]:
27385         (mono_get_exception_type_initialization): new function.
27386
27387         * object.c: throw a TypeInitializationException when an exception is
27388         thrown invoking the class constructor.
27389
27390 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27391
27392         * reflection.c: fixed attribute reading.
27393
27394 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27395
27396         * icall.c:
27397         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
27398         provided, look for the type in the calling assembly and then in
27399         mscorlib; if the assembly name is provided, only try that one.
27400
27401 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
27402
27403         * object.c: register the vtable before there is a chance it's
27404         queried again recursively.
27405
27406 2003-01-13  Duncan Mak  <duncan@ximian.com>
27407
27408         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
27409         gc-internal.h. 
27410         
27411 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
27412
27413         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
27414
27415 2003-01-11  Martin Baulig  <martin@ximian.com>
27416
27417         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
27418         this to 20 for the release.
27419
27420 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
27421
27422         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
27423
27424         * loader.c (mono_method_get_marshal_info): bug fix
27425
27426         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
27427         structures with explicit layout
27428
27429 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27430
27431         * profiler.c: made the output more readable (and sorted). 
27432         Added caller information for the allocation profiler.
27433
27434 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
27435
27436         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
27437
27438 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27439
27440         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
27441         to get value types.
27442         
27443 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
27444
27445         * object.c, profiler.h, profiler.c, profiler-private.h:
27446         Added object allocation profiler.
27447
27448 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
27449
27450         * reflection.h, reflection.c: handle global methods.
27451         Compress blob entries.
27452
27453 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
27454
27455         * marshal.c: fix compilation.
27456
27457 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
27458
27459         * loader.c (mono_method_get_marshal_info): impl.
27460
27461         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
27462
27463 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27464
27465         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
27466         for reference types.
27467
27468 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
27469
27470         * loader.c: fixed off by one error in loaded parameter names.
27471
27472 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
27473
27474         * marshal.c (mono_marshal_get_icall_wrapper): like
27475         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
27476         instead of a MonoMethod.
27477
27478 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27479
27480         * decimal.c: fixed bug #36537.
27481
27482 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
27483
27484         * marshal.c: throw a missing method exception if a
27485         P/Invoke method is not found.
27486
27487 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27488
27489         * icall.c: allow a null this for constructors.
27490
27491 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
27492
27493         * icall.c: raise the proper exceptions if the arguments to the
27494         internal Invoke are incorrect.
27495
27496 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
27497
27498         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
27499
27500 2003-01-03  Martin Baulig  <martin@ximian.com>
27501
27502         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27503
27504 2002-12-31  Martin Baulig  <martin@ximian.com>
27505
27506         * debug-mono-symfile.c: Completely rewrote the type section.
27507         Instead of using individual malloc()ed fields, we use one big
27508         continuous memory area and offsets into this area.
27509         See the comments in the source code for details.
27510
27511 2002-12-30  Martin Baulig  <martin@ximian.com>
27512
27513         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
27514
27515 2002-12-30  Martin Baulig  <martin@ximian.com>
27516
27517         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
27518         line number table in this data blob instead of using an external
27519         pointer.
27520
27521 2002-12-28  Martin Baulig  <martin@ximian.com>
27522
27523         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27524
27525 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
27526
27527         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
27528         as a boxed return type.
27529
27530 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
27531
27532         * appdomain.c
27533         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
27534         g_build_filename to properly get separators on the filename created.
27535
27536         * object.h: Small change, introduce MonoMarshalByRefObject to
27537         track the layout of that structure in the C# universe as we make
27538         changes there.
27539
27540 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
27541
27542         * object.c: removed assert to allow static fields on interfaces.
27543         * loader.c: a TypeSpec may be used for any type, not just arrays.
27544
27545 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27546
27547         * class.c, class.h: added mono_class_array_element_size ().
27548         Ignore static methods in interfaces.
27549
27550 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27551
27552         * threads.c: fixed the build under cygwin.
27553
27554 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27555
27556         * reflection.c: handle nullref constants. Allocate keys for
27557         reflection handles with the GC.
27558
27559 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27560
27561         * threads.c, threads.h: added mono_thread_get_abort_signal()
27562         to get a suitable signal for thread abort.
27563
27564 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27565
27566         * metadata.c: fix handling of ExportedType table.
27567
27568 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27569
27570         * icall.c: added WriteWindowsDebugString internal call.
27571
27572 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27573
27574         * reflection.h: added fields to match C# implementation.
27575
27576 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27577
27578         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
27579
27580 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
27581
27582         * gc.h, gc-internal.h: Rename header for GC internal calls to
27583         gc-internal.h from gc.h as to not clash with Boehm GC having its
27584         header installed as <gc.h> in outside include paths.
27585         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
27586         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
27587
27588 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27589
27590         * icall.c: assign minor, build and revision in FillName.
27591
27592 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
27593
27594         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
27595         Added support for running code generated by Reflection.Emit.
27596
27597 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27598
27599         * appdomain.c: check for NULL argument in LoadFrom.
27600
27601 2002-12-10  Dick Porter  <dick@ximian.com>
27602
27603         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
27604
27605 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27606
27607         * appdomain.c: fix buglet when building exe file name.  Handle full
27608         assembly name (needed after latest changes to AssemblyName).
27609         * image.c:
27610         (mono_image_close): free some hashtables.
27611
27612 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
27613
27614         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
27615         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
27616         on some systems (redhat 7.3) 
27617
27618 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
27619
27620         * threads.c: delete the critical section of a sync block,
27621         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
27622
27623 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
27624
27625         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
27626
27627 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27628
27629         * appdomain.[ch]: handle the assembly preload event to try loading the
27630         assemblies using the paths we have in the current domain.
27631
27632         * assembly.[ch]: created an assembly preload hook that is called to try
27633         loading the assembly by other means that the ones provided here.
27634
27635         * domain.c: initialize the domain search path.
27636
27637         From now on, assemblies (TODO: except corlib and System) are loaded
27638         according to these rules when using mono_assembly_load ():
27639
27640                 1. It tries to load the assembly from the ApplicationBase
27641                 of the current domain appending .dll and .exe (TODO: have to
27642                 try loading from name/name.dll and name/name.exe).
27643
27644                 2. It tries the search path specified in PrivateBinPath for the
27645                 current domain (if any).
27646
27647                 3. Previous behavior.
27648
27649 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
27650
27651         * icall.c: implemented GetInterfaceMap() related icall.
27652         * domain.c, loader.h: load MethodInfo in mono_defaults.
27653
27654 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27655
27656         * gc.c: disable the finalizer thread for now, untill all the issues
27657         with it are resolved.
27658
27659 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27660
27661         * string-icalls.c: handle embedded nulls in string ctor when the
27662         length is specified.
27663
27664 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
27665
27666         * class.c: look for explicit interface implementation in parent
27667         classes, too.
27668
27669 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
27670
27671         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
27672
27673 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
27674
27675         * gc.c: protect handles with a critical section.
27676
27677 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27678
27679         * icall.c:
27680         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
27681         parameters. If no assembly specified, try getting the type from all
27682         the assemblies in the current domain, else, load the assembly and get
27683         the type from it.
27684
27685 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27686
27687         * marshal.c: applied patch from Aleksey Demakov that fixes
27688         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
27689
27690 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27691
27692         * icall.c: fixed get_location.
27693
27694 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
27695
27696         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
27697         declarations to make it work with older gcc. 
27698
27699         * loader.c (mono_get_method): set signature->pinvoke for native calls
27700
27701 2002-11-20  Dick Porter  <dick@ximian.com>
27702
27703         * threads.c (mono_thread_init): Set the main thread's handle
27704
27705 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
27706
27707         * gc.c: allow compilation without GC support. Changed to match the
27708         mono coding style.
27709
27710 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
27711
27712         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
27713
27714 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
27715
27716         * reflection.c: set a public key token on the core assemblies.
27717
27718 2002-11-18  Dick Porter  <dick@ximian.com>
27719
27720         * threads.c: Split out some thread initialisation so that other
27721         files can set the start callback function.
27722
27723         * gc.c: Run finalisers in a separate thread, to avoid stack
27724         overflow.  Fixes bug 31333.
27725
27726         * appdomain.c: Set up GC finalisation thread.
27727
27728         * reflection.c: 
27729         * object.c: 
27730         * domain.c: Use gc.h macros for GC_malloc
27731         
27732 2002-11-15  Dick Porter  <dick@ximian.com>
27733
27734         * threadpool.c: 
27735         * threads.c:
27736         * appdomain.c: Removed mono_runtime_init_with_attach(),
27737         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
27738         merging the extra parameter with the existing function.  Removed
27739         unneeded code in mono_thread_attach().
27740
27741 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
27742
27743         * image.c (mono_image_loaded_by_guid): a method to get loaded
27744         images by guid. 
27745         (load_metadata_ptrs): we store the guid as string.
27746
27747 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
27748
27749         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
27750
27751         * metadata.c (mono_guid_to_string): imported method form Zoltan
27752         Varga (slightly modified)
27753
27754         * assembly.c (mono_assembly_open): load precompiled code
27755
27756         * loader.h (MonoMethod): we store the method token for use in the
27757         aot compiler. 
27758
27759 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27760
27761         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
27762         the hook function called when an assembly is loaded.
27763         
27764         * domain.c: Modified file.
27765         (mono_domain_assembly_load): removed hash table insertion of assemblies.
27766
27767         Fixes bug #33196.
27768
27769 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
27770
27771         * reflection.c: Map PEFileKind to the value expected by the WinNT
27772         image loader. 
27773
27774 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27775
27776         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
27777         Read until the buffer is filled completely.
27778
27779 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27780
27781         * icall.c: implemented MonoType.InternalGetEvent ().
27782
27783 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27784
27785         * appdomain.c: implemented InitAppDomainSetup. Delayed
27786         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
27787         the entry_assembly.
27788
27789         * assembly.c: base_dir is now an absolute path ending with
27790         G_DIR_SEPARATOR.
27791
27792         * icall.c: modified get_location according to the above changes.
27793
27794         * object.c: init AppDomain.SetupInformation for the default domain after
27795         we have the entry assembly.
27796
27797         * domain.c: when unloading a domain, setup = NULL.
27798
27799 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
27800
27801         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
27802
27803 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
27804
27805         * object.h, object.c: introduced mono_object_get_virtual_method ()
27806         to lookup the method invoked on an object when a callvirt is done on
27807         a method.
27808         * icall.c: make MethodInfo::Invoke() always do a virtual call.
27809
27810 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27811
27812         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
27813         current domain when loaded an assembly and failed to load it.
27814
27815         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
27816
27817 2002-10-31  Dick Porter  <dick@ximian.com>
27818
27819         * icall.c: 
27820         * file-io.h: 
27821         * file-io.c: Return the error status in a parameter, as the
27822         GetLastError() value has long since been blown away if we try and
27823         look it up in a subsequent internal call invocation.  Delete the
27824         GetLastError() internal call, because it's useless.
27825
27826 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
27827
27828         * class.[ch]: added cast_class to fix bug 29517
27829
27830 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
27831
27832         * marshal.c: create valid IL code in the filter clause:
27833         the new JIT is less forgiving:-)
27834
27835 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27836
27837         * icall.c: removed get_property internal call.
27838
27839 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
27840
27841         * appdomain.h domain.c: Added an ID to appdomains.
27842         
27843         * threads.c threads.h icall.c: Implement icall
27844         Thread:GetDomainID(), and remove unused icall 
27845         CurrentThreadDomain_internal.
27846
27847 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27848
27849         * icall.c: Don't recurse through the base types in GetConstructor.
27850         Fixes bug #32063. 
27851
27852 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
27853
27854         * mempool.h, mempool.c: added mono_mempool_empty() and
27855         mono_mempool_stats().
27856
27857 2002-10-23  Dick Porter  <dick@ximian.com>
27858
27859         * file-io.c: 
27860         * file-io.h: 
27861         * icall.c: Added MonoIO.GetFileType internal call
27862
27863 2002-10-17  Dick Porter  <dick@ximian.com>
27864
27865         * appdomain.c (mono_runtime_cleanup): Don't signal the async
27866         delegate semaphore before waiting for all threads to finish,
27867         because new threads can also call async delegates.  Fixes bug
27868         32004.
27869
27870         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
27871         of 3 seconds, in case another async job is queued.  (This part is
27872         needed because the bug fix reintroduced the 3s exit lag.)  This
27873         makes the mono_runtime_shutdown flag superfluous.
27874
27875 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
27876
27877         * reflection.c: include ehader size in method section headers.
27878         Really check for suplicated modules entries.
27879
27880 2002-10-17  Martin Baulig  <martin@gnome.org>
27881
27882         * debug-mono-symfile.c: Added back support for locals.
27883
27884 2002-10-14  Martin Baulig  <martin@gnome.org>
27885
27886         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
27887         MONO_TYPE_VOID.
27888
27889 2002-10-14  Martin Baulig  <martin@gnome.org>
27890
27891         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
27892         mono_class_get() instead of looking in the class cache. 
27893
27894 2002-10-13  Martin Baulig  <martin@gnome.org>
27895
27896         * debug-mono-symfile.c: Set version number to 28, include the
27897         signature in method names.
27898
27899 2002-10-13  Martin Baulig  <martin@gnome.org>
27900
27901         * debug-mono-symfile.h: Set version number to 27.
27902
27903 2002-10-11  Martin Baulig  <martin@gnome.org>
27904
27905         * gc.c: Don't register/unregister NULL pointers as disappearing links.
27906
27907 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
27908
27909         * metadata.c, metadata.h: added helper function to allocate signatures.
27910
27911 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27912
27913         * icall.c: added internal call to get the location of machine.config.
27914
27915 2002-10-08  Martin Baulig  <martin@gnome.org>
27916
27917         * debug-mono-symfile.c: Ignore classes with a pending init for the
27918         moment.
27919
27920 2002-10-03  Dick Porter  <dick@ximian.com>
27921
27922         * threads.c: Freebsd pthread_t is a pointer
27923
27924 2002-10-03  Dick Porter  <dick@ximian.com>
27925
27926         * socket-io.c: Implemented GetHostName_internal
27927
27928 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27929
27930         * mono-config.c:
27931         (mono_config_parse_file): don't leak the text.
27932
27933 2002-10-02  Martin Baulig  <martin@gnome.org>
27934
27935         * debug-mono-symfile.c: Added support for methods.
27936
27937 2002-10-01  Martin Baulig  <martin@gnome.org>
27938
27939         * debug-mono-symfile.c: Don't emit methods and line numbers for
27940         the dynamic symbol file, just write the type table.  We can easily
27941         have an external helper program which creates a symbol file for an
27942         IL file.        
27943
27944 2002-10-01  Dick Porter  <dick@ximian.com>
27945
27946         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
27947         Only add the handle to the cleanup array when we're about to
27948         launch the thread.  Bug 31425 deadlocked when the test was run on
27949         mono under w32.
27950
27951 2002-10-01  Martin Baulig  <martin@gnome.org>
27952
27953         * debug-mono-symfile.c: Added support for properties.
27954
27955 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
27956
27957         * reflection.c: unaligned store fix from Mark Crichton
27958         <crichton@gimp.org>.
27959
27960 2002-09-27  Martin Baulig  <martin@gnome.org>
27961
27962         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
27963         New interncall.
27964
27965 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
27966
27967         * assembly.h, assembly.c: use a sane API to hook into the assembly
27968         loading process instead of a useless special-purpouse hack
27969         (ngen needs a hook, too, for example).
27970
27971 2002-09-27  Dick Porter  <dick@ximian.com>
27972
27973         * threads.c (mono_thread_init): Call GetCurrentProcess() so
27974         io-layer can set up some process handle info.  Not needed on w32,
27975         but doesn't hurt either.
27976
27977         * process.c: Pass the program name in the second parameter to
27978         CreateProcess, so the path is searched.  Include the working
27979         directory. Implemented process name, process enumeration, and some
27980         process detail internal calls.
27981         
27982         * icall.c: Added internal calls for process lookup, and some
27983         process details
27984
27985 2002-09-26  Martin Baulig  <martin@gnome.org>
27986
27987         * assembly.c (mono_install_open_assembly_hook): New global
27988         function to install a function to be invoked each time a new
27989         assembly is loaded.
27990         (mono_assembly_open): Run this callback function if set.
27991
27992         * debug-mono-symfile.c: Put back line numbers for the dynamic
27993         symbol file and also record the .il file as source file.  This
27994         allows us to install the temporary symbol file as `file.dbg' just
27995         like a compiler-generated one.
27996
27997 2002-09-26  Nick Zigarovich <nick@chemlab.org>
27998
27999         * Corrected typo in gc.c (BOHEM vs BOEHM).
28000
28001 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28002
28003         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
28004         GetProperties. Also avoid calling g_slist_length in GetProperties and
28005         GetMethods.
28006
28007 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28008
28009         * reflection.c: avoid unaligned stores (bug spotted by
28010         Mark Crichton  <crichton@gimp.org>).
28011
28012 2002-09-25  Martin Baulig  <martin@gnome.org>
28013
28014         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
28015         instead of guint64 for addresses and added prologue/epilogue info.
28016
28017 2002-09-25  Martin Baulig  <martin@gnome.org>
28018
28019         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
28020         store line number info.  For the dynamic symbol file, we only need
28021         to provide the JIT generated dynamic line number info for the dynamic
28022         symbol file.
28023
28024 2002-09-25  Martin Baulig  <martin@gnome.org>
28025
28026         * debug-mono-symfile.h: Incremented version number.
28027
28028 2002-09-24  Martin Baulig  <martin@gnome.org>
28029
28030         * class.c (mono_debugger_class_init_func): New global function
28031         pointer variable.
28032         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
28033         call it.
28034
28035         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
28036         function.  This is called via the mono_debugger_class_init_func
28037         hook to add all types to the dynamic type table.
28038         (ves_icall_MonoDebugger_GetType): New interncall to get a class
28039         from its metadata token.
28040
28041         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
28042         New interncall for the debugger.
28043
28044 2002-09-24  Nick Drochak <ndrochak@gol.com>
28045
28046         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
28047         before using it in case it is null.
28048         
28049 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28050
28051         * metadata.c: allow custom modifiers in local var signatures
28052         (bug spotted by Zoltan Varga).
28053
28054 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28055
28056         * class.c: deal with the <Module> class that may have a NULL vtable.
28057         Eliminate warnings.
28058
28059 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28060
28061         * image.c, image.h: more strong name helpers.
28062         * monosn.c: more work: convert pem keys to cryptoapi format.
28063
28064 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28065
28066         * string-icalls.c: speedup IndexOf.
28067
28068 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28069
28070         * icall.c: updates from Zoltan.2.Varga@nokia.com.
28071
28072 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28073
28074         * icall.c: cleanup: use mono_object_domain ().
28075
28076 2002-09-23  Martin Baulig  <martin@gnome.org>
28077
28078         * debug-mono-symfile.c: Improved type support.
28079
28080 2002-09-22  Martin Baulig  <martin@gnome.org>
28081
28082         * debug-mono-symfile.c: Added support for reference types and strings.
28083
28084 2002-09-22  Martin Baulig  <martin@gnome.org>
28085
28086         * debug-mono-symfile.c: Started to work on the type table.
28087
28088 2002-09-21  Martin Baulig  <martin@gnome.org>
28089
28090         * debug-mono-symfile.c: Largely reworked the symbol table format.
28091         The symbol table is now incrementally updated each time a new
28092         method is added.  We're now also using our own magic and version
28093         so that you don't need to recompile all your classes if the
28094         dynamic table changes.
28095         (mono_debug_update_mono_symbol_file): Removed.
28096         (mono_debug_symfile_add_method): New function to add a method.
28097
28098 2002-09-21  Martin Baulig  <martin@gnome.org>
28099
28100         * icall.c
28101         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28102         New interncall.
28103
28104         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28105         New interncall to get a method from its metadata token.
28106
28107 2002-09-21  Martin Baulig  <martin@gnome.org>
28108
28109         * debug-mono-symfile.c: Create type table.
28110
28111 2002-09-20  Martin Baulig  <martin@gnome.org>
28112
28113         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28114
28115 2002-09-20  Martin Baulig  <martin@gnome.org>
28116
28117         * debug-mono-symfile.c: Provide information about params and locals.
28118
28119 2002-09-20  Martin Baulig  <martin@gnome.org>
28120
28121         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28122         New interncall.
28123
28124         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28125         interncall to get a method from its metadata token.
28126
28127 2002-09-20  Martin Baulig  <martin@gnome.org>
28128
28129         * debug-mono-symfile.c: Added a few checks for method->header
28130         being non-NULL.  This should never happen, but for the moment
28131         let's use a g_warning() rather than a g_assert().
28132
28133 2002-09-19  Mark Crichton  <crichton@gimp.org>
28134
28135         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28136         even if support for it isn't present.  Added an #ifdef to fix this.
28137
28138         * socket-io.c: Added checks back for Solaris support.
28139
28140 2002-09-19  Martin Baulig  <martin@gnome.org>
28141
28142         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28143         changes in the symbol file format.
28144
28145 2002-09-18  Martin Baulig  <martin@gnome.org>
28146
28147         * debug-mono-symfile.c: Set version number to 21.
28148
28149 2002-09-18  Dick Porter  <dick@ximian.com>
28150
28151         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28152         on netbsd.  Fixes bug 30051.
28153
28154 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28155
28156         * reflection.c:
28157         (set_version_from_string): little fix.
28158
28159 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28160
28161         * monosn.c, Makefile.am: added strong name utility.
28162         * reflection.h, reflection.c: implemented delayed signing,
28163         locale, version and hash id assembly attributes.
28164
28165 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28166
28167         * loader.c, metadata.c: load param attributes in signatures.
28168
28169 2002-09-16  Martin Baulig  <martin@gnome.org>
28170
28171         * debug-mono-symfile.c: Added string table with all method names.
28172
28173 2002-09-14  Martin Baulig  <martin@gnome.org>
28174
28175         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28176         fast method lookup.
28177
28178 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28179
28180         * reflection.c: record the public key token of referenced assemblies.
28181
28182 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28183
28184         * image.c, image.h: added functions to get the strong name and the
28185         public key of an assembly.
28186         * pedump.c: use them.
28187
28188 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28189
28190         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28191
28192 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28193
28194         * marshal.c (mono_marshal_get_managed_wrapper): Added
28195         MONO_TYPE_BOOLEAN 
28196
28197 2002-09-11  Martin Baulig  <martin@gnome.org>
28198
28199         * gc.c: Call GC_unregister_disappearing_link() on all links when
28200         finalizing them, this is necessary to aviod a crash in boehm's
28201         finalize handler.
28202
28203 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28204
28205         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28206         nick@chemlab.org.
28207
28208 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28209
28210         * icall.c: implemented MonoType::Module.
28211         * reflection.c, reflection.h: mono_module_get_object () from
28212         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28213
28214 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28215
28216         * icall.c: ignore overridden methods in GetMethods ().
28217         Fix for FieldInfo::SetValue().
28218         * object.c: handle float/double in runtime invoke.
28219
28220 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28221
28222         * object.c: allow a constructor to be called again on an object.
28223
28224 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28225
28226         * class.h, class.c: move field layout code to it's own function and
28227         export it. Get an interface id earlier. Move fields in MonoClass
28228         so they are more cache friendly and align the bitfields.
28229         * loader.c: temporary handle get_param_names() for a runtime method.
28230         * reflection.c, reflection.h: more code to handle runtime creation of
28231         types.
28232
28233 2002-09-09  Martin Baulig  <martin@gnome.org>
28234
28235         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28236         signature with the pinvoke field being set for the actual call.
28237
28238 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28239
28240         * icall.c: removed some unused icalls. Start of map of glib charsets
28241         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28242
28243 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28244
28245         * debug-helpers.c: break infinite loop (found and fixed by
28246         Holger Arnold <harnold@gmx.de>).
28247
28248 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28249
28250         * icall.c: target may be null in create_delegate.
28251
28252 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28253
28254         * marshal.c: handle a boolean return type.
28255
28256 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28257
28258         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28259
28260 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28261
28262         * gc.c: fix weakreferences.
28263
28264 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28265
28266         * icall.c: added icall to get default codepage.
28267
28268 2002-09-03  Dick Porter  <dick@ximian.com>
28269
28270         * threads.h: 
28271         * threads.c: Use MonoThread instead of MonoObject where
28272         apropriate.
28273
28274         Store running thread objects in a hash table, so that we have all
28275         the info to hand when waiting for them to finish
28276         (means we don't need OpenThread() any more, so mingw builds should
28277         be fully functional again.)
28278
28279         * verify.c:
28280         * object.h: Added thread ID to MonoThread
28281
28282 2002-09-03  Martin Baulig  <martin@gnome.org>
28283
28284         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28285
28286 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28287
28288         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28289
28290 2002-09-03  Martin Baulig  <martin@gnome.org>
28291
28292         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28293         argument to store the end address of the disassembled instruction.
28294
28295         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28296         here from debug-symfile.h.
28297         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28298         JIT into this struct.
28299         (MonoSymbolFile): Added `char *image_file' field.
28300         (MonoDebugGetMethodFunc): Removed.
28301         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28302         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28303         (mono_debug_find_method): New method.
28304
28305         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28306         create a full symbol file.
28307         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28308         and static symbol files.
28309         (mono_debug_find_method): The symbol file keeps an internal method hash,
28310         call this to get a MonoDebugMethodInfo from a MonoMethod.
28311
28312         * debug-symfile.[ch]: Removed.
28313
28314 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28315
28316         * image.c (do_mono_image_open): Remove linker version check.
28317
28318 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28319
28320         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28321         wrappers for instance methods.
28322         
28323 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28324
28325         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28326
28327 2002-08-28  Dick Porter  <dick@ximian.com>
28328
28329         * Makefile.am: Export HOST_CC for w32 builds
28330
28331 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28332
28333         * file-io.c process.c: MonoString are null terminated, no
28334         need for mono_string_to_utf16() anymore.
28335
28336 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28337
28338         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28339
28340 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28341
28342         * icall.c, reflection.h: speedup System.MonoType.
28343
28344 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28345
28346         * reflection.c: allow null as the value of a string argument in
28347         custom attributes constructors.
28348
28349 2002-08-27  Martin Baulig  <martin@gnome.org>
28350
28351         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28352         `trampoline_address' field.
28353
28354 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28355
28356         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28357         check (fixes bug #29486) 
28358
28359 2002-08-27  Martin Baulig  <martin@gnome.org>
28360
28361         * debug-mono-symfile.c: Changed the file format in a way that allows us
28362         open it read-only and to use a specially malloced area for all the
28363         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28364         debugging IL code and there is no MCS generated symbol file for it.
28365
28366 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28367
28368         * object.c: added a define for a good string and array
28369         creation speedup (not enabled by default because we need to deal with
28370         the synch stuff).
28371
28372 2002-08-26  Martin Baulig  <martin@gnome.org>
28373
28374         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28375         function to create a dynamic symbol file.  This is used by the
28376         debugger to create a symbol file for IL code on-the-fly.
28377
28378 2002-08-26  Martin Baulig  <martin@gnome.org>
28379
28380         * loader.c (mono_lookup_pinvoke_call): Include the error message
28381         from g_module_error() in the error message.
28382
28383 2002-08-24  Martin Baulig  <martin@gnome.org>
28384
28385         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28386         function to update the symbol file.  The symbol file is mmap()ed
28387         writable, but private.  This allows us to install the symbol file
28388         together with the assembly.
28389
28390 2002-08-24  Martin Baulig  <martin@gnome.org>
28391
28392         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
28393         but they can read the new symbol file format which mcs is now creating.
28394
28395         * debug-symfile.c (mono_debug_find_source_location): Moved to
28396         debug-mono-symfile.c; this is now operating on the new symbol file.
28397
28398 2002-08-23  Martin Baulig  <martin@gnome.org>
28399
28400         * debug-helpers.c (mono_method_desc_from_method): New function to get
28401         a MonoMethodDesc from a MonoMethod.
28402
28403 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28404
28405         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
28406         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
28407
28408 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
28409
28410         * string-icalls.[ch]: make helper methods static.
28411
28412 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28413
28414         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
28415         types to it and to SetValueInternal.
28416
28417         * object.c: Moved handle_enum label to its proper place. This was the
28418         f... bug! ;-)
28419
28420         This time i compiled mcs and gtk-sharp and they both work.
28421
28422 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28423
28424         * icall.c: reverted partially my previous patch until 
28425         object.c:set_value handles enums correcly.
28426
28427 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28428
28429         * icall.c:
28430         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
28431         (ves_icall_System_Environment_get_MachineName): removed warning when
28432         compiling under cygwin.
28433
28434 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28435
28436         * object.c: fixed field_get_value() for reference types.
28437
28438 2002-08-22  Dick Porter  <dick@ximian.com>
28439
28440         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
28441         Don't free a buffer while it's still needed.  Patch from Jonathan
28442         Liger <Jonathan.liger@wanadoo.fr>
28443
28444 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
28445
28446         * icall.c (ves_icall_System_Environment_get_Platform): Add new
28447         internal call.
28448
28449 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
28450
28451         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
28452         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
28453
28454         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
28455         we call unmanaged code which throws exceptions.
28456
28457 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28458
28459         * appdomain.h: added per-domain entry_assembly.
28460         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
28461         arguments.
28462         * icall.c: Assembly::GetEntryAssembly icall.
28463         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
28464         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
28465
28466 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28467
28468         * appdomain.h, gc.c: added mono_domain_finalize ().
28469
28470 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28471
28472         * object.c:
28473         (mono_print_unhandled_exception): changed g_warning by g_printerr
28474         because g_log has a 1024 characters limit (yeah, i got a big stack
28475         trace). Don't print exception name, that should be in ToString 
28476         returned string.
28477
28478 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28479
28480         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
28481         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
28482
28483 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28484
28485         * object.c:
28486         (mono_print_unhandled_exception): after previous commit, i realized
28487         that MS calls ToString on the exception. I changed this function to
28488         do that. This way we get stack_trace for free.
28489
28490 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28491
28492         * object.c:
28493         (mono_print_unhandled_exception): invoke Message property instead of
28494         getting 'message' field from Exception. Don't allocate memory for
28495         'trace' and 'message' if not needed.
28496
28497 2002-08-18  Dick Porter  <dick@ximian.com>
28498
28499         * unicode.c: Fix asserts to match Encoder.cs checks
28500
28501 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28502
28503         * marshal.c: fix unaligned store issue and a few wrong
28504         opcode argument types.
28505
28506 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28507
28508         * icall.c: added GetUninitializedObjectInternal internal call.
28509
28510 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
28511
28512         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
28513         to the right domain.
28514
28515 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
28516
28517         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
28518
28519         * class.c (class_compute_field_layout): set blittable to false for Strings
28520
28521         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
28522
28523 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28524
28525         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
28526         first chunk of code to create types at runtime. Code to
28527         handle ReflectedType/DeclaringType. Make reflection handles
28528         domain specific.
28529
28530 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
28531
28532         * class.c: set correct name in arrays.
28533
28534 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
28535
28536         * appdomain.c (mono_domain_transfer_object): make it work with
28537         valuetypes. bug fixes.
28538
28539 2002-08-12  Dick Porter  <dick@ximian.com>
28540
28541         * object.h: Rename some parameters to avoid c++ keywords (Patch
28542         from Joseph Wenninger <kde@jowenn.at>)
28543
28544 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
28545
28546         * icall.c: added icall to implement Assembly.GetFile*.
28547
28548 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28549
28550         * reflection.h, reflection.c: code to embed managed resources.
28551
28552 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28553
28554         * class.c: move all the type size stuff into
28555         class_compute_field_layout().
28556
28557 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28558
28559         * class.c: ensure enums have always the correct instance size.
28560         * unicode.c: remove wrong assert.
28561
28562 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28563
28564         * assembly.c: fix mem corruption issue.
28565         * image.h, image.c: added mono_image_get_resource () to access
28566         managed resources.
28567         * icall.c: implemented Assembly.EntryPoint property and some
28568         Managed Resources related internalcalls.
28569
28570
28571 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28572
28573         * image.c, image.h: impemented mono_image_get_entry_point ().
28574         * appdomain.c: use mono_image_get_entry_point.
28575
28576 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28577
28578         * reflection.c: support the object type argument when loading
28579         custom attributes.
28580
28581 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
28582
28583         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
28584         String as return type.
28585
28586 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
28587
28588         * reflection.c: fix encoding of named args for custom attrs to match
28589         the ms implementation. Read them back when instantiating custom
28590         attributes.
28591
28592 2002-08-02  Radek Doulik  <rodo@ximian.com>
28593
28594         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
28595         by Dietmar as quick fix
28596         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
28597         16 as stack size, used on more places as quick fix before Dietmar
28598         will fix it properly
28599
28600 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28601
28602         * object.h, object.c: added accessors for fields and properties.
28603
28604 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28605
28606         * class.c, class.h: made mono_class_get_field_from_name ()
28607         loop on parent types.
28608         Added mono_class_get_property_from_name ().
28609
28610 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28611
28612         * class.c, class.h: move the code to setup the type vtable in its own
28613         function so that it can be reused also for types created at runtime.
28614         Eliminate the "class" identifier from the header file.
28615         * reflection.c: setup the vtable for enums so that we can create
28616         objects for use in SetConstant ().
28617
28618 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
28619
28620         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
28621         instead of the delegate itself as this pointer (bug #28383)
28622
28623 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
28624
28625         * marshal.c (mono_marshal_get_managed_wrapper): added return type
28626         conversions.
28627
28628 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28629
28630         * loader.c: don't set the pinvoke bit on icalls.
28631
28632 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
28633
28634         * debug-helpers.c (mono_method_full_name): only print a number to
28635         indicate wrapper type (so that the output is more readable in traces).
28636
28637 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
28638
28639         * class.c (mono_class_init): include method override patch from Paolo
28640
28641 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
28642
28643         * icall.c: fixed GetTypeCode().
28644
28645 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
28646
28647         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
28648         use real delegate invoke function to make it work with multicast
28649         delegates (fix bug# 28291).
28650
28651 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
28652
28653         * object.c: load constant strings.
28654
28655 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28656
28657         * reflection.c: no magic numbers.
28658         * tabledefs.h: security action enum.
28659
28660 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28661
28662         * assembly.c: fix possible memory corruption.
28663
28664 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28665
28666         * reflection.h, reflection.c: added support for linking resources.
28667         * verify.c: check we have an updated corlib.
28668
28669 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
28670
28671         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
28672         string arrays.
28673         (mono_marshal_string_array): null terminate unmanaged string arrays.
28674         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
28675
28676 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
28677
28678         * icall.c: Type.GetType () can now return also types from the
28679         calling assembly.
28680
28681 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28682
28683         * loader.h, loader.c: stack walking support.
28684         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
28685         GetCallingAssembly.
28686
28687 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
28688
28689         * marshal.c: added optimisations for blittable types 
28690
28691         * class.c (mono_array_class_get): do not set blittable attribute on arrays
28692         (mono_class_setup_mono_type): set blittable attribute for single
28693         and double.
28694
28695         * marshal.c (mono_string_utf8_to_builder): impl.
28696         (mono_string_builder_to_utf8): impl.
28697         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
28698
28699 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
28700
28701         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
28702         (mono_marshal_get_managed_wrapper): impl. byref types
28703
28704 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28705
28706         * icall.c:
28707         (search_method): don't display debug message. 
28708
28709 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28710
28711         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
28712
28713 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28714
28715         * appdomain.c: set the missing filename when throwing exception.
28716
28717 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28718
28719         * metadata.c (mono_type_size): code cleanup
28720         (mono_type_stack_size): removed some test code
28721
28722 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
28723
28724         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
28725         mono_get_exception_file_not_found now.
28726
28727         * exception.c (mono_exception_from_name_two_strings): New version
28728         that will call a constructor with two string arguments. 
28729         (mono_get_exception_file_not_found): New helper routine, used to
28730         report file-not-found errors.
28731
28732 2002-07-20  Dick Porter  <dick@ximian.com>
28733
28734         * process.h:
28735         * process.c: Pass file handles to CreateProcess
28736         
28737         * icall.c:
28738         * file-io.h:
28739         * file-io.c: Implemented CreatePipe
28740
28741 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28742
28743         * metadata.c (mono_get_param_info): set alignment for value types
28744
28745 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28746
28747         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
28748         Constify mono_domain_assembly_open().
28749         * loader.c: handle null namespace in icalls.
28750
28751 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28752
28753         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
28754         (emit_str_to_ptr_conv): marshal object as structs
28755
28756         * metadata.c (mono_type_to_unmanaged): marshal object as structs
28757
28758         * marshal.c (mono_marshal_get_runtime_invoke): support value types
28759
28760 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
28761
28762         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
28763         (mono_marshal_get_native_wrapper): we an now return value types
28764
28765 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28766
28767         * verify.c: more checks implemented.
28768
28769 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
28770
28771         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
28772         (fix bug #27695)
28773         (mono_marshal_get_native_wrapper): allow byref arguments
28774         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
28775         impl. PtrToStringXXX methods
28776         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
28777         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
28778         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
28779         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
28780         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
28781
28782 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28783
28784         * reflection.c: fix buglet in parsing an assembly name.
28785
28786 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28787
28788         * marshal.c (emit_ptr_to_str_conv): first impl.
28789
28790 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
28791
28792         * object.c, class.h: cache the vtable in the class as suggested by
28793         vargaz@freemail.hu (Zoltan Varga).
28794
28795 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28796
28797         * class.h, loader.c: added mono_field_from_token().
28798         * verify.c: first cut of type checking code.
28799
28800 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28801
28802         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
28803
28804 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
28805
28806         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
28807         (fix bug #27782)
28808         (mono_marshal_get_remoting_invoke): impl.
28809         (mono_delegate_begin_invoke): impl.
28810         (mono_mb_emit_save_args): impl.
28811         (mono_delegate_end_invoke): impl.
28812         (mono_marshal_get_delegate_begin_invoke):
28813         (mono_marshal_get_delegate_end_invoke):
28814         (mono_marshal_get_delegate_invoke): generate a special name for
28815         those methods (including the signature) and associate them whith
28816         the delegate class. 
28817
28818 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
28819
28820         * reflection.[ch]: 
28821         (mono_reflection_type_from_name): now it has a MonoImage parameter
28822         which is used as the default image to search the type in. If the image
28823         is NULL or getting the type from it fails, it defaults to corlib.
28824
28825         * icall.c: changed 1 call to mono_reflection_type_from_name to match
28826         new parameter.
28827
28828 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28829
28830         * reflection.c: update the parameter table index.
28831
28832 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28833
28834         * domain.c: don't include the mark byte in the string hash.
28835
28836 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
28837
28838         * icall.cs: icall for Type.GetTypeCode ().
28839         * verify: a couple of fixes and disabled local initialization checks.
28840
28841 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
28842
28843         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
28844
28845         * debug-helpers.c (mono_method_full_name): print the type of the
28846         runtime wrapper
28847
28848         * metadata.c (mono_signature_hash): a hash function for signatures
28849         (mono_signature_hash): better hash algorithm
28850
28851         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
28852
28853         * debug-helpers.c (mono_method_full_name): this can now generate
28854         method names with signatures
28855
28856         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
28857         method dont have this pointers.
28858
28859 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
28860
28861         * reflection.c: fixup typebuilder tokens.
28862         * image.c: fix buglet.
28863         * marshal.h: remove whitespace.
28864         * metadata.h, metadata.c: reinstate code that was removed.
28865         * verify.c: handle catch directives and fix another couple of bugs.
28866
28867 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
28868
28869         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
28870         (mono_marshal_get_native_wrapper): make it comp. with the old code
28871         (mono_marshal_get_native_wrapper): support boolean
28872         (mono_marshal_get_managed_wrapper): support more types
28873
28874 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
28875
28876         * class.c (class_compute_field_layout): compute class->blittable attribute.
28877
28878 2002-07-09  Dick Porter  <dick@ximian.com>
28879
28880         * threads.c: Make the thread cleaning up cope with threads that
28881         call ExitThread()
28882
28883 2002-07-08  Radek Doulik  <rodo@ximian.com>
28884
28885         * reflection.c (method_encode_code): use non-translated values to
28886         compute finally_start, this fixes exception handling on ppc, yay!
28887
28888         * decimal.h (struct signscale): fix endianess
28889
28890 2002-07-07  Radek Doulik  <rodo@ximian.com>
28891
28892         * reflection.c: swap box_val and not val
28893
28894 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
28895
28896         * reflection.c, reflection.h: handle full assembly info in type name.
28897         Handle Type arguments when loading custom attributes.
28898         * icall.c: updated to use new mono_reflection_type_from_name () method.
28899
28900 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28901
28902         * loader.c:
28903         (method_from_memberref): also print assembly name when method not found.
28904
28905 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28906
28907         * icall.c:
28908         (ves_icall_TypeGetProperties): fixed bug #27473. 
28909
28910 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28911
28912         * reflection.c: display image name and token when cannot find the
28913         .ctor for an attribute.
28914
28915 2002-07-05  Martin Baulig  <martin@gnome.org>
28916
28917         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
28918
28919 2002-07-04  Dick Porter  <dick@ximian.com>
28920
28921         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
28922         compile on mingw.  This will cause mingw builds to not wait for
28923         subthreads to terminate after the main thread does.  I've lodged a
28924         bug with the mingw developers for them to wrap OpenThread().
28925
28926 2002-07-03  Dick Porter  <dick@ximian.com>
28927
28928         * threads.c: Store thread IDs instead of handles, because
28929         GetCurrentThread() returns a pseudohandle and therefore stores
28930         useless values.  mono_thread_cleanup() continues checking the
28931         array of threads until it is empty, to cope with subthreads
28932         spawning new threads after the main thread has finished.
28933
28934         * profiler.h:
28935         * profiler.c:
28936         * profiler-private.h: Pass the thread ID to thread profiler
28937         functions, instead of a handle
28938
28939 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28940
28941         * verify.c: fixes to make it more usable.
28942         * pedump.c: added --verify code to verify IL code in an assembly.
28943
28944 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28945
28946         * reflection.c: turn errors into warnings to allow compiling corlib.
28947
28948 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28949
28950         * reflection.c: add special cases to compile corlib.
28951
28952 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28953
28954         * reflection.c: handle properties with only a set method.
28955
28956 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28957
28958         * opcodes.h: add enum with opcodes in opval order.
28959
28960 2002-07-01  Dick Porter  <dick@ximian.com>
28961         
28962         * object.h:
28963         * object.c (mono_runtime_run_main): Removed unneeded argument
28964
28965 2002-06-28  Martin Baulig  <martin@gnome.org>
28966
28967         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
28968
28969 2002-06-27  Dick Porter  <dick@ximian.com>
28970
28971         * threads.c: Store the handle in both the parent thread and in the
28972         subthread, to minimise the time between starting a new thread and
28973         storing its ID.
28974
28975 2002-06-26  Dick Porter  <dick@ximian.com>
28976
28977         * appdomain.c (mono_runtime_cleanup): Close the socket library
28978         after all the threads have finished, not before
28979
28980 2002-06-26  Martin Baulig  <martin@gnome.org>
28981
28982         * debug-symfile.c (mono_debug_find_source_location): Added
28983         `guint32 *line_number' argument.  If it's not NULL, store the line number
28984         there and return the file name without the line number.
28985
28986 2002-06-25  Dick Porter  <dick@ximian.com>
28987
28988         * icall.c:
28989         * process.h:
28990         * process.c: Process forking and other support functions
28991
28992 2002-06-25  Dick Porter  <dick@ximian.com>
28993
28994         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
28995         things dont happen when the image is closed.
28996         (mono_image_lookup_resource): Walk the resource section looking
28997         for a particular entry
28998
28999         * cil-coff.h: PE resource section decoding
29000
29001 2002-06-25  Dick Porter  <dick@ximian.com>
29002         
29003         * assembly.h:
29004         * assembly.c: 
29005         (mono_assembly_foreach): Accessor functions to walk the list of
29006         loaded assemblies
29007         (mono_assembly_set_main):
29008         (mono_assembly_get_main): Process methods need to know which
29009         assembly is the "main" one
29010
29011         * object.c (mono_runtime_run_main): Record the main assembly
29012
29013         * debug-helpers.c: Fix typo
29014
29015 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
29016
29017         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
29018         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
29019
29020 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29021
29022         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
29023
29024 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
29025
29026         * image.c (do_mono_image_open): Initialize reference count,
29027         otherwise we leak the MonoImage.
29028
29029 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29030
29031         * reflection.c: small tweak to handle self-hosting.
29032
29033 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29034
29035         * reflection.c: fix type name parse code.
29036
29037 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29038
29039         * reflection.c: break out of the loop.
29040         * image.c: special case corlib.
29041
29042 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29043
29044         * reflection.c: add all the custom attrs at the end to ensure the
29045         ctors have been properly initialized when the attributes are defined
29046         in the current assembly.
29047
29048 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29049
29050         * reflection.c: handle correctly multiple-nested types.
29051
29052 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
29053
29054         * row-indexes.h: fix typos.
29055         * reflection.c: adjust for typos and fix method_def_or_ref
29056         encoding in MethodImpl table.
29057
29058 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29059
29060         * reflection.c: fix entry point patching (thanks Serge!).
29061
29062 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
29063
29064         * verify.c: add check for System.Exception
29065
29066 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29067
29068         * image.c, class.c: minifix for code just c&p'ed.
29069         * reflection.c: warning fix.
29070         * object.h, loader.h, domain.c: load also StringBuilder.
29071
29072 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29073
29074         * marshal.h, marshal.c: some support code to handle complex marshaling.
29075
29076 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29077
29078         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29079         Better signatures with vtable error dump.
29080
29081 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29082
29083         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29084
29085 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29086
29087         * icall.c (ves_icall_Type_GetField): impl.
29088
29089 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29090
29091         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29092         to retrieve a marshal description blob for a field or param.
29093
29094 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29095
29096         * reflection.h, reflection.c: change order of nested type emission
29097         to avoid table corruption. The NestedTypes table is sorted.
29098         * icall.c: change order of GetConstructor results to workaround mcs bug.
29099
29100 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29101
29102         * reflection.h, reflection.c: handle field and param marshal
29103         information.
29104
29105 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29106
29107         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29108
29109 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29110
29111         * reflection.c: fix call convention.
29112
29113 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29114
29115         * reflection.h, reflection.c: mono_image_get_memberref_token()
29116         takes a type instead of a class, now. Added
29117         mono_image_get_array_token() to create tokens for the special
29118         multi-dim array methods.
29119
29120 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29121
29122         * assembly.c: handle modules (no assembly table). Split
29123         loading references in its own function.
29124         * class.c: handle moduleref resolution scope.
29125         * image.c, image.h: cache module name in image.
29126
29127 2002-06-07  Martin Baulig  <martin@gnome.org>
29128
29129         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29130         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29131
29132 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29133
29134         * icall.c: more signature fixes that used uint instead of int.
29135
29136 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29137
29138         * reflection.c: fixed signature of field refs.
29139
29140 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29141
29142         * class.c, reflection.c: handle typerefs of nested types
29143         (both on read and when writing files).
29144
29145 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29146
29147         * icall.c: fix method signatures that tried to workaround the previous
29148         typo, d'oh!
29149
29150 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29151
29152         * debug-helpers.c: fix typo.
29153
29154 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29155
29156         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29157         rewrote the PE/COFF writing code (our programs are understood by the
29158         ms runtime, now).
29159
29160 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29161
29162         * gc.c, gc.h, icall.c: weakreference support.
29163
29164 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29165
29166         * Makefile.am, mono-config.c: use $(sysconfdir).
29167
29168 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29169
29170         * icall.c: changed default precision of Double.ToString() to 15.
29171         Fixed memory leak. Unified with Single.ToString.
29172
29173 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29174
29175         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29176
29177 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29178
29179         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29180         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29181         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29182         and myself.
29183
29184 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29185
29186         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29187
29188 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29189
29190         * reflection.c, socket-io.c: more compilation fixes.
29191
29192 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29193
29194         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29195         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29196         unicode.c: warning and compiler compatibility fixes.
29197
29198 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29199
29200         * class.h, metadata.c: fixed warnings/compilation errors.
29201
29202 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29203
29204         * Makefile.am, mono-config.c, mono-config.h: configuration file
29205         support routines.
29206         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29207         config file. Export methods to insert and lookup mappings.
29208
29209 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29210
29211         * reflection.c: handle types and boxed objects in custom attr
29212         constructors.
29213
29214 2002-05-30  Martin Baulig  <martin@gnome.org>
29215
29216         * debug-symfile.c
29217         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29218
29219 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29220
29221         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29222         to lookup the implmap row for a P/Invoke method.
29223         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29224         P/Invoke method from the runtime on an as needed basis.
29225
29226 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29227
29228         * metadata.c (mono_metadata_parse_signature): impl.
29229
29230 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29231
29232         * class.c: handle .pack directive.
29233
29234 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29235
29236         * object.c: initialize static fields with RVA data.
29237
29238 2002-05-25  Martin Baulig  <martin@gnome.org>
29239
29240         * debug-symfile.c
29241         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29242
29243 2002-05-24  Martin Baulig  <martin@gnome.org>
29244
29245         * debug-symfile.c
29246         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29247         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29248         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29249
29250 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29251
29252         * object.c: special case string ctros in invoke.
29253         * gc.c: silly whitespace changes.
29254
29255 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29256
29257         * threadpool.[ch]: impl. a threadpool that can
29258         be used by mint and mono.
29259
29260 2002-05-22  Martin Baulig  <martin@gnome.org>
29261
29262         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29263         The first argument is now a `MonoReflectionModuleBuilder *', the return
29264         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29265         `methods' field to get the method builder.  The `token' argument is the
29266         unfixed token.
29267
29268         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29269         invalid characters instead of g_assert_not_reached()ing.  This seems
29270         to be the behaviour of mscorlib.
29271
29272 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29273
29274         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29275         Hestilow to fix bug #25104
29276
29277 2002-05-21  Martin Baulig  <martin@gnome.org>
29278
29279         * debug-symfile.c (mono_debug_find_source_location): New function.
29280         Looks up an IL offset in the line number table and returns the source
29281         location as a string.
29282
29283 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29284
29285         * icall.c:
29286         (mono_double_ToStringImpl): changed %f by %g until we have something
29287         better.
29288
29289 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29290
29291         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29292         parameters first in C#.
29293
29294 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29295
29296         * icall.c, reflection.h: added icall to get info about an event.
29297
29298 2002-05-20  Radek Doulik  <rodo@ximian.com>
29299
29300         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29301         endian
29302         (mono_value_box): don't use memcpy for small sizes on
29303         architectures with unaligned access
29304
29305 2002-05-20  Martin Baulig  <martin@gnome.org>
29306
29307         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29308         if `tb->parent == NULL'.
29309         (mono_reflection_create_internal_class): New function.  This is
29310         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29311         for enum types.
29312
29313         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29314         New interncall.
29315
29316 2002-05-19  Martin Baulig  <martin@gnome.org>
29317
29318         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29319         argument to get the length, don't default to the array length.
29320
29321 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29322
29323         * assembly.c (mono_assembly_setrootdir): New function used to
29324         override the MONO_ASSEMBLIES directory.
29325
29326 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29327
29328         * icall.c: ValueType_GetHashCode() initialize local var.
29329
29330 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29331
29332         * reflection.c: sort custom attributes table.
29333
29334 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29335
29336         * reflection.c: support named args in custom attributes (write support).
29337
29338 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29339
29340         * reflection.c: fix finally position calculation.
29341
29342 2002-05-15  Radek Doulik  <rodo@ximian.com>
29343
29344         * reflection.c: fixed endianess at many places
29345
29346         * icall.c (ves_icall_InitializeArray): comment out debug msg
29347
29348 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29349
29350         * object.c (mono_unhandled_exception): new function to handle
29351         unhandled exceptions.
29352         (mono_unhandled_exception): call the UnhandledException event.
29353         (mono_runtime_delegate_invoke): impl.
29354
29355 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29356
29357         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29358         returns the RVA, not the direct pointer to the data. Handle the case
29359         when the class size is fixed.
29360
29361 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29362
29363         * reflection.c: fix some endianess issues.
29364
29365 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29366
29367         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29368
29369         * threads.c (mono_thread_init): added a callback which is invoked
29370         at thread start.
29371
29372 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29373         
29374         * icall.c: make GetHashCode return non-negative values.
29375
29376 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29377
29378         * object.c, icall.c, gc.c: revert to address-based hashcode.
29379
29380 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29381
29382         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29383
29384 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29385
29386         * icall.c, class.c: special case <Module>.
29387
29388 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29389
29390         * icall.c: fix bug in GetNow().
29391
29392 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
29393
29394         * object.c (mono_runtime_class_init): make sure that we call all
29395         static class constructors.
29396
29397 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29398
29399         * reflection.c: sort methodsemantics table.
29400
29401 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29402
29403         * reflection.h, reflection.c: honour init locals setting.
29404
29405 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
29406
29407         * icall.c: copied Double ToStringImpl for Single ToStringImpl
29408
29409 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29410
29411         * reflection.c: support ContructorBuilders in attribute blob creation.
29412
29413 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29414
29415         * reflection.c: some changes to build a binary that can be run
29416         directly in windows.
29417
29418 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29419
29420         * loader.c: print a big message when an icall can't be found.
29421
29422 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29423
29424         * string-icalls.c: fix bug 24248.
29425
29426 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29427
29428         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
29429         icall.c, reflection.h: separate assembly loading by pathname and by
29430         assembly name. Use the MONO_PATH env var to search for assemblies.
29431
29432 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29433
29434         * assembly.c, image.h: add some support for assemblies
29435         with multiple modules.
29436         * class.c, class.h: export mono_class_from_typeref().
29437         * loader.c: remove duplicated code and use mono_class_from_typeref(),
29438         instead.
29439
29440 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29441
29442         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
29443         documentation says (the ECMA one is correct).
29444
29445 2002-05-02  Dick Porter  <dick@ximian.com>
29446
29447         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
29448         Don't name the synchronisation mutex.
29449
29450 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
29451
29452         * rand.c
29453         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
29454         Make the prototypes match.
29455         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
29456         Same.
29457
29458         * icall.c
29459         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
29460         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
29461         all systems have tm.tm_zone, so use strftime() with %Z to print
29462         the timezone abreviation into a temp string.
29463
29464         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
29465         rather than mono_array_addr() on a MonoString on Big Endian
29466         machines.
29467
29468 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
29469
29470         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
29471         fix bug 24041
29472
29473 2002-04-30  Dick Porter  <dick@ximian.com>
29474
29475         * socket-io.c: Cope with SOCKET being an integer rather than a
29476         pointer now.
29477
29478         * threads.c: Added Thread_free_internal, to deal with thread
29479         handle cleanup.  Moved calls to handle_store() and handle_remove()
29480         to start_wrapper(), so each can only be called once.  Allocate
29481         synchronisation blocks with GC_malloc(), and use GC finalisation
29482         to close the handles.
29483
29484         * icall.c: added System.Threading.Thread::Thread_free_internal
29485
29486 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29487
29488         * icall.c: support Environment.Exit, CommandLineArgs().
29489
29490 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29491
29492         * object.c, object.h: added mono_runtime_run_main () and
29493         mono_runtime_get_main_args () for use in System.Environment.
29494
29495 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29496
29497         * gc.c: fix thinko, enable actual finalization since the jit is now
29498         fixed.
29499
29500 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29501
29502         * gc.c, object.c: take into account that an object may be offset wrt the address
29503         returned by GC_malloc().
29504
29505 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29506
29507         * image.c: handle files without entries in the assembly table (modules).
29508
29509 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
29510
29511         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
29512         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
29513         allowed to be null when it's System.Object class setup.
29514
29515 2002-04-27  Martin Baulig  <martin@gnome.org>
29516
29517         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
29518         if `tb->parent == NULL' rather than crashing.
29519
29520 2002-04-28  Nick Drochak  <ndrochak@gol.com>
29521
29522         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
29523         calling acos() where asin() should have been called.
29524
29525 2002-04-26  Martin Baulig  <martin@gnome.org>
29526
29527         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
29528         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
29529         there's a subdirectory called `System', but we don't want to read that
29530         subdirectory as an assembly.
29531
29532 2002-04-25  Martin Baulig  <martin@gnome.org>
29533
29534         * debug-symfile.c: Reflect latest MonoString changes.
29535
29536 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29537
29538         * rand.c, rand.h: instance method icalls need to have an explicit
29539         this pointer as first argument in the C implementation.
29540
29541 2002-04-25  Nick Drochak <ndrochak@gol.com>
29542
29543         * icall.c: Fix typo in map for GetNonZeroBytes
29544
29545 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29546
29547         * string-icalls.c : String does now passes unit tests without any 
29548         errors, the following changes has been made:
29549         
29550         Implemented replace methods.
29551         Renaming of methods to (try) follow the standard.
29552         Fixed compare ordinal
29553         Made all memory allocated directly to function instead of via icall function.
29554         Small performance fix in is_in_array function
29555                         
29556  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
29557
29558         c (mono_string_Internal_ctor_charp_int_int):
29559         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
29560         sindex < 0, throw ArgumentOutOfRangeException instead of
29561         ArgumentNullException.
29562
29563         Added new check for length == 0, however
29564         I need to make it return String.Empty from the C code.
29565         
29566         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
29567         that calculate the length for us here.
29568         
29569         (mono_string_Internal_ctor_sbytep_int_int): Replaced
29570         mono_string_new_utf16 with mono_string_new, since value is utf8.
29571
29572 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29573
29574         * object.c: register the object for finalization if needed.
29575         Allocate one more char in the string for the terminating 0 char.
29576
29577 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29578
29579         * class.c, class.h, image.c: check if a type implemenst a destructor.
29580         Use the proper key for array class lookups.
29581         * icall.c: register the icalls in the System.GC class.
29582         * gc.c, gc.h: GC-related functions and icalls.
29583
29584 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29585
29586         * icall.c:
29587         * socket-io.c:
29588         * unicode.c: free some strings gotten from mono_string_to_utf8 and
29589         changed a couple of free () by g_free ().
29590
29591         * decimal.c: one-liner in the comments for decimal2string ().
29592
29593 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29594
29595         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
29596
29597 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29598
29599         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
29600         * object.c (mono_runtime_invoke_array) : handle null in params
29601
29602 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29603
29604         * string-icalls.c: fixed bug in split (one off bug)
29605
29606 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29607
29608         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
29609         * icalls.c: added String::Equals as internal method
29610
29611 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29612
29613         * threads.c: fixed bug in the double interlocked functions
29614
29615 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
29616
29617         * threads.c: implemented all of the new interlocked icalls.
29618         * string-icalls.c: fix a bug in insert.
29619         * icalls.c: added the icalls for interlocked, removed old string functions.
29620         
29621 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29622
29623         * loader.c: fix off-by-one error when reading argument names.
29624
29625 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29626
29627         * profiler.c: win32 counter implementation (untested).
29628         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
29629         (the latter needs testing and more complete impl. from win32 folks).
29630
29631 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
29632
29633         * object.c: mono_array_new_full workaround mono_array_class_get
29634         problem.
29635
29636 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29637
29638         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
29639         * object.h (mono_string_chars): Changed casting type.
29640
29641 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29642
29643         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
29644                            method signatures to use gunichar2 instead of gint16.
29645
29646 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
29647
29648         * object.h, object.c: domain-specific versions of mono_object_new and
29649         mono_array_new.
29650
29651 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
29652
29653         * object.c: changed String layout
29654
29655         * string-icalls.c (mono_string_Internal_ctor_chara): added
29656         internal string constructors.
29657
29658 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
29659
29660         * threads.c: pass 'this' to the thread start routine.
29661
29662 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29663
29664         * string-icalls.c: fix IndexOf and LastIndexOf. Now
29665         InternalCompareStr don't call twice mono_string_cmp_char for the last
29666         character. Improved performance in mono_string_cmp_char.
29667
29668 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29669
29670         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
29671         code into its own library: libmonoruntime.
29672
29673 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
29674
29675         * object.h, object.c: changed array format so that szarrays do not
29676         require a bounds structure.
29677         * icall.c, appdomain.c: support for new szarray format.
29678
29679 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29680
29681         * metadata.c: compare also the retuns type when comparing signatures:
29682         we didn't do this as an optimization since really overloaded methods
29683         must differ also in the arguments, but this doesn't work with
29684         low-level IL code (or when using explicit conversion operators: see
29685         bug#23498 for an example).
29686
29687 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29688
29689         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
29690
29691 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29692
29693         * icall.c: make MonoType::GetElementType its own icall.
29694
29695 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29696
29697         * icall.c: remove MonoMethod_get_Name().
29698         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
29699         object.
29700
29701 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29702
29703         * string-icalls.c: optimized a few methods.
29704
29705 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29706
29707         * icall.c: added all new string internal calls
29708         * string-icalls.c: added, new string internal call implementation.
29709         * object.c: added mono_string_new_size for allocating a string a size
29710
29711 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
29712
29713         * object.c (mono_object_isinst): use the same code as in the
29714         optimized x86 version.
29715
29716 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29717
29718         * profiler.c: TSC-based timer code (faster and more accurate).
29719         Not hooked up in configure, yet (set USE_X86TSC to 1).
29720
29721 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
29722
29723         * profiler.c, profiler.h: track time spent compiling methods.
29724         * threads.c: track thread creation/destruction.
29725
29726 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
29727
29728         * profiler.c, profiler.h, profiler-private.h: profiling interface
29729         and sample implementation. Moved here so that it can be used also by
29730         the jit.
29731
29732 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
29733
29734         * reflection.c, reflection.h: keep types and other handles separate in
29735         the hash tables for referred tokens. Add guid for modules.
29736
29737 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29738
29739         * assembly.c: fix bugs found with valgrind.
29740         * metadata.h, metadata.c: added mono_metadata_guid_heap().
29741
29742 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
29743
29744         * threads: added icall support for getting current domain for
29745                    the thread.
29746  
29747 2002-04-13  Martin Baulig  <martin@gnome.org>
29748
29749         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
29750         (MonoDebugVarInfo): Added `index' field for register based addresses.
29751         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
29752         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
29753         `MonoDebugVarInfo *params' and `guint32 this_offset' with
29754         `MonoDebugVarInfo *this_var'.
29755
29756         * debug-symfile.c (relocate_variable): New static function to write
29757         a location description for a local variable or method parameter.
29758
29759 2002-04-12  Martin Baulig  <martin@gnome.org>
29760
29761         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
29762         stack offset and begin/end scope address of a local variable.
29763         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
29764         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
29765         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
29766
29767         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
29768         Added new relocation types for start/end scope of a local variable.
29769
29770 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29771
29772         * object.h: add mono_object_domain() macro.
29773         * reflection.c: handle typespecs.
29774         * icall.c: MonoMethod::get_Name() implementation.
29775
29776 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29777
29778         * icall.c: String::GetHashCode() icall implementation.
29779
29780 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29781
29782         * icall.c: String::IndexOfAny icall.
29783         * object.c, object.h: make array->max_length more useful.
29784         Intrduced mono_object_class() and mono_string_length() macros.
29785
29786 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29787
29788         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
29789         instead of g_unichar_isdigit.
29790
29791 2002-04-11  Nick Drochak  <ndrochak@gol.com>
29792
29793         * icall.c: Implement a simple Double.ToString().
29794
29795 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29796
29797         * appdomain.h: only io-layer.h is supposed to be included.
29798         * icall.c: explicitly import environ. Fix warning.
29799
29800 2002-04-10  Nick Drochak  <ndrochak@gol.com>
29801
29802         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
29803                 return true even if it's not Daylight Savings time.
29804                 Only return false for the case where the function isn't
29805                 implemented for a plaform (read Windows).
29806
29807 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29808
29809         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
29810         data with a mutex.
29811
29812 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
29813
29814         * mempool.c (mono_mempool_alloc): only use g_malloc when
29815         absolutely necessary.
29816
29817 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29818
29819         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
29820
29821         * class.c (mono_class_vtable): use domain mempool to allocate vtable
29822         (mono_class_proxy_vtable): use domain mempool
29823
29824 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29825
29826         * appdomain.h, appdomain.c: split initialization that requires the
29827         execution engine support into mono_runtime_init().
29828
29829 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29830
29831         * class.c (mono_class_init): don't include vtable inside MonoClass
29832         to save some memory, gather some statistics.
29833         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
29834
29835 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29836
29837         * icall.c: internalcall implementation for ValueType.Equals().
29838
29839 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
29840
29841         * object.c (mono_message_init): moved 
29842         (mono_runtime_exec_main): new arch. independent impl.
29843         (mono_runtime_invoke_array): new method - like
29844         mono_runtime_invoke, but you can pass an array of objects.
29845         (mono_remoting_invoke): new arch. independent impl.
29846         (mono_message_invoke): new arch. independent impl.
29847         (mono_runtime_class_init): new arch. independent impl.
29848         (mono_runtime_object_init): new arch. independent impl.
29849
29850 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29851
29852         * metadata.c, object.c, reflection.c: documented the exported
29853         functions.
29854
29855 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
29856
29857         * icall.c: simpler code to pass the assembly builder data to corlib.
29858         Implement GetNestedTypes() internalcall.
29859
29860 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29861
29862         * class.c: warn if a type can't be loaded.
29863
29864 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
29865
29866         * image.h: typedef MonoImageOpenStatus
29867         * types.h: removed unused file
29868         
29869 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
29870
29871         * icall.c: Enum_ToObject accepts enum value arguments.
29872
29873 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29874
29875         * class.c: move initialization of properties, events and nested
29876         classes, so that they happen for interfaces, too.
29877
29878 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29879
29880         * icall.c: cleanup some ugly casts in Array_SetValue*.
29881
29882 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29883
29884         * icall.c: the values array fro enums is of the correct type, now.
29885         Implement (correctly) getFullName instead of assQualifiedName for
29886         MonoType.
29887         * reflection.h, reflection.c: added mono_type_get_name ().
29888
29889 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29890
29891         * assembly.c, image.h: for each MonoImage, record from wich assembly
29892         it was loaded.
29893         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
29894         Make Type.Assembly work.
29895
29896 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
29897
29898         * debug-symfile.h: use char* instead of gpointer to avoid
29899         unnecessary casts.
29900
29901         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
29902
29903         * icall.c (ves_icall_InternalExecute): impl. FielSetter
29904         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
29905
29906 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
29907
29908         * icall.c (mono_message_init): impl. (code cleanup)
29909         (ves_icall_InternalExecute): impl. FieldGetter
29910
29911         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
29912         defined we call all (non-static)methods through the vtable. 
29913
29914 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
29915
29916         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
29917         finalizer even though the memory is still referenced (and the chunk of
29918         memory is not freed).
29919
29920 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
29921
29922         * assembly.c: fix brokeness.
29923
29924 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
29925
29926         * class.c: kill some warnings. Check explicit interface method
29927         implementation also without considering the namespace.
29928         Load also literal strings in static class data.
29929
29930 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
29931
29932         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
29933         (default_assembly_name_resolver): Make the resolver take the
29934         "base" directory where the assembly was originally defined, so we
29935         can load DLLs that are in the same directory as the assembly that
29936         is being referenced.
29937
29938 2002-03-28  Dick Porter  <dick@ximian.com>
29939
29940         * file-io.h: 
29941         * file-io.c:
29942         * socket-io.c: 
29943         * unicode.h: 
29944         * unicode.c: Warning cleanups
29945
29946 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
29947
29948         * object.h, reflection.h: use the correct type instead of MonoObject.
29949
29950 2002-03-28  Martin Baulig  <martin@gnome.org>
29951
29952         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
29953         (mono_debug_update_symbol_file): Initialize classes if necessary.
29954
29955 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
29956
29957         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
29958         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
29959
29960 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
29961
29962         * assembly.h: fix function prototype.
29963         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
29964         * mono-endian.h: use const cast.
29965
29966 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
29967
29968         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
29969
29970 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
29971
29972         * loader.c: don't assert when a typeref can't be loaded, give
29973         a chance to the runtime to trow an exception instead.
29974         * loader.h: fix warning.
29975
29976 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
29977
29978         * class.c (mono_class_proxy_vtable): added proxy support
29979
29980 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
29981
29982         * icall.c: removed last of PAL calls, added System.Environment
29983         * file-io.h, file-io.c: MonoIO implementation
29984         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
29985
29986 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
29987
29988         * appdomain.c: do not use the byte marker in ldstr table lookup.
29989         * debug-helpers.c: allow two ':' to separate class and method name.
29990         * object.c: allocate arrays bounds with the GC, too.
29991         * verify: add a few more checks.
29992
29993 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
29994
29995         * reflection.c: output also literal strings. Allocate parameter data
29996         with GC_malloc() (thanks, Martin, for catching this!).
29997
29998 2002-03-26  Martin Baulig  <martin@gnome.org>
29999
30000         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
30001         include the `this' offset in the `param_offsets'.
30002
30003 2002-03-25  Martin Baulig  <martin@gnome.org>
30004
30005         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
30006         mono_debug_get_class() function to get the classes. Added new
30007         relocation types for arrays and strings.
30008         (mono_debug_get_class): New static function to search in all
30009         referenced assemblies for a metadata token.
30010
30011         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
30012
30013 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30014
30015         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
30016         hold gc-allocated objects. Make the string heap a stream like the
30017         others. Removed duplicated code when writing stream info.
30018         Added asserts to catch possible buffer overflows. Set the sorted map
30019         for tables that need sorting. Added some documentation.
30020
30021 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
30022
30023         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
30024         for interned strings and vtables.
30025
30026 2002-03-24  Martin Baulig  <martin@gnome.org>
30027
30028         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
30029         it in the array since it was created with g_slist_prepend().
30030
30031 2002-03-24  Martin Baulig  <martin@gnome.org>
30032
30033         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
30034         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
30035         (mono_debug_method_from_token): Renamed to
30036         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
30037         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
30038
30039         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
30040         relocation types.
30041
30042         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
30043
30044 2002-03-24  Martin Baulig  <martin@gnome.org>
30045
30046         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
30047         (mono_debug_method_from_token): New func.
30048
30049         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
30050         New interncall, calls mono_debug_local_type_from_signature().
30051         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
30052         calls mono_debug_method_from_token().
30053
30054 2002-03-23  Martin Baulig  <martin@gnome.org>
30055
30056         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
30057         specifies the number of bytes to be converted, not the array size.
30058         Return the number of chars, not the number of bytes.
30059         (ves_icall_iconv_get_chars): The `byteCount' argument
30060         specifies the number of bytes to be converted, not the array size.
30061
30062 2002-03-23  Martin Baulig  <martin@gnome.org>
30063
30064         * reflection.h (MonoReflectionSigHelper): New type.
30065
30066         * reflection.c (mono_reflection_sighelper_get_signature_local),
30067         (mono_reflection_sighelper_get_signature_local): New functions.
30068
30069         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
30070         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
30071         interncalls.
30072
30073 2002-03-23  Martin Baulig  <martin@gnome.org>
30074
30075         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
30076         is_writeable is set.
30077         (mono_raw_buffer_update): New function to write the modified map
30078         back to disk.
30079
30080         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30081
30082         * debug-symfile.c (mono_debug_update_symbol_file): Call
30083         mono_raw_buffer_update() when done writing.
30084
30085 2002-03-23  Martin Baulig  <martin@gnome.org>
30086
30087         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30088
30089         * debug-symfile.c: Added support for arguments and local variables.
30090
30091 2002-03-23  Dick Porter  <dick@ximian.com>
30092
30093         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30094         protected by ifdefs, hence breaking the w32 build.
30095
30096 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30097
30098         * object.c: implement is_interned() the right way.
30099
30100 2002-03-21  Martin Baulig  <martin@gnome.org>
30101
30102         * debug-symfile.[ch]: New files to handle debugging information
30103         files. There's also support to dynamically update these symbol
30104         files to include machine dependent information.
30105
30106 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30107
30108         * threads.c (mono_thread_create): new function to create thread
30109         from C
30110
30111 2002-03-20  Martin Baulig  <martin@gnome.org>
30112
30113         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30114         method is a constructor.
30115         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30116         points to ves_icall_InternalInvoke().
30117
30118 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30119
30120         * file-io.c: Flush shouldn't throw exceptions.
30121
30122 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30123
30124         * file-io.c: FileStream flush support; FileSetLength now
30125         restores file pointer.
30126
30127 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30128
30129         * class.c: set image for pointer classes.
30130
30131 2002/03/19  Nick Drochak <ndrochak@gol.com>
30132
30133         * sysmath.c: Forgot one.
30134
30135 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30136
30137         * sysmath.c: Avoid redefining existing names.
30138
30139 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30140
30141         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30142         handled by runtime as icall rather than dllimport from libm.so
30143         * file-io.c, file-io.h: fixed handle argument type.
30144
30145 2002-03-18  Dick Porter  <dick@ximian.com>
30146
30147         * reflection.c (mono_image_get_type_info): rename interface to
30148         iface, because of "#define interface struct" on windows.
30149
30150 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30151
30152         * class.c, class.h: rename and export mono_ptr_class_get().
30153         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30154         * reflection.c, reflection.h, icall.c: better/saner type name
30155         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30156         method signatures.
30157
30158 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30159
30160         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30161
30162         * icall.c (ves_icall_InternalInvoke): impl.
30163
30164 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30165
30166         * reflection.c: output the interface map table, too.
30167
30168 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30169
30170         * class.c (class_compute_field_layout): separate computation of 
30171         static field layout
30172
30173 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30174
30175         * icall.c: added System.Buffer support.
30176         * file-io.c: moved file icalls from PAL to FileStream.
30177
30178 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30179
30180         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30181
30182 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30183
30184         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30185
30186 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30187
30188         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30189
30190 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30191
30192         * debug-helpers.{c,h}: moved here from monograph some useful functions
30193         to locate a method by name/signature in a class or image. Included
30194         also a small and flexible IL disassembler.
30195
30196 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30197
30198         * reflection.c: fixup tokens in methods with small header size, too.
30199
30200 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30201
30202         * object.c (mono_string_to_utf8): remove assert(!error), instead
30203         print a warning. 
30204
30205 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30206
30207         * icall.c: update to the new mono_Array_class_get interface.
30208
30209 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30210
30211         * appdomain.c, object.c: Boehm-GC enable.
30212         * icall.c: make get_data_chunk() support split data requests.
30213         Ensure a class is initialized in more cases. Return only the first
30214         property found in GetProperties() or the compiler gets confused. 
30215         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30216         * reflection.h, reflection.c: add fixup mechanism for field and method
30217         tokens. Initialize assembly->typeref in a single place. Output
30218         properties after events. Support custom attributes for events, too.
30219         Typo fix for paramter custom attrs.
30220
30221 2002-03-07  Martin Baulig  <martin@gnome.org>
30222
30223         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30224
30225 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30226
30227         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30228
30229 2002-03-06  Martin Baulig  <martin@gnome.org>
30230
30231         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30232         non-zero lower bounds. See testcases #F10-#F13.
30233
30234 2002-03-05  Martin Baulig  <martin@gnome.org>
30235
30236         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30237
30238         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30239         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30240         here.
30241         (ves_icall_System_Array_SetValue): Likewise.
30242         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30243         as argument and does the actual work. This function is used when copying a
30244         multi-dimensional array.
30245         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30246         now do all the widening conversions of value types.
30247         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30248
30249 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30250
30251         * class.c: remove some magic numbers and use the smbolic names,
30252         instead. Added init_events() to load event info at class init time.
30253         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30254         and mono_metadata_methods_from_event().
30255         * reflection.h, reflection.c: added support for writing out the evnets
30256         related information.
30257
30258 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30259
30260         * reflection.h, icall.c: use a different method (GetInterfaces)
30261         to gather interface info and add isbyref, isprimitive and
30262         ispointer to the ves_icall_get_type_info() return value.
30263
30264 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30265
30266         * class.h: stared adding support for events.
30267         * icall.c: split find_members implementation. Added debug icall to get
30268         the address of an object.
30269         * reflection.c: handle TypeBuilders in mono_type_get_object().
30270
30271 2002-03-01  Martin Baulig  <martin@gnome.org>
30272
30273         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30274         ArgumentOutOfRangeException(), not an ArgumentException().
30275         (ves_icall_System_Array_GetLowerBound): Likewise.
30276         (ves_icall_System_Array_GetValue): Improved argument checking.
30277         (ves_icall_System_Array_SetValue): Improved argument checking.
30278
30279 2002-03-01  Martin Baulig  <martin@gnome.org>
30280
30281         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30282         called with invalid arguments rather than just dying with g_assert().
30283         (ves_icall_System_Array_SetValue): Likewise.
30284         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30285         raise a NotImplementedException instead.
30286         (ves_icall_System_Array_GetLength): Added argument checking.
30287         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30288
30289 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30290
30291         * object.h (mono_assert): new macros mono_assert and
30292         mono_assert_not_reached
30293
30294 2002-02-28  Martin Baulig  <martin@gnome.org>
30295
30296         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30297         and "System::String::IsInterned" to "System::String::_IsInterned".
30298
30299 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30300
30301         * icall.c: remove hacks for typebuilder. Added icall to create a
30302         modified type from a tybebuilder.
30303         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30304         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30305         to create a backing MonoClass for a TypeBuilder.
30306
30307 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30308
30309         * class.c, class.h: more refactoring of class init.
30310         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30311
30312 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30313
30314         * marshal.c, marshal.h: start of marshaling interface.
30315
30316 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30317
30318         * icall.c: fix order in assembly qualified name icall.
30319
30320 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30321
30322         * class.c: do not free str, since we store it in the hash table.
30323         * reflection.h: add label field to MonoILExceptionInfo.
30324         * reflection.c: handle references to more than one assembly. Handle
30325         case when there isn't a module created in the assembly.
30326
30327 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30328
30329         * class.c: Fix typo. Start refactoring of class init code.
30330
30331 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30332
30333         * appdomain.c: exit with 1 on error.
30334         * class.c: we already have the name in MonoClassField.
30335         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30336         MonoStreamHeader instead of an offset of image->raw_metadata.
30337
30338 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30339
30340         * appdomain.c (mono_init): Be even more descriptive about the error.
30341
30342 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30343
30344         * appdomain.c: give the user an informative message when corlib can't
30345         be loaded.
30346
30347 2002-02-26  Martin Baulig  <martin@gnome.org>
30348
30349         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30350         New icall to get the time zone data.
30351
30352 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30353
30354         * reflection.c: set virtual and raw size of section correctly.
30355         * threads.c: transfer domain information to newly created threads.
30356
30357 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30358
30359         * class.c: when instancing a class in a domain, load the default
30360         vaules for static fields from the constant table. Fix System.Enum to
30361         not be an enum.
30362         * icall.c: implement Object::GetType() internalcall. Implemented
30363         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30364         Fixed checking of binding flags in find_members().
30365         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30366         * reflection.c: handle enumerations when writing to the constant
30367         table. Use a different object cache for types.
30368
30369
30370 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30371
30372         * object.c (mono_object_isinst): fix for arrays
30373
30374         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30375
30376 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30377
30378         * object.c: don't use mprotect ()  and fix intern pool hash table
30379         lookup for big endian systems.
30380
30381 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30382
30383         * icall.c: change type_is_subtype_of () signature.
30384
30385 2002-02-21  Mark Crichton  <crichton@gimp.org>
30386
30387         * rand.c, rand.h: Added random number generator for
30388         System.Security.Cryptography classes.
30389
30390         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30391
30392         * icall.c: Added System.Security.Cryptography calls.
30393
30394 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30395
30396         * class.c, icall.c, metadata.c: better support for pointer types.
30397         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
30398         * reflection.c: Add support for getting custom attrs for properties
30399         and simplify some code.
30400
30401 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30402
30403         * icall.c: change getToken () and add custom attribute GetBlob()helper
30404         method.
30405         * reflection.h: add custom attrs array to the reflection builder structures.
30406         * reflection.c: encode and emit custom attributes for all the relevant
30407         reflection objects. Cache fieldref and methodref tokens. Change
30408         mono_image_create_token() interface to take a MonoDynamicAssembly.
30409         More complete custom attributes decoder. Load custom attributes for
30410         Assembly, Field, Method and Constructor objects, too. Make the
30411         returned array an Attribute[] one, not object[]. Added
30412         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
30413         custom attribute constructor.
30414
30415 2002-02-20  Dick Porter  <dick@ximian.com>
30416
30417         * icall.c:
30418         * rawbuffer.c:
30419         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
30420         problem code out for now).
30421
30422 2002-02-19  Radek Doulik  <rodo@ximian.com>
30423
30424         * object.c (mono_ldstr): use hash table to avoid multiple swapping
30425
30426 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
30427
30428         * icall.c: register the GetCustomAttributes method.
30429         * object.c, object.h: add mono_string_new_len ().
30430         * reflection.h, reflection.c: added mono_runtime_invoke(),
30431         mono_install_runtime_invoke(). Added
30432         mono_reflection_get_custom_attrs () to load custom attributes and
30433         create the attribute objects.
30434
30435 2002-02-19  Dick Porter  <dick@ximian.com>
30436         * threads-dummy-types.c:
30437         * threads-dummy-types.h:
30438         * threads-dummy.c:
30439         * threads-dummy.h:
30440         * threads-pthread-types.c:
30441         * threads-pthread-types.h:
30442         * threads-pthread.c:
30443         * threads-pthread.h:  Deleted obsolete files
30444
30445 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
30446
30447         * class.c (mono_class_vtable): runtime init the class when we
30448         allocate static class data.
30449
30450         * icall.c (ves_icall_System_Array_SetValue): check for null values.
30451
30452         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
30453         and String - but we will need generic marshalling support in the
30454         future. 
30455         (mono_init): set the domain name in a ms compatible way
30456
30457         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
30458         String[].
30459
30460 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
30461
30462         * object.c (mono_array_clone): use alloca() instead of g_malloc  
30463         for sizes
30464
30465         * appdomain.c (mono_domain_unload): impl.
30466
30467 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30468
30469         * appdomain.c, object.c: fix intern pool implementation.
30470         * class.c: fix alignment code.
30471
30472 2002-02-16  Radek Doulik  <rodo@ximian.com>
30473
30474         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
30475         and s2 > s1, just copy lower bytes to be compatible with little
30476         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
30477         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
30478
30479         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
30480         force big_endian to be 1 for big endian machines 
30481         (ves_icall_iconv_new_decoder): ditto
30482
30483 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
30484
30485         * socket-io.c (convert_sockopt_level_and_name): If the system
30486         doesn't define SOL_IP or SOL_TCP, get them by hand using
30487         getprotobyname() and caching the values (because this could be a
30488         slow operation).
30489         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
30490         Use the appropriate struct when the system does support it. Ie,
30491         not all systems have struct ip_mreqn so use struct ip_mreq when
30492         appropriate.
30493
30494 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
30495
30496         * reflection.c: handle finally clauses.
30497
30498 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
30499
30500         * socket-io.c: use g_snprintf() instead of snprintf.
30501
30502 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30503
30504         * reflection.c (mono_param_get_objects): Cast second argument to
30505         mono_method_get_param_names to a const char** to silence the
30506         compiler warning.
30507
30508         * appdomain.c (mono_domain_assembly_open): Put parens around the
30509         truth statement in the for-loop.
30510
30511         * unicode.c (iconv_convert): Got rid of a compiler warning about
30512         int i being unused when the system has a new iconv.
30513         (iconv_get_length): Same.
30514
30515         * image.c (load_class_names): Cast the second argument to
30516         g_hash_table_insert() to char* to hush compiler warnings about the
30517         arg being a const.
30518         (mono_image_open): Same here.
30519
30520         * socket-io.c: Don't conditionally include sys/filio.h or
30521         sys/sockio.h here anymore since we now get them from
30522         io-layer/io-layer.h
30523         (inet_pton): If the system doesn't support inet_aton, implement
30524         using inet_addr and also #define INADDR_NONE if it isn't defined
30525         by the system.
30526
30527 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30528
30529         * metadata.c, metadata.h: added function to get packing and size info
30530         of a typedef.
30531         * reflection.h, reflection.c: handle field RVA data. Save info about
30532         the table layout if needed. Assign typedef indexes to all the types
30533         before dumping the info about them to avoid forward reference problems.
30534
30535 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
30536
30537         * socket-io.c (convert_sockopt_level_and_name): ifdef
30538         SO_ACCEPTCONN because it is not defined on my system (old debian)
30539
30540 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30541
30542         * opcode.c: use stddef.h to get NULL.
30543
30544 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30545
30546         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
30547         for FIONBIO, FIONREAD and SIOCATMARK.
30548         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
30549         define INADDR_NONE and besides, inet_addr() is deprecated and
30550         should not be used. Use inet_pton() instead - it also has the
30551         added bonus that it can easily handle IPv6 addresses as well.
30552         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
30553
30554 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30555
30556         * decimal.c: remove _MSC_VER conditional.
30557
30558 2002-02-13  Dick Porter  <dick@ximian.com>
30559
30560         * socket-io.c: 
30561         * icall.c: Internal calls for Blocking, Select, Shutdown,
30562         GetSocketOption and SetSocketOption
30563
30564 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30565
30566         * assembly.cs: better resolver: use it instead of some kludgy
30567         code.
30568
30569 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
30570
30571         * reflection.c: the best way to speed-up the compiler is to avoid
30572         infinite loops.
30573
30574 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
30575
30576         * class.c (mono_class_vtable): changed the object layout
30577         (obj->vtable->class). 
30578         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
30579
30580 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30581
30582         * assembly.c: look for assemblies in the assembly dir, too.
30583
30584 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30585
30586         * class.c: fix thinko in mono_class_from_type().
30587
30588 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30589
30590         * exception.h, exception.c: added TypeLoadException.
30591         * object.h, object.c: added mono_array_clone ().
30592         * icall.c: handle throwOnError in AssemblyGetType().
30593         Added Array.Clone().
30594         * opcode.h, opcode.c: use a single value for the opcode val.
30595         Compile fix for non-gcc compilers.
30596
30597 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
30598
30599         * opcodes.c, opcodes.h: export interesting info about opcodes.
30600
30601 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
30602
30603         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
30604         icalls. 
30605
30606         * class.c (class_compute_field_layout): set element_class for enums
30607         (mono_class_create_from_typedef): set element_class for normal classes
30608
30609         * icall.c (ves_icall_System_Enum_get_value): impl.
30610
30611         * class.c (mono_class_create_from_typedef): do not set valuetype
30612         flag for System.ValueType and System.Enum
30613
30614 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
30615
30616         * unicode.c (iconv_convert): fix big endian problem.
30617
30618 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30619
30620         * class.c: add asserts if we are ever going to scribble over memory.
30621         * socket-io.c: not all systems have AF_IRDA defined.
30622
30623 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
30624
30625         * class.c (class_compute_field_layout): do not consider static
30626         fields to compute alignment
30627
30628 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
30629
30630         * appdomain.c (mono_appdomain_get): impl.
30631         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
30632
30633 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30634
30635         * icall.c: ignore "file://" prefix when loading an assembly.
30636
30637 2002-01-23  Dick Porter  <dick@ximian.com>
30638
30639         * socket-io.c:
30640         * icall.c:
30641         * Makefile.am: Added socket support
30642
30643 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30644
30645         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
30646         code back.  This should return the assemblies that are loaded by
30647         the runtime on behalf of an application domain. 
30648
30649         The current implementation is still broken, it just returns every
30650         assembly loaded, but until we get real applications domain this
30651         will do.
30652
30653 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
30654
30655         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
30656         AppDomain object.
30657
30658 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30659
30660         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
30661         the mono_class_from_name lookup.
30662         (ves_icall_get_parameter_info): ditto.
30663         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
30664         method.
30665         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
30666
30667 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
30668
30669         * class.c: load also nested classes on class init.
30670         System.ValueType instance methods gets passed boxed
30671         values, unless methods in derived classed that get a pointer to the
30672         data.
30673         * icall.c: use better name parsing code in GetType().
30674         * image.c, image.h: add mono_image_loaded ().
30675         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
30676         * reflection.c, reflection.h: added mono_reflection_parse_type().
30677
30678 2002-01-22  Veronica De Santis <veron78@interfree.it>
30679
30680         * icall.c : Added mapping of internal calls for Manual and Auto reset events
30681         * threads.c : Added the implementation of internal calls for events
30682         * threads.h : Added prototypes of internal calls for events
30683         
30684 2002-01-21  Radek Doulik  <rodo@ximian.com>
30685
30686         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
30687
30688 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
30689
30690         * class.c (mono_class_init): set min_align to 1 (instead of 0)
30691         (mono_class_value_size): use min_align
30692
30693 2002-01-20  Dick Porter  <dick@ximian.com>
30694
30695         * threads.h:
30696         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
30697         so it compiles on w32.
30698
30699 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
30700
30701         * metadata.c (mono_type_stack_size): impl.
30702
30703         * class.c (mono_class_get_field): impl. memberref token
30704
30705 2002-01-16 Veronica De Santis <veron78@@interfree.it>
30706
30707         * icall.h : Added the internal calls mapping for CreateMutex_internal
30708                     and ReleaseMutex_internal.
30709         * threads.h : Added the prototype of mutexes internal calls.
30710         * threads.c : Added the implementations of mutexes internal calls.
30711
30712 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30713
30714         * metaparse.h: removed unused file.
30715         * reflection.c, reflection.h: added stream_data_align () function 
30716         to align data in streams and keep stream aligned. Add support for
30717         exception support in method headers.
30718
30719 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
30720
30721         * unicode.c: make iconv_convert () return the number of bytess written
30722         in the output buffer.
30723
30724 2002-01-15  Dick Porter  <dick@ximian.com>
30725         * threads.c: Make the runtime's idea of infinite timeouts coincide
30726         with the class library's
30727
30728         Fix a particularly egregious bug in mono_thread_cleanup(). That
30729         code was so utterly bogus it must have been written on a Monday.
30730
30731 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30732
30733         * reflection.h: add subtypes field to TypeBuilder.
30734         * reflection.c: encode constants for literal fields.
30735         Handle subtypes. Fix user string token (and add a zero byte)
30736         at the end.
30737         
30738 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
30739
30740         * class.c (mono_class_init): bug fix: assign slot numbers for
30741         abstract methods.
30742
30743 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30744
30745         * reflection.c: don't try to output a code RVA for abstract methods.
30746         Small fixes for method header format. Output parameter info to the
30747         ParamDef table. Save method overriding info to MethodImpl table.
30748         Fix property support. Allow typedef.extends to be a type in the
30749         building assembly.
30750         * verify.c: fix off-by-one error.
30751
30752 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
30753
30754         * class.c: fix mono_class_from_mono_type () for szarray types.
30755         Remove unused cache check in mono_class_from_type_spec().
30756         * icall.c: *type_from_name () functions handle simple arrays and byref.
30757         * reflection.c: handle byref and szarray types. Handle methods without
30758         body (gets P/Invoke compilation working). Handle types and fields in
30759         get_token ().
30760         * reflection.h: add rank to MonoTypeInfo.
30761
30762 2002-01-10  Dick Porter  <dick@ximian.com>
30763
30764         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
30765         internal calls
30766
30767 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30768
30769         * icall.c: initialize class in type_from_handle ().
30770         Loop also in parent classes for get_method ().
30771         * reflection.c: properly encode class and valuetype types.
30772         Start on encoding TypeBuilder types. Handle fieldrefs.
30773         Use correct length when registering a user string.
30774         Handle ConstructorBuilder and MonoMethod in get_token ().
30775         Make mono_type_get_object () aware of cached types.
30776         * object.c: back out change to mono_string_new ().
30777
30778 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
30779         * object.c: mono_string_new should return a NULL when the string 
30780         passed in is NULL -- not try to deference it.
30781         
30782 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30783
30784         * icall.c: hack to make IsSubType work for TypeBuilders.
30785         * reflection.c: emit constructors before methods.
30786         Retrieve param names in mono_param_get_objects().
30787
30788 2002/01/05  Nick Drochak  <ndrochak@gol.com>
30789
30790         * Makefile.am: fix list of headers and sources so automake 1.5
30791         doesn't complain. Removed \# at end of list.
30792
30793 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30794
30795         * reflection.c: get token for a method ref. Set return type of
30796         constructor to void.
30797         * loader.c: debug message.
30798         * class.c: typo fix.
30799
30800 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
30801
30802         * icall.c: fix array init with rank > 1. FindMembers
30803         loops in parent class as well.
30804         * image.c: do not insert nested types in name cache.
30805         * reflection.c: warning fix.
30806         * reflection.h: add override method (for interface impl).
30807
30808 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
30809
30810         * metadata.c: fix customattr decoding.
30811
30812 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
30813
30814         * rawbuffer.cs: Added native Win32 implementation, avoids using
30815         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
30816
30817 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
30818
30819         * class.c: make the low-level routines handle the cache.
30820
30821 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
30822
30823         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
30824
30825 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
30826
30827         * class.c: fix mono_array_element_size() for objects.
30828         * class.h, class.c: add properties to MonoClass and load them
30829         at init time.
30830         * icall.c: check with isinst() when assigning a value to an array
30831         instead of requiring the classes to match exactly.
30832         Implemented icall for System.Type::GetType().
30833         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
30834         enums. Handle bindingflags when looking for methods and fields.
30835         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
30836         and mono_metadata_methods_from_property().
30837         * reflection.h, reflection.c: added structures for propreties,
30838         parameters and enums. Implemented mono_property_get_object() and
30839         mono_param_get_objects().
30840
30841 2001-12-18  Dick Porter  <dick@ximian.com>
30842
30843         * file-io.c: Use mono_string_to_utf16() instead of
30844         mono_string_chars()
30845
30846         * object.c: Added mono_string_to_utf16(), which copies the non
30847         NULL-terminated MonoString into a new double-null-terminated
30848         buffer.
30849
30850 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
30851
30852         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
30853
30854 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
30855
30856         * file-io.c: raise exceptions if handle is invalid.
30857
30858 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
30859
30860         * assembly.c: yet another check for mscorlib.
30861         * class.c, class.h: load nesting info for classes.
30862         * icall.c: many new functions to support the Reflection classes.
30863         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
30864         * reflection.h, reflection.c: mono_image_create_token(),
30865         mono_assembly_get_object(), mono_type_get_object(),
30866         mono_method_get_object(), mono_field_get_object(): methods to return
30867         objects that parallel the C representation of assemblies, types,
30868         methods, fields.
30869
30870 2001-12-11  Dick Porter  <dick@ximian.com>
30871
30872         * icall.c:
30873         * file-io.c: Internal calls for file IO.
30874
30875 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
30876
30877         * tabledefs.h: missing FileAttributes.
30878         * verify.h, verify.c: use is_valid_string () to simplify and check for
30879         valid strings more correctly. Fix warnings and speeling.
30880         Check more tables: Filed, File, ModuleRef, StandAloneSig.
30881         Check code: branches, maxstack, method calls.
30882
30883 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
30884
30885         * object.c (mono_object_allocate): removed static, so that the jit
30886         can allocate value types.
30887
30888         * icall.c (ves_icall_System_DateTime_GetNow): impl.
30889
30890 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30891
30892         * class.c: init enum types right away and register the
30893         token->MonoClass map in mono_class_create_from_typedef ().
30894         * verify.h, verify.c: first cut of the verifier.
30895         * pedump.c: add --verify switch to verify metadata tables.
30896         * tabledefs.h: add some missing enums.
30897
30898 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
30899
30900         * class.c (mono_install_runtime_class_init): impl.
30901         (mono_class_init): renamed mono_class_metadata_init to
30902         mono_class_init, also removed the metadata_inited flag
30903
30904         * object.c (mono_object_isinst): use faster algorithm
30905
30906 2001-11-30  Radek Doulik  <rodo@ximian.com>
30907
30908         * mono-endian.h: reverted last change
30909         added function prototypes
30910
30911         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
30912         add mono-endian.c back
30913
30914         * mono-endian.c: returned back, as Paolo pointed out, it's needed
30915         for unaligned access, I've mistaked it with endianess. I am
30916         sorry.
30917         (mono_read16): fix reverted endianess
30918         (mono_read64): ditto
30919         (mono_read32): ditto
30920
30921 2001-11-30  Dick Porter  <dick@ximian.com>
30922
30923         * exception.c: Implement mono_exception_from_name()
30924
30925 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
30926
30927         * metadata.h, metadata.c: remove params_size and locals_size and their
30928         calculation from the metadata code: they are only usefult to the
30929         interp.
30930
30931 2001-11-29  Radek Doulik  <rodo@ximian.com>
30932
30933         * object.c (mono_ldstr): swap bytes here, it's probably not the
30934         best place, but works for me now, I'll redo it once I know mono
30935         better, also note that I add PROT_WRITE and don't reset back, also
30936         note that it's only affects big endians, so x86 should be OK
30937
30938         * mono-endian.h (read16): use just glib macros for both endians
30939
30940         * mono-endian.c: removed as glib macros are used in in
30941         mono-endian.h so we don't need to care about endianess for read
30942         macros as glib does that for us already
30943
30944 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
30945
30946         * class.h, class.h: take minimum alignment into consideration so
30947         that the fields of a class remain aligned also when in an array.
30948
30949 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
30950
30951         * loader.h, loader.c: add mono_method_get_param_names().
30952         * class.c: 0-init class fields.
30953
30954 2001-11-26  Dick Porter  <dick@ximian.com>
30955
30956         * icall.c:
30957         * threads-types.h:
30958         * threads.c: New file that handles System.Threading on all platforms
30959
30960         * object.c: 
30961         * object.h: Remove the synchronisation struct from MonoObject,
30962         replace it with a pointer that gets initialised on demand
30963
30964         * Makefile.am: Replace all the system-specific threading code with
30965         a single file that uses the new wrapper library
30966
30967 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
30968
30969         * class.c, class.h: add mono_install_trampoline() so that the runtime
30970         can register a function to create a trampoline: removes the ugly
30971         requirement that a runtime needed to export arch_create_jit_trampoline.
30972         * object.h, object.c: added mono_install_handler() so that the runtime
30973         can install an handler for exceptions generated in C code (with
30974         mono_raise_exception()). Added C struct for System.Delegate.
30975         * pedump.c: removed arch_create_jit_trampoline.
30976         * reflection.c: some cleanups to allow registering user strings and
30977         later getting a token for methodrefs and fieldrefs before the assembly
30978         is built.
30979         * row-indexes.h: updates and fixes from the new ECMA specs.
30980
30981 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
30982
30983         * class.h, class.c: add enum_basetype field to MonoClass.
30984         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
30985         to get index in the constant table reated to a field, param or
30986         property.
30987         * reflection.h, reflection.c: handle constructors. Set public-key and
30988         version number of the built assembly to 0.
30989         * row-indexes.h: update from new ECMA spec.
30990
30991 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
30992
30993         * class.h, class.c: add a max_interface_id to MonoClass.
30994         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
30995         since it's used to do that. Added mono_type_type_from_obj().
30996         Make GetType() return NULL instead of segfaulting if the type was not
30997         found. Handle simple arrays in assQualifiedName.
30998         * object.h: add a struct to represent an Exception.
30999         * reflection.c: output call convention in method signature.
31000         Add code to support P/Invoke methods and fixed offsets for fields.
31001
31002 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
31003
31004         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
31005         the value.
31006         * icall.c: use mono_array_addr instead of array->vector: fixes the
31007         reflection image writing.
31008         * reflection.c: init call convention byte to 0 in method signature.
31009         Encode the property signature. Don't output property-related methods
31010         twice. Really process the properties for a type (don't cast a field to
31011         a property, my mom always told me that).
31012         Fix 64 bit issues in pointer alignment in a different and more
31013         readable way.
31014
31015 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
31016
31017         * loader.h: Removed type class from MonoDefaults, added monotype
31018
31019         * loader.c: Loaded MonoType, removed loading of Type
31020
31021         * icall.c (my_mono_new_object): Now returns a System.MonoType,
31022         and fills in System.Type._impl with a RuntimeTypeHandle rather
31023         than the actual MonoClass *
31024
31025         (ves_icall_type_from_handle): change from type_class to
31026         monotype_class
31027
31028         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
31029         implemented
31030
31031         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
31032         implemented
31033
31034         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
31035
31036         (ves_icall_System_Reflection_Assembly_GetType): implemented
31037
31038         (ves_icall_System_MonoType_assQualifiedName): implemented
31039
31040         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
31041
31042 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
31043
31044         * assembly.c (mono_assembly_open): Implement a cache for the
31045         assemblies. 
31046
31047         (mono_assembly_close): only destroy the assembly when the last
31048         reference is gone.
31049         
31050 2001-11-09  Dick Porter  <dick@ximian.com>
31051
31052         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
31053
31054 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
31055
31056         * class.c (mono_class_metadata_init): bug fix: compute the right slot
31057
31058 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31059
31060         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
31061         from Martin Weindel.
31062         * object.h: add mono_string_chars ().
31063
31064 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
31065
31066         * reflection.c (build_compressed_metadata): Eliminates warnings
31067         and uses 64-bit clean code.
31068
31069         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
31070         (mono_type_equal): Change signature to eliminate warnings.
31071
31072 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31073
31074         * icall.c, loader.c: remove the internalcall array constructors.
31075         Changes to match the new MonoArray structure.
31076         * object.h, object.c: an array object doesn't allocate an extra
31077         vector. Add mono_array_new_full () to create jagged arrays easily.
31078
31079 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31080
31081         * metadata.h, metadata.c: add mono_metadata_field_info () to
31082         retreive all the info about a field from vairous tables.
31083         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31084         * class.h, class.c: augment MonoClassField with more info.
31085         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31086         policy and load a field's RVA if needed.
31087
31088 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31089
31090         * class.c (mono_class_metadata_init): create a trampoline for all
31091         virtual functions instead of actually compiling them.
31092
31093 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31094
31095         * class.h, class.c: include name in MonoClassField.
31096         * class.c: fix fundamental type of System.Object and System.String.
31097         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31098         tokens in ldtoken.
31099         * icall.c: remove internalcalls for the Reflection stuff that is now
31100         done in C# code.
31101         * loader.c: mono_field_from_memberref () implementation.
31102         * mono-endian.c: thinko (s/struct/union/g).
31103         * object.c, object.h: make the mono_string_* prototypes actually use
31104         MonoString instead of MonoObject.
31105         * reflection.c, reflection.h: updates for changes in the reflection
31106         code in corlib: we use C structures that map to the actual C# classes.
31107         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31108         fat method header if needed and use the info from the ILGenerator for
31109         methods. Handle fields in types. Misc fixes.
31110
31111 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31112
31113         * class.c (mono_class_metadata_init): bug fix: always allocate
31114         space for static class data
31115
31116 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31117
31118         * class.c (mono_compute_relative_numbering): use relative
31119         numbering to support fast runtime type checks.
31120
31121 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31122
31123         * class.c (mono_class_create_from_typeref): added debugging output
31124         to print class name when MonoDummy is returned instead of real class
31125
31126 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31127
31128         * class.c (mono_class_metadata_init): interface offset table now
31129         contains pointers into the vtable - this is more efficient for the jit
31130
31131 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31132
31133         * class.c (mono_class_metadata_init): use a temporary vtable (the
31134         old algorithm only worked for the interpreter, but not for the jit)
31135
31136 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31137
31138         * loader.c (method_from_memberref): use mono_class_get to get the
31139         class of an array instead of using System.Array directly.
31140         (mono_get_method): also add MEMBERREF methods to the method cache
31141         which usefull for arrays.
31142
31143 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31144
31145         * pedump.c (arch_compile_method): added to compute vtable entry
31146
31147         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31148         number of interfaces.
31149         
31150         * class.h: merged MonoArrayClass into MonoClass
31151
31152         * class.c (mono_class_create_from_typedef): compute the vtable size and
31153         allocate space to include the vtable inside MonoClass
31154         (mono_class_metadata_init): initialize the vtable
31155
31156 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31157
31158         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31159         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31160         * image.c: endian fixes by Laurent Rioux.
31161         * object.h, object.c: rename MonoStringObject to MonoString and
31162         MonoArrayObject to MonoArray. Change some function names to conform to
31163         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31164         guint16* as first argument, so don't use char*.
31165         Provide macros to do the interesting things on arrays in a portable way.
31166         * threads-pthread.c: updates for the API changes and #include <sched.h>
31167         (required for sched_yield()).
31168         * icall.c: updates for the API changes above.
31169         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31170         platforms that need them.
31171
31172 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31173
31174         * class.c: set the correct type for all the fundamental
31175         type when loading the class.
31176
31177 2001-10-05  Dick Porter  <dick@ximian.com>
31178
31179         * threads-pthread.c (pthread_mutex_timedlock): Simple
31180         compatibility version for C libraries that lack this call.
31181
31182 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31183
31184         * class.c: MonoTypes stored in MonoClass are stored as
31185         fundamental MonoTypes when the class represents a
31186         fundamental type (System.Int32, ...).
31187         The TypeHandle return by ldtoken is a MonoType*.
31188         * icall.c: ves_icall_get_data_chunk () write out all the
31189         PE/COFF stuff. Implement ves_icall_define_method (),
31190         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31191         * image.c: properly skip unknown streams.
31192         * loader.h, loader.c: add type_class to mono_defaults.
31193         * metadata.c, metadata.h: export compute_size () as
31194         mono_metadata_compute_size () with a better interface.
31195         Typo and C&P fixes.
31196         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31197         * reflection.c, reflection.h: many cleanups, fixes, output method
31198         signatures and headers, typedef and typeref info, compress the metadata
31199         tables, output all the heap streams, cli header etc.
31200         * row-indexes.h: typo fixes.
31201
31202 2001-10-04  Dick Porter  <dick@ximian.com>
31203
31204         * object.h: Add a synchronisation mutex struct to MonoObject
31205
31206         * object.c (mono_new_object): Initialise the object
31207         synchronisation mutexes
31208
31209         * icall.c: System.Threading.Monitor internal calls
31210         
31211         * threads-pthread.h:
31212         * threads-pthread.c: System.Threading.Monitor internal calls
31213
31214         * threads-types.h: New file, includes the system-specific thread
31215         structures
31216         
31217         * threads-pthread-types.h:
31218         * threads-pthread-types.c: New files, handle pthread-specific
31219         synchronisation types
31220
31221         * threads-dummy-types.h: 
31222         * threads-dummy-types.c: New files of dummy support for
31223         thread-specific types
31224
31225         * metadata.c:
31226         * image.c:
31227         * pedump.c: include mono-endian.h not endian.h
31228         
31229         * Makefile.am: More threads files.
31230         Name mono-endian.h not endian.h
31231
31232 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31233
31234         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31235         stuff and implement a few more bits.
31236         * icall.c: a field needs to be dereferenced twice. Do not use the same
31237         name for two variables in the same scope.
31238         * image.c, image.h: cleanups.
31239
31240 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31241
31242         * class.c (mono_class_metadata_init): bug fix: compute the right size
31243
31244 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31245
31246         * icall.c: implemented some of the Reflection internalcalls.
31247         * image.c, image.h: start writing out the PE/COFF image.
31248         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31249         that does the reverse than decode_blob_size ().
31250         * object.c: use mono_metadata_encode_value (). Move here
31251         temporary implementation of mono_string_to_utf8 ().
31252         * rawbuffer.c: make malloc_map static.
31253
31254 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31255
31256         * metadata.c: fix type comparison for arrays.
31257         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31258         Added a couple of new classes to monodefaults.
31259         * icall.c: added a couple of Reflection-related internalcalls.
31260         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31261         Added a byval_arg MonoType to MonoClass.
31262
31263 2001-09-28  Dick Porter  <dick@ximian.com>
31264
31265         * icall.c:
31266         * threads-pthread.h: 
31267         * threads-pthread.c: Implemented internal calls for
31268         LocalDataStoreSlot operations.  Applied mutexes around all shared
31269         data.  Reworked the thread creation and Start() operations to
31270         avoid a race condition.
31271         
31272         * threads-dummy.h:
31273         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31274
31275 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31276
31277         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31278
31279 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31280
31281         * class.c, loader.c: warn and return NULL instead of erroring out.
31282         * icall.c: added System.AppDomain::getCurDomain().
31283         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31284
31285 2001-09-25  Dick Porter  <dick@ximian.com>
31286
31287         * threads-pthread.h:
31288         * threads-pthread.c: Implemented timed thread joining and added
31289         System.Threading.Thread::Join_internal internal call
31290
31291         * icall.c: Added System.Threading.Thread::Join_internal internal call
31292
31293         * threads-dummy.h:
31294         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31295
31296 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31297
31298         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31299         mono_string_intern () to implement the semantics of the ldstr opcode
31300         and the interning of System.Strings.
31301         * icall.c: provide hooks to make String::IsIntern and String::Intern
31302         internalcalls.
31303
31304 2001-09-23  Dick Porter  <dick@ximian.com>
31305
31306         * threads-dummy.c: 
31307         * threads-dummy.h: New files of dummy threading routines
31308
31309         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31310         support code based on system specifics
31311
31312         Rename PTHREAD_LIBS to THREAD_LIBS
31313         
31314 2001-09-23  Dick Porter  <dick@ximian.com>
31315
31316         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31317         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31318         internal calls.
31319         (mono_thread_init): Set up a Thread object instance to return when
31320         the main thread calls Thread.CurrentThread
31321         (mono_thread_cleanup): Wait for all subthreads to exit
31322
31323         * icall.c: New internal calls for System.Threading.Thread::Sleep
31324         (including Schedule) and CurrentThread
31325
31326         * threads.h: New file, to insulate thread-specific stuff from the
31327         rest of the code
31328
31329 2001-09-21  Dick Porter  <dick@ximian.com>
31330
31331         * threads-pthread.h: 
31332         * threads-pthread.c: New file, for handling pthreads-style
31333         threading support.  Start() now starts a new thread and executes
31334         the ThreadStart delegate instance.
31335
31336         * icall.c: Added the internalcall for
31337         System.Threading.Thread::Start_internal
31338
31339         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31340
31341 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31342
31343         * loader.c: work around the different signatures for delegates
31344         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31345
31346 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31347
31348         * class.h, class.c: add mono_class_get_field_from_name ().
31349         * *: Fix C comments and other ANSI C issues.
31350
31351 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31352
31353         * endian.h, assembly.c: fix some endianness issues.
31354
31355 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31356
31357         * loader.h, load.c: add delegate_class to mono_defaults.
31358         Handle runtime provided methods in mono_get_method ().
31359
31360 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31361
31362         * loader.c (mono_get_method): use pinvoke for internal call
31363
31364         * icall.c: use pinvoke for internal call
31365
31366         * loader.c (method_from_memberref): set the method name
31367
31368 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31369
31370         * metadata.c: help the compiler generate better code for
31371         mono_class_from_mono_type ().
31372
31373 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31374
31375         * class.c (mono_class_metadata_init): delayed computing of the
31376         class size to mono_class_metadata_init ()
31377
31378 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31379
31380         * class.c, class.h: add an interfaces member to MonoClass.
31381         * image.c, image.h: add assembly_name field to MonoImage
31382         from the assembly table.
31383         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31384
31385 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31386
31387         * class.c: Handle Array in mono_class_from_mono_type ().
31388         * metadata.c, pedump.c: some endian fixes.
31389
31390 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31391
31392         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
31393         * metadata.c: fix small problem introduced with the latest commit.
31394
31395 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
31396
31397         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
31398         We don't need a MonoMetadata pointer anymore to compare signatures in
31399         mono_metadata_signature_equal (), update callers.
31400         Reduced memory usage an number of allocations for MonoMethodHeader and
31401         MonoMethodSignature.
31402
31403 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
31404
31405         * metadata.c: added compare for szarray.
31406
31407 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
31408
31409         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
31410         and add a couple more types to it and mono_defaults. Give an hint on
31411         classes that need implementing in our corlib and are referenced
31412         in mscorlib.
31413
31414 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
31415
31416         * class.h, class.c: keep track if a class is also an Enum.
31417         * loader.c: Implement a couple more types for use in libffi
31418         marshalling. Gives better diagnostics when failing to dlopen
31419         a library. Set method->klass for P/Invoke methods, too.
31420
31421 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
31422
31423         * class.c, class.h: add a MonoType this_arg to MonoClass that
31424         represents a pointer to an object of the class' type that
31425         can be used by the interpreter and later the type cache.
31426         Add best guess alignment info for valuetype objects.
31427
31428 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
31429
31430         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
31431         into MonoType: one less level of indirection and allocation and
31432         simplifies quite a bit of code. Added cache for MonoTypes that are
31433         used frequently, so that we don't need to allocate them all the time.
31434
31435 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
31436
31437         * class.c (mono_class_create_from_typedef): System.Enum is also a
31438         value type, although it does not derive from System.ValueType
31439         (maybe a bug in the ms compiler?)
31440
31441         * metadata.c (mono_type_size): return the right size for value types
31442
31443         * loader.c (mono_get_method): only initialize method header if not abstract
31444
31445         * class.c (mono_class_from_mono_type): use mono_default values. 
31446
31447 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
31448
31449         * *: use MonoClass pointers instead of <type_tokens>
31450         
31451         * class.h: new flag: metadata_inited.
31452
31453         * class.c (mono_class_metadata_init): impl.
31454         (mono_class_instance_size): impl.
31455         (mono_class_data_size): impl.
31456
31457 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31458
31459         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
31460         MonoClass now has the name and name_space fields. 
31461         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
31462         mono_get_method () takes and optional MonoClass as argument.
31463         Removed mono_typedef_from_name() and added mono_class_token_from_name()
31464         instead that takes advantage of a map from class names to typedef
31465         tokens in MonoImage.
31466
31467 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
31468
31469         * metadata.c: zero is not a valid alignment boundary.
31470         Merge MONO_TYPE_VOID in default decoding code.
31471
31472 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
31473
31474         * image.h: merged MonoMetadata into MonoImage
31475
31476         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
31477         identify the type of elements.
31478
31479 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
31480
31481         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
31482         * cil-coff.h: split MonoMSDOSHeader and add size info.
31483         * image.c: add some consistency checks.
31484         * metadata.c: fix row size computation: one programmer
31485         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
31486         add explanation for the locator routine.
31487         Fix decoding of size in method header.
31488         
31489 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
31490
31491         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
31492         (g_concat_dir_and_file): Bring g_concat_dir_and_file
31493         function from gnome-libs.  This uses the right path separator
31494         based on the OS, and also works around a bug in some systems where
31495         a double slash is not allowed. 
31496         (default_assembly_name_resolver): Use g_concat_dir_and_file
31497         (mono_assembly_open): ditto.
31498
31499 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
31500
31501         * metadata.c (mono_metadata_signature_equal): impl.
31502
31503         * *: void is now a realy MonoType (instead of using NULL)
31504         
31505         * metadata.c (do_mono_metadata_parse_type): use
31506         mono_metadata_parse_type to parse void value.
31507
31508 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
31509
31510         * metadata.c, metadata.h: in the signature and method header store
31511         only the space required for holding the loca vars and incoming arguments.
31512
31513 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
31514
31515         * metadata.c (do_mono_metadata_parse_type): treat void like any
31516         other type (instead of assigning NULL);
31517
31518 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
31519
31520         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
31521
31522 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
31523
31524         * image.c (do_mono_image_open): added a cache for arrays.
31525
31526 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31527
31528         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
31529         decode a single column from a row in a metadata table and changes
31530         to take advantage of it in the typedef locator (gives a nice speed up).
31531         Store offset info for function params.
31532
31533 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
31534
31535         * image.h (MONO_IMAGE_IS_CORLIB): removed 
31536
31537 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
31538
31539         * assembly.c: how could mono_assembly_close () had ever worked?
31540         * metadata.c, metadata.h: provide offset info for local vars.
31541         Implement mono_type_size () to take care of alignment as well
31542         as size (it was mono_field_type_size in cli/class.c before).
31543
31544 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
31545
31546         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
31547
31548         * assembly.h (CORLIB_NAME): set to corlib.dll
31549
31550         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
31551
31552 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31553
31554         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
31555         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
31556         tokentype.h: massive namespace cleanup.
31557
31558 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31559
31560         * metadata.h, metadata.c: decode exception clauses when parsing method header.
31561
31562 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
31563
31564         * metadata.c (mono_metadata_free_type): added check for type !=
31565         NULL (void) before calling mono_metadata_free_type()
31566
31567 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
31568
31569         * metadata.h, row_indexes.h: added header with enumerations to use
31570         to index in the columns from tables in metadata and to decode coded
31571         tokens: we should start using this instead of embedding magic numbers
31572         all over the code.
31573
31574 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
31575
31576         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
31577         Move metadata_t info from cli_image_info_t to MonoImage, where
31578         it's easily accessible. Changed all the uses accordingly.
31579         Added the method and class caches to MonoImage.
31580         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
31581         and mono_metadata_decode_value () signature to be more consistent
31582         with the other parse functions (and simplify code). Taken advantage
31583         of zero-length array allocation with GCC. Removed reduntant (and
31584         wrong) MonoFieldType struct and use MonoParam instead. Changed
31585         mono_metadata_parse_field_type () to use common code for parsing.
31586         Added mono_metadata_typedef_from_field () and
31587         mono_metadata_typedef_from_method () to lookup a typedef index from a
31588         field or method token.
31589         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
31590
31591 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
31592
31593         * metadata.c (mono_metadata_parse_field_type): Implement. 
31594         (do_mono_metadata_parse_type): Split engine from
31595         mono_metadata_parse_type, so that we can create smaller structures
31596         for things that just have one pointer to the MonoType (look at
31597         the MonoFieldType)
31598
31599 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
31600
31601         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
31602         as Jan Gray found out, it is incorrect. 
31603
31604 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
31605
31606         * assembly.c: Implement asssembly loading.  This loads an image
31607         and loads all the referenced assemblies.  Come to think of it, we
31608         could always do lazy loading of the assemblies. 
31609
31610         * image.c (mono_image_open): Keep loaded images in a hashtable.
31611
31612         * image.h (MonoImage): Add reference count.
31613
31614 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
31615
31616         * assembly.c (mono_assembly_open): Keep track of the file name in
31617         case the assembly has no ASSEMBLY table.
31618
31619         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
31620         from get.c here.
31621
31622 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
31623
31624         * metadata.c, metadata.h: decode local vars in method header
31625         parse function. Change callers accordingly.
31626
31627 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
31628
31629         * metadata.h, cil-coff.h: protect against multiple inclusion.
31630         Added some new structures to hold information decoded from metadata:
31631         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
31632         and relevant decoding/free functions.
31633         * metadata.c: implement decoding functions. Add warning for out of bounds
31634         index in mono_metadata_locate(). Implement mono_get_method () to retreive
31635         all the info about a method signature and invocation. Remove check on
31636         uninitialized local var in parse_mh() and fix memory leak.
31637
31638 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
31639
31640         * metadata.h: More macros.
31641
31642         * tokentype.h: New file.
31643
31644 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
31645
31646         * assembly.c: added a consistency check and initialize
31647         some structures with g_new0().
31648         * metadata.c: fixed a couple more bugs in table size computation
31649         and add other checks for out-of bound access to metadata.
31650
31651 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
31652
31653         * metatada.c: fix bugs computing table sizes. Spew a
31654         warning when index in string heap is out of bounds.
31655
31656 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
31657
31658         * metadata.h: Add a couple of macros to manipulate tokens. 
31659
31660 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31661
31662         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
31663         cli_section_tables).
31664
31665 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
31666
31667         * metadata.c (mono_metadata_user_string): New function, provides
31668         access to the UserString heap. 
31669
31670 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
31671
31672         * metadata.c: Add inline documentation.
31673
31674 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
31675
31676         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
31677         files. 
31678
31679 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
31680
31681         * typeattr.h: New file, TypeAttribute flags. 
31682
31683 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
31684
31685         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
31686         mono_assembly_ensure_section): Section loading code.
31687         (load_section_tables): Load the sections.
31688
31689         * mono/metadata/metadata.c (mono_metadata_locate_token,
31690         mono_metadata_locate): Functions to locate the information
31691         definition given a token or a table and an index.
31692         (mono_metadata_compute_table_bases): New.
31693         (compute_size): New function to compute the sizes of the various
31694         tables.
31695
31696         * mono/metadata/metadata.h: Finish listing the different index
31697         types. 
31698
31699         * mono/metadata/pedump.c: Improve to dump new information.
31700
31701 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
31702
31703         * mono/metadata/metadata.c: Entered all the tables matching
31704         Beta2. 
31705
31706         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
31707
31708
31709
31710