2010-02-05 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2010-02-05  Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * icall-def.h: Rename get_MetadataToken to GetMetadataToken.
4
5 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
6
7         * verify.c (mono_method_verify): Use the new basic block formation pass
8         to avoid verifying dead basic blocks. This is the same behavior as the
9         runtime MS verifier. 
10
11 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
12
13         * mono-basic-block.c:
14         * mono-basic-block.h: New implementation of a basic block formation pass.
15         The formation pass does static liveness analysis as well to detect dead
16         basic blocks.
17
18 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
19
20         * marshal.c (mono_marshal_get_native_wrapper): Emit a null check for the
21         'this' argument in icalls.
22
23 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
24
25         * reflection.c (resolve_object): Handle MonoArrayMethod. Fixes #575955.
26
27 2010-02-01  Mark Probst  <mark.probst@gmail.com>
28
29         * object.c, domain.c: When using SGen, we must register
30         vtable->type as a root if it's not a MonoType, because then it
31         wasn't pin-alloced.
32
33 2010-02-01  Mark Probst  <mark.probst@gmail.com>
34
35         * sgen-gc.c: Reset to_space_bumper to to_space_section->next_data
36         at the start of nursery collections, because we might have had
37         degraded allocations which changed next_data.
38
39 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
40
41         * marshal.c (mono_marshal_get_managed_wrapper): Avoid constructing the
42         custom attr so this function works in cross-compiling mode.
43
44 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
45
46         * class.c (make_generic_param_class): Initialize interface offsets since we
47         set klass->inited. Fixes #574819.
48
49 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
50
51         * domain.c (mono_domain_free): Send the END_UNLOAD profiler event before
52         calling the JIT domain cleanup hook.
53
54 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
55
56         * pedump.c (main): Properly set the verifier mode when running the metadata
57         verifier.
58
59 2010-01-28  Rodrigo Kumpera  <rkumpera@novell.com>
60
61         * verify.c (verify_class_for_overlapping_reference_fields): Properly verify
62         overlapping fields now that we're called before has_references is set.
63
64         * pedump.c (dump_verify_info): Clear any loader error before verifying another
65         method. Otherwise all sort of weird stuff happens.
66
67 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
68
69         * object.c (mono_field_get_value_object): Handle nullable types correctly.
70         Fixes #572874.
71
72 2010-01-25  Zoltan Varga  <vargaz@gmail.com>
73
74         * icall.c (ves_icall_System_Array_SetValueImpl): Handle nullable types correctly.
75         Fixes #573322.
76
77 2010-01-23  Mark Probst  <mark.probst@gmail.com>
78
79         * sgen-pinning.c (evacuate_pin_staging_area): Don't assume
80         pin_staging_area_index is greater than 0.
81
82 2010-01-22 Miguel de Icaza (miguel@novell.com)
83
84         * loader.c: Since we do nothing with the error returned, pass NULL
85         to ignore the error.
86
87 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
88
89         * reflection.c (typebuilder_setup_fields): Pretend field setup already
90         happened before starting to encode the actual fields. This avoid ciclic
91         dependencies and eventual crashes.
92
93         Fixes #572660.
94
95 2010-01-21  Mark Probst  <mark.probst@gmail.com>
96
97         * sgen-gc.c, gc-internal.h, object.c: Make string allocation
98         atomic and remove the half-constructed hack in SGen.
99
100 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
101
102         * metadata-verify.c (parse_generic_inst): Fail a type signature if it 
103         has a recursive reference to itself.
104
105         Fixes #571863.
106
107 2010-01-21  Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * loader.c (mono_method_signature): Fix error message.
110
111 2010-01-21  Mark Probst  <mark.probst@gmail.com>
112
113         * sgen-gc.c: Reuse to-space sections between nursery collections.
114
115 2010-01-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
116
117         * icall.c: don't raise AppDomain.TypeResolve when the type is loaded
118         from the current assembly or mscorlib. Fixes bug #322957.
119
120 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
121
122         * marshal.c: Calculate the target class of the delegete invoke wrappers using
123         get_wrapper_target_class.
124
125 2010-01-19  Mark Probst  <mark.probst@gmail.com>
126
127         * sgen-gc.c: Fix warnings.
128
129 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
130
131         * verify.c (store_local): Better error message.
132
133 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
134
135         * object.c (mono_object_get_virtual_method): Handle generic interfaces with variant
136         arguments.
137
138 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
139
140         * icall.c (ves_icall_Remoting_RemotingServices_GetVirtualMethod): This
141         function is generics variance aware.
142
143 2010-01-19  Sebastien Pouliot  <sebastien@ximian.com>
144
145         * security-core-clr.c (mono_security_core_clr_can_access_internals):
146         Handle the case where 'basedir' can be NULL (e.g. SRE assemblies)
147
148 2010-01-19  Sylvain Dupont <duposyl@gmail.com>
149
150         * cominterop.c marshal.c: Added support for marshalling in, in/byref,
151           in/out, in/out/byref parameters of type SAFEARRAY[VARIANT].
152
153         Code is contributed under MIT/X11 license.
154
155 2010-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
156
157         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Handle inflated generic methods
158         on a GTD.
159
160 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
161
162         * marshal.c (mono_marshal_wrapper_info_from_wrapper): New helper function to
163         return a point to a wrapper specific info structure describing the wrapper.
164         (mono_marshal_get_array_address): Store the rank+elem_size in the wrapper info.
165  
166 2010-01-18  Mark Probst  <mark.probst@gmail.com>
167  
168         * sgen-gc.c: Make minor collection section allowance adaptive,
169         depending on the amount of memory reclaimed in the last major
170         collection.  If more memory was reclaimed (i.e. more garbage
171         produced), do the next collection earlier.
172
173 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
174
175         * metadata-verify.c (parse_type): Fail a type signature if it has a recursive reference
176         to itself.
177
178         * metadata-verify.c (mono_verifier_verify_typespec_signature): Change signature to take
179         the token as parameter.
180
181         * verify-internals.h: Ditto.
182
183         * metadata.c (mono_type_create_from_typespec): Pass token to verifier.
184
185         Fixes #571460.
186
187 2010-01-18  Mark Probst  <mark.probst@gmail.com>
188
189         * sgen-gc.c: Make store_remset_buffer_index long.
190
191 2010-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
192
193         * class.c (mono_class_from_typeref): Fail loading of self-referencing typeref tokens.
194
195         Fixes #569579.
196
197 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
198
199         * sgen-gc.c (mono_gc_base_init): Add 'conservative_stack_mark' option to turn
200         off precise marking if it is available.
201         (mono_gc_get_bitmap_for_descr): Fix the handling of run length descriptors.
202
203 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
204
205         * sgen-gc.c (mono_gc_conservatively_scan_area): Resurrect this.
206
207         * sgen-pinning.c (evacuate_pin_staging_area): Don't assert if there are no
208         pinned objects.
209
210         * sgen-gc.c (create_allocator): Add the missing n > MONO_ARRAY_MAX_INDEX check
211         to the array allocator.
212
213 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
214
215         * generic-sharing.c (instantiate_other_info): Don't create ftnptr's from the
216         result of mono_compile_method (), it already includes an ftnptr.
217
218 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
219
220         * metadata.c (get_image_set): Remove an assert which can happen in normal use.
221
222 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
223
224         * metadata.c (mono_metadata_str_hash): New helper function to compute a stable
225         hash value which doesn't depend on glib/eglib versions.
226         (mono_metadata_type_hash): Use it.
227
228         * object.c (mono_method_get_imt_slot): Ditto.
229
230 2010-01-14  Rodrigo Kumpera  <rkumpera@novell.com>
231
232         * class.c (mono_type_has_exceptions): Check the generic instance. It can fail
233         independently of the GTD.
234
235         * class.c (mono_class_setup_fields): Fail if field has negative offset.
236
237         * class.c (mono_class_setup_fields): Fail if valuetype has zero size. Add sizeof(MonoObject)
238         to the upper limit since instance_size includes this amount.
239
240         * class.c (mono_class_layout_fields): Check if the types of the static fields have failed.
241
242         Fixes #569544.
243
244 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
245
246         * object.c (build_imt_slots): Compute the vtable slot correctly for interfaces
247         with static methods.
248
249         * object.c (build_imt_slots): Avoid asserting when static methods are
250         encountered in an interface.
251
252 2010-01-13  Mark Probst  <mark.probst@gmail.com>
253
254         * sgen-gc.c (to_space_expand): Fix assertion.
255
256 Wed Jan 13 15:42:28 CET 2010 Paolo Molaro <lupus@ximian.com>
257
258         * string-icalls.c: missing declaration fixes.
259         * sgen-gc.c: portability fixes.
260
261 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
262
263         * class.c (mono_class_get_implemented_interfaces): Now take a MonoError argument.
264
265         * class.c:
266         * cominterop.c:
267         * icall.c:
268         * object.c: 
269         * class-internals.h: Adjust for new signature of mono_class_get_implemented_interfaces.
270
271 2010-01-12  Rodrigo Kumpera  <rkumpera@novell.com>
272
273         * class.c (mono_class_setup_interfaces): Now take a MonoError argument and
274         it can fail loading the type.
275
276         * class.c: Add mono_class_inflate_generic_class_checked.
277
278         * class.c:
279         * verify.c:
280         * class-internals.h: Adjust for new signature of mono_class_setup_interfaces.
281
282 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
283
284         * loader.c (mono_method_signature_checked): New internal function taking an
285         MonoError argument.
286
287         * socket-io.c (AI_ADDRCONFIG): Applied patch from John Lightsey (jd@cpanel.net).
288         Fixes build on rh 7.3.
289
290 2010-01-10  Aaron Bockover  <abockover@novell.com>
291
292         * assembly.c (mono_set_rootdir): Support finding the mono paths on OS X
293         at runtime in the same way as on Windows, which yields a relocatable
294         Mono. Uses dyld's _NSGetExecutablePath and realpath to resolve the path
295         of the running mono process.
296
297         On TARGET_ARM, fallback () will always be executed.
298
299 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
300
301         * icall.c (ves_icall_Type_GetInterfaceMapData): This function is generics variance aware.
302
303 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
304
305         * class.c (mono_class_is_assignable_from_slow): Support variant
306         generic delegates.
307
308         * class.c (mono_class_implement_interface_slow): Support types with
309         variant generic arguments.
310
311 2010-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
312
313         * verify.c: Remove some code duplication.
314
315 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
316
317         * object.c: Update docs.
318
319 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
320
321         * object.c (add_imt_builder_entry): Improve DEBUG_IMT spew.
322
323         * object.c (build_imt_slots): Interfaces with variant generic arguments use the
324         fallback trampoline as well.
325
326         * class.c (mono_class_interface_offset_with_variance): Add new non_exact_match
327         out argument that is set to TRUE if the match was direct. 
328
329         * class.c (mono_class_is_assignable_from): Delegates require variance testing as well.
330
331         * class-internal.h: Update prototype of mono_class_interface_offset_with_variance.
332
333 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
334
335         * class.c: Add mono_class_interface_offset_with_variance function that does same
336         as mono_class_interface_offset but takes variance into account.
337
338         * class-internal.h: Export mono_class_interface_offset_with_variance.
339
340         * object.c: Fix and improve DEBUG_IMT. Added an assert for IMT thunk building.
341
342 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
343
344         * object.c:
345         * icall.c:
346         * class.c: Add some FIXME for due to variant generic arguments.
347
348         object.c (mono_object_isinst_mbyref): Interfaces with variant generic arguments
349         can't use the simple bitfield check, so call mono_class_is_assignable_from if
350         the bitfield check fails.
351
352 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
353
354         * class.c (mono_class_is_assignable_from): Rework the generics variance code
355         to be easier to read and fix bugs in the case a non generic type implements a variant
356         interface.
357
358         * class.c (mono_class_has_variant_generic_params): Make non static.
359
360         * class-internals.h: Export mono_class_has_variant_generic_params as part of
361         the private API.
362
363 2010-01-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
364
365         * assembly.c: fix MONO_PATH debug output.
366
367 2010-01-06  Atsushi Enomoto  <atsushi@ximian.com>
368
369         * culture-info-table.h : regenerated.
370
371 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
372
373         * verify.c (mono_verifier_verify_class): Properly check for broken parent. Ignore
374         types that are meant to not have a parent.
375
376 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
377
378         * marshal.c (mono_marshal_get_runtime_invoke): Make a copy of the signature
379         from the image mempool, so it is not leaked.
380
381 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
382
383         * metadata-internals.h (_MonoImage): Remove unused generic_class_cache field.
384
385 2010-01-04  Sebastien Pouliot  <sebastien@ximian.com>
386
387         * verify.c (verify_valuetype_layout_with_target): Fix case
388         that can lead to infinite recursion. Fix bug #567861
389
390 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
391
392         * pedump.c: Run code verifier even if image verification fails
393         due to a failed type we. This allows more errors to be shown.
394
395 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
396
397         * class.c (count_virtual_methods): Remove the assert and now
398         fail properly.
399         
400         * class.c (setup_interface_offsets): This can fail now.
401
402         * class.c (mono_class_setup_vtable_general): Check for parent vtable
403         errors. Check setup_interface_offsets errors.
404
405         * class.c (setup_interface_offsets): Simplify the return error logic
406         and remove class_init_ok.
407
408         Fixes #560327.
409
410 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
411
412         * class.c (mono_class_init): Do class verification at the beginning. Add
413         some asserts to avoid tripping into invalid memory.
414
415         * object.c (compute_class_bitmap): Replace a g_assert_not_reached with a
416         g_error and a decent message.
417
418         * verify.c (mono_verifier_verify_class): Verify for invalid super type.
419
420         Fixes #567548.
421
422 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
423
424         * mempool-internals.h (g_list_prepend_mempool): Define this and related functions
425         as inline functions instead of defining them in mempool.c.
426
427         * metadata-internals.h (MonoImageSet): New structure representing a set of
428         MonoImages, which own a collection of generic instances.
429
430         * metadata.c: Get rid of the global generic caches, instead assign each generic
431         instance to the image set which consists of all the images referenced by the
432         instance. This greatly speeds up mono_metadata_clean_for_image (), and allows
433         the memory used by generic instances to be allocated from a per image-set mempool
434         later.
435
436 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
437
438         * marshal.c (mono_marshal_get_runtime_invoke): Fix a memory leak.
439
440 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
441
442         * appdomain.c (zero_static_data): Fix a warning.
443
444         * locales.c (construct_culture_from_specific_name): Applied patch from
445         José Antonio Sánchez Lázaro <jasl@darcysoft.es>. Fix a crash if a culture was
446         not found. Fixes #567900.
447
448 2009-12-31  Sebastien Pouliot  <sebastien@ximian.com>
449
450         * loader.c (mono_method_get_signature_full): Remove two asserts.
451         Return NULL instead so that the verifier can handle both cases 
452         gracefully.
453
454 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
455
456         * class.c (mono_class_setup_methods): Use checked version of mono_class_inflate_generic_method_full
457         so we can properly fail types instead of crashing.
458
459         Fixes #567676.
460
461 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
462
463         * reflection.c (reflection_methodbuilder_to_mono_method): Assert in case of a broken
464         generic method.
465
466 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
467
468         * marshal.c (mono_mb_emit_restore_result): Properly handle generic enums.
469
470 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
471
472         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait): Don't close the
473         wait handle if the wait is interrupted, since it is still in mon->wait_list, and
474         we can't remove it from it since we don't hold the lock.
475         (mon_new): Free the orphaned events here when a mon structure is added to the
476         freelist. Fixes #561239. Thanks to Mike Rieker <wmrieker@nii.net> for tracking
477         this down.
478
479 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
480
481         * verify.c (init_stack_with_value_at_exception_boundary): Do stack overflow checking here
482         as max stack might be zero.
483
484         Fixes #562320.
485
486 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
487
488         Rework all uses of mono_class_setup_methods to accept that it can fail now.
489
490         * class.c (mono_class_setup_methods): This function now can fail the class. Do so for generic
491         instances if the GTD did.
492
493         * class.c (mono_class_setup_properties): Ditto.
494
495         * class.c (mono_class_setup_events): Ditto.
496
497         * class.c (mono_class_setup_vtable): Fail early if the type is already broken.
498
499         * class.c (mono_class_setup_vtable_general): Add a few more missing broken type checks. Sanitize
500         error setting.
501
502         * class.c (mono_class_init): Fail if GTD did.
503
504         * cominterop.c:
505         * generic-sharing.c:
506         * icall.c:
507         * loader.c:
508         * object.c:
509         * verify.c: Properly handle failure of mono_class_setup_methods.
510
511 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
512
513         * class-internals.c: Add mono_class_inflate_generic_method_full_checked and make
514         mono_class_inflate_generic_method_full internal.
515
516         * class.c (inflate_generic_context): Now takes a MonoError argument.
517
518         * class.c (mono_class_inflate_generic_method_full): Now calls the _checked and abort on
519         errors.
520
521 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
522
523         * generic-sharing.c (instantiate_other_info): Avoid creating jump trampolines since
524         they cannot be patched. Partly fixes #564408.
525
526 2009-12-24  Mark Probst  <mark.probst@gmail.com>
527
528         * metadata-internals.h, reflection.c: Use the
529         MonoDynamicImage.handleref hash table only with unmanaged keys,
530         and add a managed hash table handleref_managed for managed keys.
531
532 2009-12-24  Mark Probst  <mark.probst@gmail.com>
533
534         * sgen-gc.c: Unset to-space bumper between collections.  It might
535         become invalid due to degraded allocations.
536
537 2009-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
538
539         * loader.c (mono_method_get_signature_full): Check if the returned signature is compatible
540         with the one from the original method.
541
542         * metadata-verify.c (mono_verifier_is_sig_compatible): New function to verify signature
543         compatibility.
544
545         * verify-internals.h: Add new function to the internal API.
546
547 2009-12-18  Dimitar Dobrev  <dpldobrev@yahoo.com>
548
549         * culture-info-tables.h: regenerated it to include the Georgian culture.
550
551 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
552
553         * sgen-gc.c: Include mono/utils/memcheck.h.
554
555         * reflection.c (mono_reflection_get_type_internal_dynamic): Use assembly->domain
556         instead of the current domain, since the two might not match if this is called
557         from the debugger.
558
559         * metadata-internals.h (MonoDynamicAssembly): Add a 'domain' field to specify the
560         domain which created this assembly.
561
562 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
563
564         * debug-helpers.c (dis_one): Avoid a glib assert on empty strings.
565
566 2009-12-17  Mark Probst  <mark.probst@gmail.com>
567
568         * sgen-gc.c: Managed implementation of the specialized generic
569         store write barrier.
570
571 2009-12-17  Rodrigo Kumpera  <rkumpera@novell.com>
572
573         * icall.c (ves_icall_Type_GetMethodsByName): Don't pin virtual methods if they are newslot.
574         A private virtual newslot method is used to implement an interface method without exposing
575         it to users. When querying for public instance methods, such method would hide a public one
576         on a parent type.
577
578         Fixes #564379.
579
580 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
581
582         * reflection.c (resolve_object): Fix the encoding of unmanaged calling
583         conventions.
584
585 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
586
587         * reflection.c (mono_type_get_object): Guard against NULL generic param owner.
588
589 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
590
591         * class-internals.h (MonoDynamicGenericClass): Kill property and event related fields
592         as they are no longer used.
593         
594          * metadata.c (free_generic_class_dependents): Remove reference to previous fields
595
596         * reflection.c (mono_reflection_generic_class_initialize): Ditto.
597
598 2009-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
599
600         * reflection.c (mono_type_get_object): If the type is VAR or MVAR check
601         if the owner class has not been finished before returning reflection_info.      
602
603         Fixes #565127.
604
605 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
606
607         * reflection.c (mono_custom_attrs_from_param): Avoid a crash if a dynamic
608         param doesn't have custom attributes. Fixes #565117.
609
610         * class.c (mono_bounded_array_class_get): Make these classes PUBLIC. Fixes
611         #565120.
612
613 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
614
615         * class.c (mono_class_setup_fields): Fail valuetypes that are bigger than 1Mb.
616
617 2009-12-15  Rodrigo Kumpera  <rkumpera@novell.com>
618
619         * pedump.c: Add partial-md mode that doesn't perform full metadata verification. It does the
620         same amount done by a core-clr enabled runtime.
621
622 2009-12-15  Marek Habersack  <mhabersack@novell.com>
623
624         * appdomain.c (mono_make_shadow_copy): make sure access mode of
625         the target files is reset to writable by owner and readable by
626         everyone else to prevent problems when updating shadow copies of
627         files whose source is read-only. Fixes bug #556884
628
629 2009-12-15  Mark Probst  <mark.probst@gmail.com>
630
631         * class.c (mono_generic_class_get_class): Allocate the generic
632         class via malloc again, so that it can be freed when any one of
633         the images of its constituent types is closed.
634
635         * metadata.c: When closing an image, don't free generic insts and
636         generic classes right away, but put them into a list for later
637         freeing.
638
639         * image.c, metadata-internals.h: Store the free list and in the
640         second pass of closing an image, free it.
641
642 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
643
644         * reflection.c (mono_generic_class_get_object): Assert if this is ever called.
645
646         * reflection.c (mono_reflection_register_with_runtime): Only register dynamic
647         types in type_hash.
648
649         * reflection.c (resolve_object): Call ensure_complete_type on the inflated field.
650
651 2009-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
652
653         * reflection.c (mono_reflection_type_get_handle): Properly fail in case of a broken
654         user type.
655
656         * reflection.c (mono_reflection_register_with_runtime): Throws in case a bad user type
657         is used.
658
659 2009-12-14  Miguel de Icaza  <miguel@novell.com>
660
661         * verify.c (mono_method_verify): The Unused opcodes produce an
662         InvalidProgramException on .NET
663
664 2009-12-14  Sebastien Pouliot  <sebastien@ximian.com>
665
666         * loader.c (mono_method_get_header): Move assert after the verifier
667         has been called on the method header.
668
669 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
670
671         * object-internals.h: Remove useless field from MonoReflectionGenericClass.
672
673         * appdomain.c: Bump corlib version.
674
675 2009-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
676
677         To properly support user types, MonoGenericClass has to be used for regular, non SRE,
678         types as well since otherwise generic instances would not return UT as arguments but
679         their undelying system type.
680
681         * object-internals.h: Change field types of MonoGenericClass and *OnTypeBuilderInst
682         to reflect the fact that they can have now multiple different types.
683
684         * reflection.c (mono_image_get_field_on_inst_token): Handle MonoField.
685
686         * reflection.c (mono_image_get_ctor_on_inst_token): Handle MonoCMethod.
687
688         * reflection.c (mono_image_get_method_on_inst_token): Handle MonoMethod.
689
690         * reflection.c (mono_reflection_register_with_runtime): Init super types
691         if the image is not dynamic.
692
693         * reflection.c (mono_reflection_bind_generic_parameters): In case of a MonoGenericClass,
694         check if the generic type definition is a TypeBuilder.
695
696         * reflection.c (mono_reflection_generic_class_initialize): If the generic type definition
697         doesn't belong to a dynamic image, skip initialization.
698
699         * reflection.c (resolve_object): Properly handle *OnTypeBuilderInst types where their
700         base definition is not a dynamic type.
701
702 2009-12-11  Marek Habersack  <mhabersack@novell.com>
703
704         * object.c (mono_ldstr, mono_ldstr_metadata_sig): added calls to
705         mono_profiler_string_allocation
706
707         * string-icalls.c (ves_icall_System_String_InternalAllocateStr):
708         if string profiling is enabled, call
709         mono_profiler_string_allocation
710
711         * profiler.h: added two MonoProfileFlags -
712         MONO_PROFILE_IOMAP_EVENTS and MONO_PROFILE_STRING_ALLOC as well as
713         installation functions for the hooks below.
714
715         * profiler-private.h, profiler.c: added two hooks:
716         mono_profiler_string_allocation called whenever a string is
717         allocated by InternalAllocateStr and mono_profiler_iomap called
718         whenever IOMAP code performs an adjustement on a file path.
719
720 Fri Dec 11 18:24:04 CET 2009 Paolo Molaro <lupus@ximian.com>
721
722         * boehm-gc.c: fixed race condition while getting the target of a
723         disappearing link (bug #522233).
724
725 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
726
727         * class.c (mono_type_get_full): Produce warning instead of simply swallowing
728         the error.
729
730 2009-12-10  Rodrigo Kumpera  <rkumpera@novell.com>
731
732         * reflection.c: Add mono_reflection_register_with_runtime icall to
733         allow a MonoGenericClass to register itself as the managed mirror of
734         a given generic instance.
735         This is a temporary workaround until all MGC instantiation happens in
736         managed code.
737
738         * object-internals.h: Ditto.
739
740         * icall-def.h: Ditto.
741
742 2009-12-10  Mark Probst  <mark.probst@gmail.com>
743
744         * sgen-gc.c (find_in_remsets): Also search the generic store
745         remsets.
746
747 2009-12-10  Mark Probst  <mark.probst@gmail.com>
748
749         * sgen-gc.c: Don't access class names in debugging code when
750         unloading a domain, because they might not be valid anymore.
751
752 2009-12-10  Mark Probst  <mark.probst@gmail.com>
753
754         * domain.c, domain-internals.h: New function mono_domain_unset().
755
756         * appdomain.c (unload_thread_main): Detach the thread again at the
757         end.
758
759         * threads.c: When a thread exists or is detached, unset its domain
760         so that it's NULL when, for example, a pthread destructor runs.
761
762         * sgen-gc.c: Assert that there is no domain set after a thread is
763         done.
764
765 2009-12-10  Mark Probst  <mark.probst@gmail.com>
766
767         * class.c (mono_generic_class_get_class),
768         metadata.c (free_generic_class): Allocate generic MonoClass's from
769         the image mempool, not via malloc.  The problem with malloc is
770         that when unloading a domain those classes are freed before
771         clearing the heap and SGen needs the classes.  Rewriting the
772         unloading code to do the free later would be more work and there's
773         no point in using malloc anyway.
774
775 2009-12-09  Sebastien Pouliot  <sebastien@ximian.com>
776
777         * loader.c (mono_method_signature): Always call mono_loader_unlock 
778         before returning.
779
780 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
781
782         * metadata-verify.c: Add mono_verifier_verify_string_signature to check
783         user string blobs.
784
785         * verify-internals.h: Add new function to the internal API.
786
787         * verify.c (do_ldstr): Call into mono_verifier_verify_string_signature to
788         check if it's a valid string.
789
790         * object.c (mono_ldstr): Ditto.
791
792         Fixes #561943.
793
794 2009-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
795
796         * icall.c (ves_icall_GetCurrentMethod): Drop all generic arguments
797         from a method before returning it. This is the expected behavior.
798
799 2009-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
800
801         * reflection.c (inflate_method): Handle the case of a regular system type.
802
803 2009-12-08  Mark Probst  <mark.probst@gmail.com>
804
805         * sgen-gc.c, sgen-pinning-stats.c, sgen-gray.c: More statistics
806         gathering code.
807
808         * mempool.c, mempool-internals.h: New function
809         mono_mempool_get_bytes_allocated().
810
811         * Makefile.am: sgen-pinning-stats.c added.
812
813 2009-12-08  Mark Probst  <mark.probst@gmail.com>
814
815         * sgen-gc.c (create_allocator): Only use the fast path if the
816         object size is within the small object size limit.
817
818 2009-12-07  Mark Probst  <mark.probst@gmail.com>
819
820         * sgen-gc.c: Make sure section->data is aligned to 8 bytes by
821         possibly adding padding to sizeof (GCMemSection).
822
823 2009-12-07  Mark Probst  <mark.probst@gmail.com>
824
825         * sgen-gc.c (mono_gc_wbarrier_nostore): Skip the remset if the
826         reference is not in the nursery.
827
828 2009-12-07  Rodrigo Kumpera  <rkumpera@novell.com>
829
830         * class.c (mono_class_from_typeref): Bounds check idx against the 
831         assemblyref table.
832
833 2009-12-07  Mark Probst  <mark.probst@gmail.com>
834
835         * sgen-gc.c, sgen-pinning.c: When pinning, make only one pass
836         through the potential roots, then sort the results and find the
837         pinned objects from there.
838
839         * Makefile.am: sgen-pinning.c added.
840
841 2009-12-07  Mark Probst  <mark.probst@gmail.com>
842
843         * sgen-gc.c: Record generic stores in specialized remset buffers.
844
845 2009-12-06  Mark Probst  <mark.probst@gmail.com>
846
847         * sgen-gc.c: Make pinned chunks the same size as major heap
848         sections, and align them as well, so that we can check whether an
849         object is in a pinned chunk or a major section in constant time.
850
851 2009-12-06  Mark Probst  <mark.probst@gmail.com>
852
853         * sgen-gc.c (build_nursery_fragments): Don't leak fragments.
854
855 2009-12-06  Mark Probst  <mark.probst@gmail.com>
856
857         * sgen-gc.c: Make all major heap sections the same size (currently
858         128k) and allocate them on aligned addresses.  Small heap sections
859         give us better granularity with pinned objects - we can free up
860         much more memory.
861
862 2009-12-06  Mark Probst  <mark.probst@gmail.com>
863
864         * string-icalls.c (ves_icall_System_String_GetLOSLimit): Debug
865         output removed.
866
867 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
868
869         Applied patch from Laurent Etiemble (laurent.etiemble@gmail.com).
870
871         * mono/metadata/assembly.c: When opening an assembly image, pass the real
872         names in addition to the runtime generated one.
873
874         * mono/metadata/image.h: Add a function to take the real name of the assembly
875         image.
876
877         * mono/metadata/image.c: If a real name has been passed to load an assembly,
878         use it instead of the runtime generated one.
879
880         Code is contributed under MIT/X11 license.
881
882 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
883
884         * marshal.c (emit_marshal_vtype): Do the klass == date_time_class checks
885         before the other checks to prevent problems if the DateTime class is blittable.
886         Hopefully fixes #559600.
887
888 2009-12-05  Mark Probst  <mark.probst@gmail.com>
889
890         * string-icalls.c, string-icalls.h, icall-def.h: New icall that
891         returns the largest string length that will not be put into the
892         LOS.
893
894         * sgen-gc.c, gc-internal.h: New function that returns the largest
895         object size that will not be put into the LOS.
896
897         * appdomain.c: Bump corlib version.
898
899 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
900
901         * class-internals.h: Add MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
902
903         * generic-sharing.c: Handle MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
904
905 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
906
907         * reflection.c (inflate_method): Fix signature.
908
909         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Reflect change
910         in managed code.
911
912 2009-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
913
914         * reflection.c (inflate_method): Make this method work with TypeBuilder as well.
915
916 2009-12-03  Mark Probst  <mark.probst@gmail.com>
917
918         * sgen-gc.c: Abstract to-space handling.
919
920 2009-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
921
922         * loader.c (find_method_in_class): Ignore methods with broken signatures.
923
924         Fixes #559906.
925
926 2009-12-03  Mark Probst  <mark.probst@gmail.com>
927
928         * sgen-gc.c: Only add references from outside the nursery to
929         within the nursery to the global remset list.
930
931 2009-12-03  Mark Probst  <mark.probst@gmail.com>
932
933         * appdomain.c (create_exceptions): Set the domain temporarily if
934         necessary to avoid cross-domain references.
935
936 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
937
938         * verify.c (get_stack_type): Return that the type is invalid instead of
939         asserting.
940
941         * verify.c (mono_method_verify): Verify that all locals and arguments
942         have valid stack types.
943
944         Fixes #559913.
945
946 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
947
948         * verify.c (mono_method_verify): Bounds check the filter offset. Make all
949         bounds checking overflow aware.
950
951         Fixes #559910.
952
953 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
954
955         * verify.c (do_invoke_method): Check for invalid method signatures.
956
957         Fixes #553450.
958
959 2009-12-02  Jb Evain  <jbevain@novell.com>
960
961         * appdomain.c (MONO_CORLIB_VERSION): bump.
962         * icall-def.h (get_base_definition): renamed to get_base_method
963         and add a boolean argument indicating we want the original
964         method definition, or the immediate base method.
965         * icall.c: apply the get_base_definition to get_base_method change.
966
967 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
968
969         * class.c (mono_class_setup_fields): Fail an enum without an instance field.
970
971         Fixes #558042.
972
973 Wed Dec 2 16:35:49 CET 2009 Paolo Molaro <lupus@ximian.com>
974
975         * class.c: remove asserts for invalid type token in
976         mono_class_name_from_token(), mono_assembly_name_from_token() and
977         mono_class_create_from_typedef () (fixes bug #553318).
978
979 Wed Dec 2 15:48:19 CET 2009 Paolo Molaro <lupus@ximian.com>
980
981         * metadata.c, class.c, loader.c: remove assert after bsearch() for
982         incorrect assemblies (bug #553322).
983
984 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
985
986         * metadata.c (mono_metadata_inflate_generic_inst): Add MonoError parameter.
987
988         * metadata-internals.h: Change signature of mono_metadata_inflate_generic_inst. 
989
990         * class.c (inflate_generic_type): Use new version of mono_metadata_inflate_generic_inst.
991
992         * class.c (inflate_generic_context): Ditto.
993
994         * loader.c (method_from_methodspec): Ditto.
995
996         Fixes #558230.
997
998 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
999
1000         * class.c (mono_type_retrieve_from_typespec): Use MonoError machinery to report errors.
1001
1002         * class.c (mono_class_create_from_typespec): Ditto.
1003
1004         * class.c (mono_class_get_full): Fix for change on the above 2 functions.
1005
1006         * class.c (mono_type_get_full): Fix for change on the above 2 functions.
1007
1008         Fixes #558184.
1009
1010 2009-12-02  Rodrigo Kumpera  <rkumpera@novell.com>
1011
1012         * verify.c (mono_class_has_default_constructor): Check fror broken signatures.
1013
1014         * verify.c (verify_delegate_compatibility): Ditto.
1015
1016         * verify.c (do_newobj): Ditto.
1017
1018         Fixes #558046.
1019
1020 2009-12-02  Mark Probst  <mark.probst@gmail.com>
1021
1022         * sgen-gc.c: Use a gray queue instead of requiring that gray
1023         objects are in a contiguous region.
1024
1025         * sgen-gray.c: The gray queue implementation.
1026
1027         * Makefile.am: sgen-gray.c added.
1028
1029 2009-12-02  Mark Probst  <mark.probst@gmail.com>
1030
1031         * appdomain.c: When unloading a domain, zero its static data and
1032         perform a minor collection when using SGen.  That will get rid of
1033         all the remsets pointing into that domain's static data.
1034
1035         * sgen-gc.c: Allow remsets into static data.  By doing this we
1036         need less checks so we're more efficient.
1037
1038 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
1039
1040         * verify.c (mono_method_verify): Check for catch clauses with broken
1041         types.
1042
1043         Fixes #558465.
1044
1045 2009-12-01  Jb Evain  <jbevain@novell.com>
1046
1047         * class.c (make_generic_param_class): set the namespace of
1048         the generic parameter class from its owner, if available.
1049
1050 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
1051
1052         * verify.c (code_bounds_check): Do proper overflow checking.
1053
1054         * verify.c (mono_method_verify): The number of switch entries is
1055         an unsigned int. Properly bounds check it.
1056
1057         Fixes #558594.
1058
1059 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
1060
1061         * metadata.c: Kill mono_metadata_get_param_attrs_checked. Add
1062         mono_metadata_method_has_param_attrs which only checks if a given param
1063         list has a non zero flags entry.
1064
1065         * metadata.c (mono_metadata_get_param_attrs): Add param_count parameter
1066         to inform how many params should we expect to decode.
1067
1068         * loader.c (mono_method_signature): Use mono_metadata_method_has_param_attrs
1069         as it's faster than mono_metadata_get_param_attrs.
1070
1071         * metadata-internals.h: Fix mono_metadata_get_param_attrs signature and
1072         add mono_metadata_method_has_param_attrs.
1073
1074 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
1075
1076         * class.c (mono_class_setup_vtable_general): Check for mono_method_get_vtable_slot
1077         failures.
1078
1079         * class.c (mono_method_get_vtable_slot): Don't assert if the computed method slot
1080         is -1 but its class is broken.
1081
1082         Fixes #558522.
1083
1084 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
1085
1086         * metadata.c: Introduce mono_metadata_get_param_attrs_checked which checks
1087         for parameter overflow.
1088
1089         * metadata.c (mono_metadata_parse_method_signature_full): Use checked version
1090         of mono_metadata_get_param_attrs.
1091
1092         * metadata-internals.h: Add mono_metadata_get_param_attrs_checked to the internal
1093         API.
1094
1095         * loader.c (mono_method_signature): Use checked version of mono_metadata_get_param_attrs.
1096
1097 2009-12-01  Rodrigo Kumpera  <rkumpera@novell.com>
1098
1099         * class.c (mono_class_setup_fields): Check for fields with broken types.
1100
1101         Fixes #558741.
1102
1103 2009-11-28  Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * reflection.c (ensure_generic_class_runtime_vtable): Split this function in 2
1106         so we can avoid calling ensure_runtime_vtable multiple times for the GTD during
1107         its TypeBuilder::CreateType ().
1108
1109         * reflection.c (ensure_generic_class_runtime_vtable): Avoid initializing interfaces
1110         if not needed.
1111
1112         * reflection.c: Every time we change the interface array, set interfaces_packed to NULL
1113         to make setup_interface_offsets happy.
1114
1115         * reflection.c (remove_instantiations_of_and_ensure_contents): Fix instances again as corlib
1116         compilation now works.
1117
1118 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * appdomain.c (create_exceptions): New helper function extracted from
1121         mono_runtime_init () to precreate objects used during exception handling.
1122         (mono_runtime_init): Call it.
1123         (mono_domain_create_appdomain_internal): Ditto. Fixes #555264.
1124
1125 2009-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
1126
1127         * reflection.c (remove_instantiations_of_and_ensure_contents): Temp hack to fix corlib
1128         compilation until the proper one is found.
1129
1130 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
1131
1132         * class.c (mono_class_setup_vtable_general): Cache the result of
1133         get_virtual_methods () since it can be slow because of the metadata
1134         optimization.
1135
1136         * metadata-internals.h (_MonoImage): Change 'method_cache' to a GHashTable
1137         from a MonoValueHashTable for now, since the later is based on an earlier
1138         version of hpj's internal probing code and seems to have serious collision
1139         issues.
1140
1141         * loader.c (mono_get_method_full): Update after the change above.
1142
1143 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * class-internals.h (MonoCachedClassInfo): Add 'is_generic_container' field.
1146
1147 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
1148
1149         * reflection.c (get_field_on_inst_generic_type): Try to fallback using the field from
1150         the GTD instead of the DGC instead of crashing.
1151
1152         * reflection.c (ensure_generic_class_runtime_vtable): Only reinflate stuff that is
1153         required. Inflate fields if needed.
1154
1155         * reflection.c (remove_instantiations_of): Ensure generic instances are properly
1156         finished. Renamed.
1157
1158 2009-11-26  Rodrigo Kumpera  <rkumpera@novell.com>
1159
1160         * class.c (check_interface_method_override): Check for NULL signatures and fail
1161         the type.
1162
1163         * debug-helpers.c (mono_signature_get_desc): Return a fixed string for NULL signatures.
1164
1165         Fixes #553428.
1166
1167 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * class.c (mono_class_get_virtual_methods): Call decode_row_col to obtain
1170         the MONO_METHOD_FLAGS column instead of decoding the whole row.
1171
1172 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
1173
1174         * loader.c (field_from_memberref): Resolve the class first then the field
1175         signature. Remove a lot of duplicated code and make sure we don't pass valid
1176         values to mono_loader_set_error_field_load.
1177
1178         Fixes #553306.
1179
1180 2009-11-25  Rodrigo Kumpera  <rkumpera@novell.com>
1181
1182         * class.c (inflate_generic_type): Change code to use new signature of
1183         mono_error_set_bad_image.
1184
1185         Fixes #558124.
1186
1187 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
1188
1189         * verify.c (mono_method_verify): Don't free ctx.params items if 
1190         we aborted while inflating the ctx.locals. Complete previous fix
1191
1192 2009-11-25  Sebastien Pouliot  <sebastien@ximian.com>
1193
1194         * verify.c (mono_method_verify): Use the uninflated type name, 
1195         when the inflated is null, to report errors. Also take care when
1196         freeing, not to free everything since, in case of an error, some
1197         stuff would be copies (i.e. not allocated by the function itself)
1198         Fix bug #558145
1199
1200 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * verify.c (stack_push, stack_pop, stack_pop_safe): Assert if we underflow
1203         or overflow. The caller must have done this check explicitly. This guard us
1204         from accessing invalid memory.
1205
1206         * verify.c (do_push_static_field): Check for stack overflow.
1207
1208         Fixes #553333.
1209
1210 2009-11-24  Rodrigo Kumpera  <rkumpera@novell.com>
1211
1212         * loader.c (find_method_in_class): Don't crash if the signature cannot
1213         be resolved.
1214
1215         * metadata.c (mono_metadata_parse_generic_param): Return NULL instead
1216         of asserting for the case of invalid params.
1217
1218         Fixes #553304.
1219
1220 2009-11-24  Sebastien Pouliot  <sebastien@ximian.com>
1221
1222         * image.c (mono_image_load_module): Fix crash when a bad assembly
1223         has no module at all (fix bug #553412) and also replace the 
1224         g_assert with a return NULL (documented return value for failure)
1225
1226 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
1227
1228         * debug-helpers.c (mono_type_get_desc): Handle typedbyref.
1229
1230 2009-11-23  Miguel de Icaza  <miguel@novell.com>
1231
1232         * file-io.c: Change FindFirst/FindNext/FindClose API to return the
1233         file attribute to managed code and avoid doing the mask/attribute
1234         checks here. 
1235
1236 2009-11-22  Miguel de Icaza  <miguel@novell.com>
1237
1238         * file-io.c: Surface a smart FindFirst/FindNext/FindClose API to
1239         the managed world.
1240
1241         * icall-def.h: New entry points.
1242         
1243 2009-11-19  Mark Probst  <mark.probst@gmail.com>
1244
1245         * process.c: Don't put references to managed objects into a
1246         g_ptr_array.
1247
1248 2009-11-18  Sebastien Pouliot  <sebastien@ximian.com>
1249
1250         * class.c (can_access_internals): Allow CoreCLR to participate in
1251         allowing (or not) [InternalsVisibleTo] between assemblies.
1252         * security-core-clr.c|h: Make sure that only trusted code (a 
1253         superset of platform code) can access the internals of platform
1254         code.
1255
1256 Mon Nov 16 16:28:11 CET 2009 Paolo Molaro <lupus@ximian.com>
1257
1258         * reflection.c: use the correct base class to get the virtual method
1259         "get_UnderlyingSystemType" and speed up the icall. Fixes bug #555013.
1260
1261 2009-11-16  Sebastien Pouliot  <sebastien@ximian.com>
1262
1263         * security-core-clr.c (get_caller_no_reflection_related): 
1264         [Mono]Type.InvokeMember is outside System.Reflection[.Emit] but
1265         it's still reflection and must be filtered correctly.
1266
1267 2009-11-16  Mark Probst  <mark.probst@gmail.com>
1268
1269         * object.c (compute_class_bitmap): Fix for large bitmaps.
1270
1271 2009-11-15  Zoltan Varga  <vargaz@gmail.com>
1272
1273         (mono_gc_get_suspend_signal): Fix the build with a system libgc.
1274
1275         * boehm-gc.c (mono_gc_base_init): Applied patch from DKoushik K. Dutta (
1276         koush@koushikdutta.com). Disable GC_no_dls on android.
1277
1278 2009-11-12  Mark Probst  <mark.probst@gmail.com>
1279
1280         * sgen-gc.c (find_tlab_next_from_address): Handle the case where
1281         tlab_next points outside the TLAB because the allocator was
1282         interrupted.
1283
1284 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
1285
1286         * reflection.c (mono_image_module_basic_init): Handle exceptions correctly.
1287
1288 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
1289
1290         * object-internals.h: Change signature for mono_string_to_utf8_image.
1291
1292         * object.c (mono_string_to_utf8_image): Change signature to take a MonoError
1293         argument.
1294
1295         * reflection.c: Take care of mono_string_to_utf8_image change and avoid raising
1296         exceptions due to mono_string_to_utf8.
1297
1298 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
1299
1300         * object-internals.h: Change signature for mono_string_to_utf8_mp.
1301
1302         * object.c (mono_remote_class): Make sure all resources are released before
1303         raising an exception.
1304
1305         * object.c (mono_print_unhandled_exception): Avoid raising an exception.
1306
1307 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
1308
1309         * mono-perfcounters.c (network_get_impl): Change variable initialization
1310         ordering to fix potential memory leak in case of exceptions.
1311
1312         * mono-perfcounters.c (mono_perfcounter_create): Properly handle badly
1313         encoded strings.
1314         
1315 2009-11-09  Rodrigo Kumpera  <rkumpera@novell.com>
1316
1317         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): Change
1318         variable initialization ordering to fix potential memory leak in case
1319         of exceptions.
1320
1321 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1322
1323         * icall.c (mono_ArgIterator_Setup): Remove the MONO_ARCH_REGPARMS stuff, its not
1324         needed.
1325
1326 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
1327
1328         * appdomain.c: Fix shadow path code to better deal with exceptions.
1329
1330 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
1331
1332         * appdomain.c: Use checked version of mono_string_to_utf8 to avoid raising an
1333         exception in the middle of the runtime code.
1334
1335 2009-11-07  Rodrigo Kumpera  <rkumpera@novell.com>
1336
1337         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): Don't
1338         leak memory with broken envvar value.
1339
1340 2009-11-06  Mark Probst  <mark.probst@gmail.com>
1341
1342         * reflection.c (mono_reflection_setup_internal_class): Because
1343         nested classes are not added to the name cache, we must put them
1344         in the reflection_info_unregister_classes list.
1345
1346 2009-11-05  Sebastien Pouliot  <sebastien@ximian.com>
1347
1348         * class.c: When CoreCLR is enabled don't call mono_init_com_types
1349         if MONO_CLASS_IS_IMPORT return true unless the type reside in 
1350         platform (trusted) code. Instead we return a TypeLoadException to
1351         be thrown later. This is the exception thrown by Silverlight 2 if
1352         a type, inside application (user) code is marked with [ComImport]
1353
1354 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * icall.c (ves_icall_System_Diagnostics_Debugger_IsAttached_internal): Call
1357         mono_is_debugger_attached () too.
1358
1359         * mono-debug.c (mono_is_debugger_attached): New helper function.
1360         (mono_set_is_debugger_attached): Ditto.
1361
1362 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1363
1364         * object-internals.h: Add mono_string_to_utf8_checked.
1365
1366         * object.c: Implement mono_string_to_utf8_checked.
1367
1368 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1369
1370         * class.c: Add missing check for load errors after every
1371         call to mono_class_setup_fields
1372
1373         Fixes #552282.
1374
1375 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1376
1377         metadata-verify.c (verify_tables_schema): Fix the error message.
1378
1379 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1380
1381         * metadata.c: Change event table schema to use TDOR for event type
1382         as this is what it's meant to be.
1383
1384         * metadata.c (mono_metadata_compute_size): Change MONO_TABLE_ASSEMBLYPROCESSOR
1385         to MONO_TABLE_ASSEMBLYREFPROCESSOR, which is table that has a MONO_MT_TABLE_IDX
1386         entry.
1387
1388         * metadata.c (mono_metadata_compute_size): Trim MT_TABLE_IDX of code that no
1389         longer makes sense: remove MONO_TABLE_EVENT and remove checks for non-existent
1390         rows in MONO_TABLE_GENERICPARAM.
1391
1392         Fixes #552289.
1393
1394 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1395
1396         * class.c (mono_image_add_to_name_cache): Assert on duplicate
1397         insertion.
1398
1399         * reflection.c (mono_reflection_setup_internal_class): Avoid
1400         registering a gc root the same MonoClass multiple times.
1401         Don't register nested types on the global scope as they should
1402         not be available there.
1403
1404 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1405
1406         * culture-info-tables.h: regenerated.
1407
1408 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1409
1410         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
1411
1412 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
1413
1414         * string-icalls.c|h: Remove string internal calls that are not 
1415         used anymore by the class libraries.
1416         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
1417         which is not used in the class librairies.
1418         * icall-def.h: Update tables.
1419
1420 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
1421
1422         * class.h: Move mono_class_inflate_generic_type_checked...
1423
1424         * class-internals.h: to here and make it internal. We don't want to
1425         further expose MonoGenericContext. 
1426
1427 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
1428
1429         * verify.c (mono_method_verify): Improve error message.
1430
1431 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
1432
1433         * reflection.c (fieldref_encode_signature): If field_image is NULL then
1434         the token is already properly encoded. Fixs 4.0 build.
1435
1436 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1437
1438         * locales.c (construct_number_format): Check if the number index is
1439         valid before trying to use it, if not, just return.
1440         
1441 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
1444         since that loses the abort state. Fixes #539394.
1445
1446 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
1449         explicit this argument to the call signature.
1450         (mono_marshal_get_icall_wrapper): Ditto.
1451
1452 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1453
1454         * reflection.c (fieldref_encode_signature): Add new field_image parameter
1455         to indicate which assembly to use when resolving a custom-mod.
1456
1457         Fixes handling of volatile fields used across assemblies as reported in #551513.
1458
1459 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1460
1461         * loader.c: Improve error messages.
1462
1463 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1464
1465         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
1466         of interfaces. Fixes IKVM.
1467
1468         * class.c (mono_class_setup_vtable_general): Improve debug spew.
1469
1470 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1471
1472         * verify.c (verifier_inflate_type): Return the inflated type on success.
1473
1474 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1475
1476         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
1477
1478         * threads.c (mono_thread_attach): Call the profiler thread start callback.
1479
1480         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
1481
1482         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
1483         flag set.
1484
1485         * profiler.c: Add new profiler callbacks for runtime invoke.
1486
1487         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
1488
1489 2009-11-01  Mark Probst  <mark.probst@gmail.com>
1490
1491         * sgen-gc.c: Keep track of the reason for a major collection and
1492         write it to the heap-dump file.
1493
1494 2009-10-31  Miguel de Icaza  <miguel@novell.com>
1495
1496         * threads.c: refactor the code that initializes the
1497         thread_start_args into a reusable function and use this in the two
1498         methods that start up threads.
1499
1500 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
1503         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
1504
1505 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
1506
1507         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
1508         Until now, we only had the per-cpu(core) counters.
1509
1510 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1511
1512         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
1513         mono_gc_get_suspend_signal(), which returns the suspend signal
1514         number used by the GC.
1515
1516 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
1519
1520         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
1521         signalling start_notify.
1522
1523 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
1524
1525         * appdomain.c: do not test the st_mode field for shadow-copies.
1526         Fixes bug #545276.
1527
1528 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
1529
1530         * threadpool.[ch]: added hooks for thread start/finish and item
1531         processing begin/end. For monotouch use only.
1532
1533 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1534
1535         * threads.c (mono_thread_get_name): New helper function.
1536
1537         * reflection.c (resolve_object): Set handle_class for strings too.
1538         (mono_reflection_create_custom_attr_data_args): New helper function to decode
1539         a cattr blob into a set of arrays and structures without creating the custom
1540         attributes themselves.
1541         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
1542
1543         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
1544
1545         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
1546         function.
1547
1548 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1549
1550         * verify.c: Replace calls to mono_class_inflate_generic_type with
1551         mono_class_inflate_generic_type_checked. Fixes #480005.
1552
1553 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1554
1555         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
1556         object since not all paths lead to callees initing it.
1557
1558 2009-10-23  Alp Toker  <alp@nuanti.com>
1559
1560         Fix embedding API breakage from r144688. mono-compiler.h is an internal
1561         header and should not be shipped:
1562
1563         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
1564         which is specific to the mono build. Not going to work.
1565
1566 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
1567
1568         * security-manager.c: Report if core-clr is active from
1569         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
1570         to allow Moonlight BCL to behave appropriately (both in browser
1571         and outside, e.g. smcs)
1572
1573 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1574
1575         * mono-config.c: ignore UTF-8 BOM and report parser errors.
1576         Fixes bug #549108.
1577
1578 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1579
1580         * class.c: fix typo.
1581
1582 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
1583
1584         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
1585         a MonoError parameter.
1586
1587         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
1588         version that can does proper error handling.
1589
1590         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
1591
1592         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
1593
1594         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
1595
1596 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
1599         NO_UNALIGNED_ACCESS is defined.
1600
1601 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1602
1603         * marshal.c (mono_string_builder_to_utf16): Applied patch from
1604         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
1605         Fixes #549173.
1606
1607 2009-10-22  Mark Probst  <mark.probst@gmail.com>
1608
1609         * sgen-gc.c: Shorten sections whenever possible.
1610
1611 2009-10-22  Mark Probst  <mark.probst@gmail.com>
1612
1613         * sgen-gc.c: Use our portable semaphore #defines.
1614
1615 2009-10-22  Mark Probst  <mark.probst@gmail.com>
1616
1617         * sgen-gc.c: A debug option for dumping the heap layout to a file
1618         after each collection.
1619
1620 2009-10-21  Mark Probst  <mark.probst@gmail.com>
1621
1622         * sgen-gc.c: Make managed write barriers atomic via
1623         thread-restarts.
1624
1625 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1626
1627         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
1628         methods. Fixes #543021.
1629
1630 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
1631
1632         * socket-io.[ch]: fix VS build.
1633
1634 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
1635
1636         * icall-def.h:
1637         * socket-io.[ch]: implemented SendFile.
1638
1639 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
1640
1641         * class.c (mono_class_create_from_typedef): Initialize class->element_class
1642         before the interfaces to avoid crashes later if class initialization fails.
1643         Fixes #548417.
1644
1645         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
1646         Fixes #548276.
1647
1648 2009-10-20  Marek Safar  <marek.safar@gmail.com>
1649
1650         * domain.c: Bump 4.0 version.
1651
1652 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1653
1654         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
1655         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
1656         check since 'pubkey' can't be NULL at this stage
1657         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
1658         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
1659         initialization of 'iter'
1660
1661 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
1662
1663         * cominterop.c : Search the interface parts of vtable to find 
1664           method matches.  Fixes 547030.
1665
1666         Code is contributed under MIT/X11 license.
1667
1668 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
1669
1670         * marshal.c: BeginInvoke cannot be called on multicast delegates with
1671         multiple targets. Fixes bug #574426.
1672
1673 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1674
1675         * profiler.h: Put here the definition of
1676         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
1677         (and fix the build...).
1678
1679 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1680
1681         * profiler.c, profiler.h, profiler-private.h:
1682         Added support for different ways of getting call chains in stat mode.
1683
1684 2009-10-12  Mark Probst  <mark.probst@gmail.com>
1685
1686         * object.c, object-internals.h: New function for computing the
1687         size of an array, factored out of mono_array_new_full().  Use
1688         SGen's functions for allocating arrays and vectors.
1689
1690         * sgen-gc.c, gc-internal.h: Special functions for allocating
1691         arrays and vectors without race conditions.  A managed array
1692         allocator method.
1693
1694         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
1695
1696 2009-10-12  Mark Probst  <mark.probst@gmail.com>
1697
1698         * object.c, object.h, icall.c: Write barriers do the copying now,
1699         as well, so no need for an additional memcpy.
1700
1701         * sgen-gc.c: Lock when storing remsets.  Do the memory
1702         copying/moving in the write barriers.
1703
1704         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
1705
1706         * reflection.c: Added an assert.
1707
1708 2009-10-12  Mark Probst  <mark.probst@gmail.com>
1709
1710         * threads.c, process.c: A few missing write barriers.
1711
1712 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
1713
1714         * mono-perfcounters.c, mono-perfcounters-def.h: Add
1715         network performance counters for bytes sent per second, bytes
1716         received per second, and bytes total per second.
1717
1718         Code is contributed under MIT/X11 license.
1719
1720 2009-10-09  Mark Probst  <mark.probst@gmail.com>
1721
1722         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
1723         Fix warning.
1724
1725 2009-10-09  Mark Probst  <mark.probst@gmail.com>
1726
1727         * threads.c, object-internals.h, object.c: Move code for
1728         transferring an object to a different domain (via
1729         serialization/remoting) to object.c.
1730
1731         * object.c (call_unhandled_exception_delegate): If the exception
1732         is in a different domain than the delegate, transfer the exception
1733         to that domain.
1734
1735 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
1736
1737         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
1738         Fixes #322934.
1739
1740 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1741
1742         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
1743
1744 2009-10-06  Mark Probst  <mark.probst@gmail.com>
1745
1746         * object.c (mono_method_return_message_restore): Handle the case
1747         where the argument is an instance of a generic type.  Fixes
1748         #544446.
1749
1750 2009-10-06  Mark Probst  <mark.probst@gmail.com>
1751
1752         * object.c (set_value): Write barrier fix - we must pass the
1753         count, not the size.
1754
1755 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * domain.c (mono_init_internal): Print a useful error message when encountering
1758         an old mscorlib, instead of crashing. Fixes #544307.
1759
1760 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1761
1762         * appdomain.c (copy_app_domain_setup): Fix a warning.
1763
1764         * debug-helpers.c (dis_one): Ditto.
1765
1766 2009-10-04  Mark Probst  <mark.probst@gmail.com>
1767
1768         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
1769         into the new domain, instead of referencing the original one.
1770
1771         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
1772         non-static.
1773
1774         * appdomain.c: Corlib version bump.
1775
1776 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1777
1778         * threadpool.c: one more...
1779
1780 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1781
1782         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
1783         threads to die because we're shutting down. delgate5.exe works again.
1784
1785 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
1786
1787         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
1788           ccw_interface_hash table when a ccw is finalized.
1789
1790         Code is contributed under MIT/X11 license.
1791
1792 2009-09-30  Mark Probst  <mark.probst@gmail.com>
1793
1794         * assembly.c, domain.c, image.c, metadata-internals.h: Split
1795         domain and image unloading into two steps.  We must do this
1796         because clearing the domain in SGen requires the class metadata to
1797         be intact, but we need to free the mono_g_hash_tables in case a
1798         collection occurs during domain unloading and the roots would trip
1799         up the GC.
1800
1801 2009-09-30  Mark Probst  <mark.probst@gmail.com>
1802
1803         * object-internals.h: Remove serialized culture fields from
1804         MonoInternalThread.
1805
1806         * icall-def.h, thread-types.h, threads.c: Remove serialized
1807         culture icalls.
1808
1809         * appdomain.c: Corlib version bump.
1810
1811 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1812
1813         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
1814         Fixes #543133.
1815
1816 2009-09-30  Mark Probst  <mark.probst@gmail.com>
1817
1818         * sgen-gc.c: Try to shorten the new section after a major
1819         allocation to avoid ever-growing sections.
1820
1821 2009-10-13  Martin Baulig  <martin@ximian.com>
1822
1823         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
1824         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
1825         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
1826         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
1827
1828         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
1829
1830 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
1831
1832         * threadpool.c: fixed the order in which 'completed' and the wait
1833         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
1834         No need to use the wait_handle field of ASyncCall. Make sure the
1835         threadpool is active when adding a job or queueing an idle thread.
1836
1837 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
1840
1841         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
1842         when using --compile-all.
1843
1844 2009-09-27  Mark Probst  <mark.probst@gmail.com>
1845
1846         * metadata.c (free_generic_class): Unregister the field_objects
1847         roots if we're using SGen.
1848
1849 2009-09-27  Mark Probst  <mark.probst@gmail.com>
1850
1851         * reflection.c (mono_dynamic_image_free): Deregister the GC root
1852         for GenericParamTableEntry.gparam.
1853
1854 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1855
1856         * marshal.c: don't create the handle when calling. It is created later
1857         if needed.
1858
1859 2009-09-26  Mark Probst  <mark.probst@gmail.com>
1860
1861         * sgen-gc.c: Warning fixes.
1862
1863 2009-09-26  Mark Probst  <mark.probst@gmail.com>
1864
1865         * sgen-gc.c: New debug option "xdomain-checks", which scans the
1866         whole heap for cross-domain references before each collection.
1867
1868         * sgen-scan-object.h: The scan action can now use SCAN to scan the
1869         object.
1870
1871         * threadpool-internals.h, threadpool.c: New function
1872         mono_thread_pool_is_queue_array() for checking whether a given
1873         array is used as a (cross-domain) queue by the thread pool code.
1874
1875 2009-09-26  Mark Probst  <mark.probst@gmail.com>
1876
1877         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
1878         searches the whole heap for objects containing a specific
1879         reference.  Only for debugging.
1880
1881 2009-09-26  Mark Probst  <mark.probst@gmail.com>
1882
1883         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
1884
1885         * icall-def.h, threads.c, threads-types.h: New icalls for copying
1886         byte arrays between domains.
1887
1888 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1889
1890         * threadpool.c:
1891         * class-internals.h:
1892         * mono-perfcounters-def.h:
1893         * mono-perfcounters.c:
1894         -There is a list of idle threads
1895         -Each of those idle threads wait on their own WaitHandle instead
1896         of all of them using the same semaphore. When a new work item is
1897         added, the job is assigned directly to an idle thread or a newly
1898         created one if possible and then the handle for that thread is
1899         signaled. Compare that to the current approach where all the
1900         threads in the pool compete to dequeue a job from the same
1901         queue.
1902         -New struct ThreadPool that brings together the bunch of static
1903         variable for each threadpool (IO and regular).
1904         -New performance counters: # of items added and its rate per
1905         threadpool. The rate will be used later, perhaps together with
1906         other perf. counters, to decide when idle threads should exit.
1907
1908 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
1909
1910         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
1911         Fix typo on Windows build.      
1912         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
1913         
1914         Code is contributed under MIT/X11 license.
1915
1916 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1917
1918         * object-internals.h: The Thread class is split up into Thread and
1919         InternalThread now.  We have exactly one InternalThread per
1920         thread, and at most one Thread per appdomain per thread.  Most
1921         data is stored in InternalThread.  All InternalThread objects live
1922         in the root domain.
1923
1924         * class-internals.h: Add internal_thread_class to MonoDefaults.
1925
1926         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
1927         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
1928         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
1929         resulting from the split of the Thread class.
1930
1931         * gc-internal.h: Prototype for new function for checking whether a
1932         thread is the finalizer thread.
1933
1934         * appdomain.c: Corlib version bump.
1935
1936 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1937
1938         * appdomain.c|h: Add a mono_domain_try_unload method which is
1939         equivalent to mono_domain_unload, except that it returns an exception
1940         instead of throwing it. Make mono_domain_unload use the
1941         mono_domain_try_unload method to avoid code-duplication.
1942
1943 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1944
1945         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
1946         a problem.
1947
1948 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1949
1950         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
1951         aborting when a conversion is not implemented.
1952
1953 2009-09-23  Miguel de Icaza  <miguel@novell.com>
1954
1955         * verify.c: when comparing culture strings, use g_ascii_strcmp
1956
1957         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
1958         when comparing public key tokens to use memcmp on 16 bytes.   I do
1959         not believe this ever worked as advertised in the past.
1960
1961         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
1962         which would have always failed earlier.
1963
1964 2009-06-25  Miguel de Icaza  <miguel@novell.com>
1965
1966         * gc.c: Raise a NullArgumentException if the object passed is
1967         null.
1968
1969 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1970
1971         * image.c (mono_image_close): Atomically decrement the reference count and
1972         remove the image from the hash tables, to prevent another thread from seeing a
1973         dying MonoImage. Fixes #541194.
1974
1975 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1976
1977         * threadpool.c: actually use the minimum number of 'completion ports'
1978         (for us is just a potential worker thread).
1979
1980 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1981
1982         * threadpool.c: remove ares_htable. It does not make sense any more
1983         since the same objects are now stored in GC-tracked arrays while they are
1984         in the queue.
1985
1986 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1987
1988         * threadpool.c: increase the minimum length of the queues to 128.
1989         Remove warning.
1990
1991 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1992
1993         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
1994         return the modified signature used by string ctors.
1995
1996 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
1999         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
2000         method, to be used by full-aot.
2001
2002 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2003
2004         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
2005         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
2006         be known to be good.
2007
2008         * class.c (mono_class_init): Fail array types if their element type fails initialization
2009         as well.
2010
2011         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
2012         initialization, additionally we request the element_type vtable to be initialized as well.
2013
2014         This is fine and should not increase the working set in any meaningful way since it's reasonable
2015         to assume       that most code will create an array and eventually populate it, which will require the
2016         type's vtable to be initialized.
2017
2018         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
2019
2020 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
2021
2022         * normalization-tables.h : regenerated.
2023
2024 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2025
2026         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
2027         a leb128 encoding can take up to 5 bytes.
2028
2029 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
2030
2031         * class.c (verify_class_overrides): Remove useless argument.
2032
2033         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
2034         before interface enumeration as this is no longer required.
2035
2036 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
2037
2038         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
2039         used under mono_class_init context. This functions avoid any code path that
2040         calls mono_class_init, which leads it to be slow as some things like the interface
2041         bitmap are not available.
2042
2043         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
2044         of it's own broken version. Fixes the verifier part of #538588.
2045
2046         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
2047         API.
2048
2049 2009-09-15  Mark Probst  <mark.probst@gmail.com>
2050
2051         * class.c (mono_class_init): Always set an exception in a class if
2052         vtable setup fails.  Fixes #538577.
2053
2054         * generic-sharing.c: Raise an exception if mono_class_vtable()
2055         returns NULL.
2056
2057 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
2058
2059         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
2060         methods of vtypes, as they could be incorrectly shared with static methods
2061         taking an IntPtr argument.
2062
2063 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
2064
2065         * domain.c:
2066         * object.c:
2067         * class-internals.h: renamed waithandle_class to
2068         manualresetevent_class.
2069         * marshal.c: propagate the exception if a remoting BeginInvoke call
2070         fails.
2071
2072 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
2073
2074         * object.c: Properly handle vtable failures.
2075
2076 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
2077
2078         * socket-io.c: Assert on vtable failure.
2079
2080         * mono-mlist.c: Assert on vtable failure.
2081
2082 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
2083
2084         * marshal.c: Assert on vtable failure.
2085
2086 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
2087
2088         * icall.c: Properly handle vtable failures.
2089
2090 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
2091
2092         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
2093
2094 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
2095
2096         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
2097
2098         * console-unix.c (do_console_cancel_event): Same.
2099
2100 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
2101
2102         * class-internals.h: Add mono_class_vtable_full function that allows control
2103         if an exception should be raised or not.
2104
2105         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
2106         to do what its documentation say, that is to return NULL and set exception_type on
2107         failure.
2108
2109         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
2110         and change the code to honor it.
2111
2112 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
2113
2114         * verify.c: Fix typo in error message.
2115
2116 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
2117
2118         * security-core-clr.c: Fix default_platform_check so it can run
2119         the runtime coreclr tests (without an infinite recursion when
2120         throwing an exception).
2121
2122 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
2123
2124         object.c (mono_delegate_ctor_with_method): Guard against null method.
2125
2126 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
2127
2128         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
2129         that should be replaced with error handling later.
2130
2131 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
2132
2133         * marshal.c (mono_delegate_end_invoke): Fix warning.
2134
2135 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
2136
2137         * loader.c (mono_field_from_token): Properly handle invalid
2138         dynamic tokens.
2139
2140 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
2141
2142         * pedump.c (verify_image_file): Skip types that can't be
2143         decoded.
2144
2145 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
2146
2147         * verify.c: Look for recursive valuetypes only against the
2148         type been initialized as this is a lot simpler and works.
2149
2150 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
2151
2152         * verify.c: Ensure that fields are properly loaded before
2153         checking them.
2154
2155 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
2156
2157         * object.c (mono_object_get_virtual_method) : Call 
2158           mono_cominterop_get_invoke if the object is a COM object.
2159
2160         Code is contributed under MIT/X11 license.
2161
2162 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
2163
2164         * verify.c: Check for recursive valuetype definitions.
2165
2166 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
2167
2168         Use inheritance-aware interface offsets. Inherited types use the same offsets
2169         of their parents. This reduce offset duplication in case more than one type in
2170         the inheritance tree explicitly implements the same interface.
2171
2172         This also removes a source of vtable bubbles found in #532409. An abstract type
2173         isn't required to provide abstract methods to all interfaces it implements, which
2174         resulted in a bubble with the previous scheme as the child would get a non-full
2175         vtable from its parent. We fail all concrete types with vtable bubbles, so this
2176         should be fixed.
2177
2178         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
2179         it's expected to not cause any significant increase beyond that.
2180
2181         * class.c (setup_interface_offsets): Compute super class iface offsets
2182         first to force sharing.
2183
2184         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
2185         dumping only the relevant ones.
2186
2187         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
2188         methods a new slot regardless if they belong to an interface or not. This allows
2189         an inherited type to override the iface method separately from the class one.
2190
2191 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2192
2193         * threadpool.c: make the Sleep() alertable to prevent delays exiting
2194         applications that take less than 2s to execute.
2195         Bug #524984 fixed.
2196
2197 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
2198
2199         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
2200
2201         * object.c (mono_get_runtime_callbacks): New helper function to return
2202         the runtime callbacks.
2203
2204         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
2205         mono_get_runtime_build_info () as the display name.
2206         
2207 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
2208
2209         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
2210         argument, since NEWARR expects a native int. Fixes #481559.
2211
2212 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
2213
2214         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
2215         against broken SRE methods.
2216
2217 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
2218
2219         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
2220         a NULL variable. Abort early on failure.
2221
2222 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
2223
2224         * class.c (can_access_type): Fail visibility test for non nested
2225         types with nested visibility.
2226
2227 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
2228
2229         * assembly.c (parse_public_key): Avoid allocating (and not 
2230         freeing) the public key array when it's not requested by the 
2231         caller.
2232         * threads.c (mono_thread_manage, mono_thread_create_internal, 
2233         ves_icall_System_Threading_Thread_Thread_internal): Free 
2234         allocated memory on error.
2235
2236 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2237
2238         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
2239
2240 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2241
2242         * class.c (mono_class_setup_fields): Remove duplicated local variable
2243         named gklass.
2244         Rename gklass to gtd to reflect the fact that it points to the generic
2245         type definition.
2246         Remove the duplicated call to mono_class_setup_fields on gtd and move
2247         the error check to the beginning.
2248
2249 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2250
2251         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
2252         Remove cruft of the previous patch.
2253
2254 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
2255
2256         * metadata-verify.c (verify_method_table): Check for abstract + final.
2257         Fixes #534175.
2258
2259 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
2260
2261         * verify.c (verify_class_fields): Check for duplicate fields.
2262
2263 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
2264
2265         * metadata-verify.c: Verify the typeref table for duplicates.
2266
2267 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
2268
2269         This reverts r140936 and properly handles interfaces with static methods. The
2270         right fix is to ensure vtables without bubles which is an easier to verify
2271         constraint. We should avoid such special cases as of the reverted patch as those
2272         only make the runtime more brittle.
2273
2274         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
2275         static methods on interfaces.
2276
2277         * class.c (setup_interface_offsets): Use the number of virtual methods when
2278         calculating interface offsets instead of the number of methods. This way we
2279         avoid bubles on the layout.
2280
2281 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
2282
2283         * metadata-verify.c (verify_metadata_header): Some very smart
2284         obfuscators like to add extra stream headers. Ignore them.
2285
2286 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
2287
2288         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
2289         methods correctly.
2290
2291 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
2292
2293         * metadata-verify.c: Verify for duplicated types.
2294
2295 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
2296
2297         * metadata-verify.c (verify_typedef_table): Verify for nested types
2298         without an entry on the nested class table.
2299
2300 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2301
2302         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
2303         <tom_hindle@sil.org>. Add locking around hash table accesses.
2304
2305 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
2306
2307         * verify.c (mono_verifier_verify_class): Verify all interface if
2308         really are interfaces. Fixes #534184.
2309
2310 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
2311
2312         * pedump.c: Initialize all types during metadata validation so we report
2313         errors only detected as part of class initialization.
2314
2315 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
2316
2317         * metadata-verify.c (verify_method_table): PInvoke requires method to
2318         be static. Fixes #534189
2319
2320 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
2321
2322         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
2323         being NULL.
2324
2325 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
2326
2327         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
2328         for holes or bad methods. Fixes #525314.
2329
2330 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
2331
2332         * class.c (setup_interface_offsets): Don't allocate slot
2333         for the same interface multiple times. This creates bubbles
2334         that waster space and make vtable verification harder.
2335
2336         The same interface get a slot multiple times since we need
2337         to get the closure of all implemented interfaces, which means
2338         the same interface is reported multiple times.
2339
2340 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
2341
2342         * verify.c (mono_verifier_verify_class): Don't check the fields
2343         of generic instances since the context on which they got expanded
2344         might lead to false positives.
2345
2346         Such thing happens when a generic type is inflated in the context
2347         of a generic method and the inflated type of a field turns into a
2348         generic method argument, which causes the checking code to think
2349         it's an invalid class when it's not.
2350
2351 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
2352
2353         * verify.c (mono_type_is_valid_in_context): Verify if type
2354         is NULL and remove duplicate test.
2355
2356 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
2357
2358         * verify.c (mono_verifier_verify_class): Check fields for
2359         invalid generic arguments.
2360
2361 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
2362
2363         * class.c (verify_class_overrides): Verify if for static
2364         and non virtual methods.
2365
2366 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
2367
2368         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
2369         Check for errors after retrieving the vtable.
2370
2371 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
2372
2373         * class.c (mono_class_setup_vtable_general): Verify
2374         if method overrides are valid before processing them.
2375
2376 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
2377
2378         * marshal.c (mono_array_to_lparray): Fix minimal build with
2379         cominterop disabled.
2380
2381         * marshal.c (mono_free_lparray): Same.
2382
2383 2009-08-21  Mark Probst  <mark.probst@gmail.com>
2384
2385         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
2386         the hash function for the ares_htable.
2387
2388 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
2389
2390         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
2391         bit for assembly flags. MS is ok with it but there is no spec anywhere
2392         on its mean
2393
2394 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2395
2396         * class.c (mono_class_create_from_typedef): Emit profiler events
2397         in all cases.
2398
2399 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2400
2401         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
2402         Release memory on failure.
2403
2404 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2405
2406         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
2407         to the internal API.
2408
2409         * metadata.c (get_constraints): Use a single-linked table as we don't
2410         traverse it backward. Fail and return FALSE if only of the contraint types
2411         is not found.
2412
2413         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
2414         to mono_metadata_load_generic_param_constraints except for having a return value.
2415         This has to be done since the later is part of the public API.
2416
2417         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
2418         and fail the type.
2419
2420         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
2421         and fail the method.
2422
2423 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2424
2425         * metadata-verify.c (is_valid_method_header): Add work-around to deal
2426         with MS broken behavior of emmitting EH section sizes without the
2427         header size added.
2428
2429 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2430
2431         * metadata.c (mono_type_create_from_typespec): Don't allocate image
2432         memory until we're sure that we'll need it. This avoids leaking for
2433         broken types or duplicated instantiation.
2434
2435 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2436
2437         * metadata-verify.c (is_valid_method_header): Fix stupid formating
2438         mistake.
2439
2440 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2441
2442         * metadata-verify.c (is_valid_method_header): Fix number of clauses
2443         and expected size calculation.
2444
2445 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2446
2447         * class.c (mono_class_get_field_idx): Add fixme for broken
2448         behavior for types with multiple fields with the same name.
2449         I would rather fix it, but have no idea on how to generate
2450         such artifact for testing.
2451
2452 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2453
2454         * verify.c (verifier_load_field): We should allow references to
2455         fields to be made using the generic type definition. It's up to
2456         the loader system to fail invalid ops.
2457
2458         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
2459         are invalid.
2460
2461 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2462
2463         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
2464
2465         * metadata-internals.h: Fix declaration of 
2466         mono_metadata_interfaces_from_typedef_full.
2467
2468         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
2469         heap_alloc_result parameter that controls if the result should be
2470         g_malloc'd.
2471
2472         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
2473         array be g_malloc'd and properly document this public API function.
2474
2475 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2476
2477         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
2478         remove METHOD_HEADER_TINY_FORMAT1.
2479
2480         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
2481
2482         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
2483
2484         Both spec and MS uses only 2 bits to enumerate the kind of header.
2485         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
2486         is superfluous, only used for tiny headers with odd code lengths.
2487
2488         This change also make sure that mono doesn't wronly interpret bit 2
2489         of fat header flags, which is currently reserved.
2490
2491 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2492
2493         * metadata.c (do_mono_metadata_parse_type): Do error
2494         checking for element types. Don't abort if presented
2495         with a broken type kind.
2496
2497 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2498
2499         * metadata.c (mono_metadata_parse_method_signature_full):
2500         Gracefully fail bad vararg signatures.
2501
2502 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2503
2504         * profiler.c:
2505         * class.c: Fix warnings for uninitialized variables.
2506
2507 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2508
2509         * icall.c: Fix _NSGetEnviron method declaration warning.
2510
2511 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2512
2513         * icall.c:
2514         * reflection.c: Make bitwise checks explicit.
2515
2516 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2517
2518         * debug-helpers.c:
2519         * marshal.c: Fix printf warnings.
2520
2521 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * reflection.c (encode_cattr_value): Fix a warning.
2524
2525 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2526
2527         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
2528         of array bounds.
2529
2530 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2531
2532         * loader.c (mono_method_signature): Don't assert on broken
2533         signature. Print a more useful error message.
2534
2535 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2536
2537         * loader.c (mono_method_get_marshal_info): Assert if
2538         signature is invalid. Bounds check stores to the
2539         mspecs array;
2540
2541 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2542
2543         * loader.c (field_from_memberref): Fix warning.
2544
2545 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2546
2547         * loader.c (mono_method_get_param_names): Check if signature
2548         is null. Don't store beyond the size of the name array.
2549
2550 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2551
2552         * loader.c (mono_get_method_constrained): Check if signature
2553         is null.
2554
2555 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2556
2557         * loader.c (mono_loader_set_error_bad_image): Improve
2558         error messages.
2559
2560 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2561
2562         * loader.c (mono_get_method_full): Convert an assertion
2563         into a loader error.
2564
2565 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
2566
2567         * class-internals.h, class.c: Better naming and documentation.
2568
2569 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
2572         obj is NULL.
2573
2574 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
2575
2576         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
2577         parsing fails.
2578
2579 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
2580
2581         * loader.c (mono_loader_error_prepare_exception): Handle missing field
2582         errors with no class set.
2583
2584         * loader.c (field_from_memberref): If the field signature is of the wrong
2585         type fail with a MissingFieldException instead of a BadImageException as
2586         this is the behavior observed on MS. 
2587
2588 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
2589
2590         * loader.c (field_from_memberref): Don't crash if either the field
2591         signature or the typespec class are invalid.
2592
2593 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
2594
2595         * verify.c (verifier_load_field): Don't allow field related
2596         ops to reference fields on generic type definition.
2597
2598 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
2599
2600         * metadata-verify.c: Add new warning level for errors specified
2601         by ECMA 335 but that MS ignores.
2602
2603         * metadata-verify.c (verify_method_table): Make compiler controled
2604         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
2605         this check is safe because the end result will only be some visibility
2606         exceptions been thrown.
2607
2608 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
2609
2610         * verify.c (get_boxable_mono_type): Don't allow the
2611         use of the generic type definition on boxed type positions.
2612
2613         Fixes #531237.
2614
2615 2009-08-14  Mark Probst  <mark.probst@gmail.com>
2616
2617         * threadpool.c: Make sure no cross-domain references remain in
2618         ares_htable or the arrays that are thrown away when resizing.
2619
2620 2009-08-14  Mark Probst  <mark.probst@gmail.com>
2621
2622         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
2623         list of classes for which we have to unregister reflection_info
2624         with the GC and which are not in the namespace cache.
2625
2626         * reflection.c (mono_reflection_initialize_generic_parameter): Add
2627         the class to the list.
2628
2629 2009-08-14  Mark Probst  <mark.probst@gmail.com>
2630
2631         * domain.c (mono_domain_free): Unregister the GC roots in
2632         MonoDomain.
2633
2634 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
2635
2636         * reflection.c (mono_reflection_type_get_handle): Fix typo.
2637
2638 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
2639
2640         * class.c: Add mono_class_get_field_from_name_full which does
2641         the same as mono_class_get_field_from_name but does check field
2642         signature as well.
2643
2644         * class-internals.h: Export mono_class_get_field_from_name_full as
2645         part of the internal API.
2646
2647         * loader.c (field_from_memberref): Search fields by name and signature
2648         as it's valid to have two fields with same name but different types.
2649
2650         Fixes #528055.
2651
2652 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
2653
2654         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
2655
2656         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
2657
2658         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
2659         System.Type.
2660
2661 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
2664
2665         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
2666
2667 2009-08-12  Mark Probst  <mark.probst@gmail.com>
2668
2669         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
2670         to sgen-scan-object.h, which can be included and parameterized via
2671         macros.
2672
2673         * Makefile.am: sgen-scan-object.h added.
2674
2675 2009-08-12  Mark Probst  <mark.probst@gmail.com>
2676
2677         * gc.c: #define GC_dont_gc if we're compiling with SGen.
2678
2679 2009-08-12  Mark Probst  <mark.probst@gmail.com>
2680
2681         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
2682         before clearing a domain in the GC.
2683
2684 2009-08-12  Mark Probst  <mark.probst@gmail.com>
2685
2686         * exception.c (mono_exception_from_name_domain): Actually create
2687         the exception in the specified domain.
2688
2689         * appdomain.c (mono_domain_create_appdomain_internal): Create the
2690         OutOfMemoryException a bit later so that the domain is inialized
2691         "enough" that it works.
2692
2693 2009-08-12  Mark Probst  <mark.probst@gmail.com>
2694
2695         * threads.c (thread_cleanup): Clean up the cached_culture_info
2696         array to prevent cross-domain references.
2697
2698 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2699
2700         * metadata.c: more documentation for MonoType accessors.
2701
2702 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
2703
2704         Fix incorrect size definitions where the tail array isn't a list
2705         of pointers
2706         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
2707         define size.
2708         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
2709         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
2710         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
2711
2712 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2713
2714         * reflection.h:
2715         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
2716
2717 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2718
2719         * metadata.c:
2720         * loader.c:
2721         * metadata-internals.h:
2722         * method-builder.c:
2723         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
2724
2725 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2726
2727         * cominterop.c:
2728         * metadata.c:
2729         * metadata.h:
2730         * loader.c:
2731         * marshal.c:
2732         * reflection.c: #define for sizeof in MonoType and
2733         MonoMethodSignature.
2734
2735 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2736
2737         * domain.c:
2738         * domain-internals.h: add and use #define's instead of sizeof()
2739         for MonoJitInfo and MonoJitInfoTable.
2740
2741 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2742
2743         * object.c:
2744         * class.h: use #define instead of sizeof() for MonoRemoteClass.
2745
2746 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2747
2748         * metadata.c:
2749         * metadata.h:
2750         * object.c:
2751         * class-internals.h:
2752         * generic-sharing.c:
2753         * marshal.c: use a #define instead of sizeof() for a few
2754         structures that use a zero-length array.
2755
2756 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
2757
2758         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
2759         to handle inflated generic methods.
2760
2761         * appdomain.c: Bump corlib version.
2762
2763         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
2764         instances.
2765
2766         * reflection.c (fixup_method): Same
2767
2768         * reflection.c (resolve_object): Same.
2769
2770         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
2771         g_error and a decent message.
2772
2773 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
2774
2775         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
2776         from the object because it could not yet be available globally
2777         (it happens if the profiler tries to create a gchandle on the
2778         MonoThread object of a thread that is still registering itself
2779         with the runtime).
2780
2781 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
2782
2783         * reflection.c (mono_generic_class_get_object): Initialized the
2784         managed type arguments array.
2785
2786         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
2787
2788         * appdomain.c: Bump corlib version.
2789
2790 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
2791
2792         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
2793         #527902.
2794
2795 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
2796
2797         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
2798         Avoid a crash if synch_cs is not set.
2799         
2800         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
2801         Handle the case when the handle is 0.
2802
2803         * appdomain.c: Bump corlib version.
2804
2805 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
2806
2807         * reflection.c (mono_type_get_object): Fix a warning.
2808
2809 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2810
2811         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
2812         descriptor here.  We assume it's already been computed.
2813
2814         * generic-sharing.c (instantiate_other_info): Compute the GC
2815         descriptor for info type MONO_RGCTX_INFO_KLASS.
2816
2817 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2818
2819         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
2820         type, so don't use MONO_OBJECT_SETREF to set a field.
2821
2822 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2823
2824         * gc.c: We were missing one case where invoking a finalizer would
2825         not reset the domain.  Also, in the finalizer thread loop, assert
2826         that we're in the root domain.
2827
2828 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2829
2830         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
2831         if the type is not an array.
2832
2833 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2834
2835         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
2836         method bound to the declaring type of the method. Raise an exception
2837         if the type is not a generic param.
2838
2839 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2840
2841         * class.c (print_unimplemented_interface_method_info): Print the
2842         full type name.
2843
2844         * class.c (mono_class_setup_vtable_general): When dealing with a
2845         generic instance first check if the generic type definition is
2846         not broken.
2847
2848 2009-02-11 Tom Hindke <tom_hindle@sil.org>
2849
2850         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
2851
2852         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
2853
2854         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
2855
2856         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
2857
2858         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
2859
2860         Code is contributed under MIT/X11 license
2861
2862 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2863
2864         * verify.c: Fix naming of stelem and ldelem.
2865
2866 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2867
2868         * generic-sharing.c: Replace the templates lock with the loader
2869         lock because of very hard to resolve deadlock issues.
2870
2871 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * icall.c (ves_icall_Type_GetMethodsByName): Use 
2874         mono_class_get_vtable_size () instead of accessing klass->vtable_size
2875         directly. Fixes #525338.
2876
2877         * class.c (mono_class_get_vtable_size): New helper function.
2878
2879         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
2880         the field belongs to the type. Fixes #525733.
2881
2882 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2883
2884         * sgen-gc.c: When we stop a thread and its stack top is not within
2885         its allocated stack (because it's in an altstack signal handler),
2886         restart it and stop it again, until it is.
2887
2888 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2889
2890         * sgen-gc.c: Take a thread's stack top and registers from the
2891         sigcontext in the suspend signal handler.
2892
2893         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
2894         stuff to sgen-archdep.h.
2895
2896         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
2897         caller, because have code in sgen-archdep.h to acquire that data.
2898
2899 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2900
2901         * profiler.c, profiler.h, profiler-private.h:
2902         Added support for keeping track of code chunks and buffers.
2903
2904 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
2905
2906         * metadata-verify.c: Fix endianness problems on decoding functions.
2907         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
2908
2909 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
2910
2911         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
2912         schema for vectors and one dimension SZARRAY.
2913
2914 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
2915
2916         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
2917         schema for vectors and one dimension SZARRAY.
2918
2919 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2920
2921         * icall-def.h, thread-types.h, threads.c: New separate icalls for
2922         Interlocked.(Compare)Exchange with object arguments, which invoke
2923         write barriers.
2924
2925 2009-07-26  Miguel de Icaza  <miguel@novell.com>
2926
2927         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
2928         passed invalid arguments.   Fixes another crasher in the
2929         Silverlight test suite.
2930
2931         * class.c (mono_class_array_element_size): Return 0 for the size
2932         of the class;  This fixes the crasher exposed by :
2933
2934         typeof (void).MakeArrayType ();
2935
2936         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
2937         if there is no method to dereference.    Put all the code that
2938         depends on this inside the if (method) block.
2939
2940         This fixes the crasher exposed by Microsoft's Silvelright CLR test
2941         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
2942
2943         With this change, we pass the test.
2944         
2945         * reflection.c (mono_reflection_sighelper_get_signature_local):
2946         Only dereference the assembly if it has been set.    Fixes a
2947         crasher exposed by #525328
2948
2949 2009-07-25  Mark Probst  <mark.probst@gmail.com>
2950
2951         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
2952         don't perform the store in mono_gc_wbarrier_generic_nostore().
2953         Remove the second argument (value), which is not needed.
2954
2955 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2956
2957         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
2958         the build.
2959
2960         * boehm-gc.c: Ditto.
2961         
2962 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2963
2964         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
2965         not perform the store itself.  Introduce
2966         mono_gc_wbarrier_generic_nostore(), which is the same as
2967         mono_gc_wbarrier_generic_store(), except it doesn't perform the
2968         store.
2969
2970 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2971
2972         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
2973         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
2974         we still need the memcpy().
2975
2976 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2977
2978         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
2979         so that big arrays are handled correctly.  Always use
2980         safe_object_get_size() to calculate array object sizes, which
2981         takes bounds into account.
2982
2983 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2984
2985         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
2986         GC descriptor is computed before we use it.
2987
2988 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2989
2990         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
2991         write barrier if necessary.
2992
2993 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2994
2995         * icall-def.h, icall.c, thread-types.h: New separate icall for
2996         VolatileWrite(object&,object) that uses a write barrier.
2997
2998         * console-unix.c, file-io.c, icall.c, threads.c: Use write
2999         barriers in icalls which write to "ref" or "out" arguments.
3000
3001 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3002
3003         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
3004         handler in a separate icall, to reduce the size of the wrappers.
3005
3006 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
3007
3008         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
3009
3010 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
3011
3012         * metadata-verify.c (parse_field): Allow byref field.
3013
3014         * metadata-verify.c (parse_locals_signature): Allow byref locals.
3015
3016         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
3017
3018 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
3019
3020         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
3021         Fixes #522784.
3022
3023 2009-07-20  Robert Jordan  <robertj@gmx.net>
3024
3025         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
3026         Fix invalid IL in valuetype handling (STOBJ must push the
3027         corresponding class). Fixes bug #523149.
3028
3029         Code is contributed under MIT/X11 license.
3030
3031 2009-07-20  Geoff Norton  <gnorton@novell.com>
3032
3033         * gc.c: Use proper semaphores where available on posix and darwin.
3034
3035 2009-07-19  Geoff Norton  <gnorton@novell.com>
3036
3037         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
3038
3039 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3040
3041         * refletion.c (is_sre_usertype): Change name to is_usertype and
3042         invert it's result so it returns true if the type is an user type
3043         and not the opposite.
3044
3045         * reflection.c (is_*_type): Change all of those to use new macro
3046         check_corlib_type_cached that cached the type lookup so we don't
3047         need to do string comparisons all the type. Changed the signature
3048         to take a MonoClass instead.
3049
3050         * reflection.c: Change mono_image_create_token and resolve_object
3051         to use is_sre_* functions.
3052
3053 2009-07-18  Mark Probst  <mark.probst@gmail.com>
3054
3055         * sgen-gc.c: Check for writes to the stack in the managed
3056         wbarrier as well.
3057
3058 2009-07-18  Mark Probst  <mark.probst@gmail.com>
3059
3060         * sgen-gc.c: When a thread is unregistered, don't free its remsets
3061         but put them on a list which is processed with the other thread's
3062         remsets.
3063
3064 2009-07-18  Mark Probst  <mark.probst@gmail.com>
3065
3066         * sgen-gc.c: Fix and enable the internal allocator instead of
3067         using malloc/free (which causes deadlocks).
3068
3069 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
3070
3071         * refletion.c: Fix builds with SRE disabled by adding a minimal
3072         implementation of mono_reflection_type_get_handle.
3073
3074 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3075
3076         * refletion.c: Make mono_reflection_type_get_handle non static.
3077
3078         * object-internals.h: Export mono_reflection_type_get_handle.
3079
3080         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
3081         unmanaged handle using mono_reflection_type_get_handle.
3082
3083 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3084
3085         * refletion.c: Replace all reads of MonoReflectionType::type with
3086         calls to mono_reflection_type_get_handle. Only the functions that
3087         deal with constructing TypeBuilder::type have not been changed
3088         because they have to deal with NULL values.
3089
3090         This is a first step into supporting reflection types that don't
3091         map directly into their unmanaged counterpart.
3092
3093 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3094
3095         * metadata-verify.c (parse_locals_signature): Don't complain
3096         on signature with zero locals since MS generates it and doesn't
3097         bother with.
3098
3099 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3100
3101         * reflection.c (mono_image_get_array_token): Resolve return
3102         type using mono_reflection_type_get_handle.
3103
3104         * reflection.c (mono_image_get_array_token): Resolve array method
3105         parent type using mono_reflection_type_get_handle.
3106
3107 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3108
3109         * reflection.c (mono_image_basic_init): Applied patch from
3110         <Dax@daxxfiles.net>. Set the public key token from the assembly
3111         builder. Fixes #518909.
3112
3113         * appdomain.c: Bump corlib version.
3114
3115 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3116
3117         * class.c (mono_class_needs_cctor_run): Make this return false if
3118         the class has no cctor.
3119
3120 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3121
3122         * sgen-gc.c: When the minor GC needs to allocate a new section,
3123         invoke the major GC afterwards.
3124
3125 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
3126
3127         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
3128           Applying the window_style field to the SHELLEXECUTEINFO struct.
3129
3130         Code is contributed under MIT/X11 license.
3131
3132 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3133
3134         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
3135         locking earlier.  Fix it in the managed allocator by making sure
3136         that no thread is stopped there before the GC runs.  If we do stop
3137         a thread there, we restart it and let it run a but, until it stops
3138         somewhere else.
3139
3140         * gc-internal.h, gc.c: Function for getting the IP from a signal
3141         context via a function registered by mini.
3142
3143 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
3144
3145         * object-internals.h (MonoIntPtr): New structure describing a boxed
3146         IntPtr.
3147
3148         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
3149         returns. Fixes #519953.
3150
3151         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
3152
3153 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3154
3155         * class-internals.h, generic-sharing.c: New RGCTX info type for
3156         getting a remoting invoke with check wrapper.
3157
3158 2009-07-07  Geoff Norton  <gnorton@novell.com>
3159
3160         * icall-def.h: Fix the enable-minimal build.
3161
3162 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
3163
3164         * object-internals.h: Add MonoReflectionDerivedType.
3165
3166         * reflection.c: Implement support for PointerType.
3167         Fixed tons of warnings.
3168
3169 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
3170
3171         * object-internals.h: Add MonoReflectionByRefType.
3172
3173         * reflection.c: Implement support for ByRefType.
3174
3175 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
3176
3177         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
3178
3179         * object-internals.h: Add MonoReflectionArrayType and
3180         mono_reflection_create_unmanaged_type.
3181
3182         * reflection.c: Implement support for ArrayType.
3183
3184 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
3185
3186         * metadata-verify.c (is_valid_method_header): Parse EH block
3187         flags correctly.
3188
3189 2009-07-03  Mark Probst  <mark.probst@gmail.com>
3190
3191         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
3192         processing the disappearing links, and process disappearing links
3193         in a loop until no new objects are copied.
3194
3195 2009-07-03  Mark Probst  <mark.probst@gmail.com>
3196
3197         * object.c (handle_enum): Invoke the write barrier when copying
3198         value type instances.
3199
3200         * sgen-gc.c: Register remsets for unmanaged write barriers only
3201         when the address written to is actually on the heap.  This makes
3202         set_value() in object.c work without requiring that the result be
3203         on the heap.
3204
3205 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
3206
3207         The runtime wrappers are all bound to a given type that must
3208         exist in the same image. For regular images we use the <Module>
3209         type, which is required to exist for all images.
3210
3211         The <Module> type can't be used for dynamic images because it
3212         might not exist at the time the wrapper is required, so we create
3213         a synthetic type to use instead.
3214
3215         The current code works because of the 2 stage setup of MonoClass,
3216         but once this is gone it will no longer work.
3217
3218         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
3219
3220         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
3221
3222         * object-internals.h: Export mono_image_set_wrappers_type icall
3223         as part of the internal API.
3224
3225         * marshal.c (get_wrapper_target_class): If the image is dynamic,
3226         use MonoDynamicImage::wrappers_type instead of the <Module> type.
3227
3228         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
3229         image wrappers_type to the provided value.
3230
3231 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
3232
3233         * appdomain.c (deregister_reflection_info_roots): No need
3234         to use the image lock here.
3235
3236 2009-07-02  Mark Probst  <mark.probst@gmail.com>
3237
3238         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
3239
3240 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3241
3242         * threads.c: Store the thread start argument in a hash table instead of
3243         registering it as a root, as libgc doesn't support unregistering roots
3244         under windows, leading to 'too many root sets' errors when many threads
3245         are created.
3246
3247         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
3248         shutdown, they can still be referenced by the other dying objects.
3249         Fixes #514506.
3250
3251 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3252
3253         * socket-io.c: DontLinger does not allow LingerOptions.
3254
3255 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
3256
3257         * metadata-verify.c: The spec doesn't mention that it's possible to add
3258         custom attribute to a generic parameter. Fixed.
3259
3260 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
3261
3262         * class.c (inflate_generic_type): Don't crash while trying to output a message
3263         on why we're aborting.
3264
3265 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3266
3267         * socket-io.c: DontLinger can take an int or a boolean too.
3268
3269 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
3270
3271         * gc.c: check for a null argument to SuppressFinalize () and
3272         ReRegisterForFinalize ().
3273
3274 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
3275
3276         * loader.c (method_from_methodspec): Call into the verifier to check
3277         the signature.
3278
3279         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
3280
3281         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
3282         part of the internal API.
3283
3284 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3285
3286         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
3287         the signature.
3288
3289         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
3290
3291         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
3292         part of the internal API.
3293
3294 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3295
3296         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
3297         the signature.
3298
3299         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
3300         blob verification.
3301
3302         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
3303         part of the internal API.
3304
3305 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3306
3307         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
3308         when doing basic verification. 
3309
3310         This check must be done since the runtime peeks into signatures in much
3311         more places than it does decoding so it makes sense to ensure that all
3312         pointers to blob objects are well formed.
3313
3314 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3315
3316         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
3317         Use proper overflow dectection. Fix usage of it.
3318
3319 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3320
3321         * loader.c (field_from_memberref): Call into the verifier to check
3322         the signature.
3323
3324         * loader.c (mono_method_get_signature_full): Same.
3325
3326         * loader.c (method_from_memberref): Same.
3327
3328         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
3329
3330         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
3331         part of the internal API.
3332
3333 2009-06-25  Mark Probst  <mark.probst@gmail.com>
3334
3335         * threadpool.c (mono_thread_pool_add): If the domain is unloading
3336         or unloaded, still return an AsyncResult, but don't add it to the
3337         threadpool.
3338
3339 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3340
3341         * threads.c: fix missing colon when DEBUG is defined.
3342
3343 2009-06-25  Mark Probst  <mark.probst@gmail.com>
3344
3345         * threadpool.c: Don't add new calls to a threadpool if the domain
3346         of the call is unloading or unloaded.  When dequeuing a job, null
3347         the reference in the queue.
3348
3349 2009-06-25  Mark Probst  <mark.probst@gmail.com>
3350
3351         * sgen-gc.c (null_link_in_range): Add the dislink for the old
3352         generation if an object was moved.
3353
3354 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
3355
3356         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
3357           parameters of type SAFEARRAY[VARIANT].
3358
3359         * reflection.c (encode_marshal_blob): Properly generate element type
3360           (SafeArraySubType marshal attribute option).
3361
3362         Code is contributed under MIT/X11 license.
3363
3364 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
3365
3366         * reflection.c: in mono_method_clear_object () really ensure all the
3367         objects are removed.
3368
3369 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
3370
3371         * loader.c (mono_method_signature): Call into the verifier to check
3372         the method signature.
3373
3374         * metadata-verify.c (verify_method_table): Move signature verification
3375         to verify_method_table_full.
3376
3377         * metadata-verify.c: Add mono_verifier_verify_method_signature.
3378
3379         * verify-internals.h: Export mono_verifier_verify_method_signature as
3380         part of the internal API.
3381
3382 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
3383
3384         * loader.c (mono_method_get_header): Call into the verifier to
3385         check the method header.
3386
3387         * metadata-verify.c: Add mono_verifier_verify_method_header.
3388
3389         * verify-internals.h: Export mono_verifier_verify_method_header as
3390         part of the internal API.
3391
3392 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
3393
3394         * class.c (mono_class_find_enum_basetype): Call into the verifier to
3395         check the field signature. Replace an assert with an explicit check.
3396
3397         * class.c (mono_class_setup_fields): Call into the verifier to check
3398         the field signature.
3399
3400         * metadata-verify.c: Add mono_verifier_verify_field_signature.
3401
3402         * verify-internals.h: Export mono_verifier_verify_field_signature as
3403         part of the internal API.
3404
3405 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
3406
3407         * class.c (mono_class_find_enum_basetype): Simplify this function
3408         by moving code outside of the loop and not decoding static fields.
3409
3410 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
3411
3412         * metadata-verify.c (verify_typedef_table): Check the extends
3413         token here. Move to here a flags check from verify_typedef_table_full.
3414
3415 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3416
3417         * metadata-verify.c (is_valid_method_header): Fix a warning.
3418
3419         * metadata-internals.h (MonoImage): Remove the unused 
3420         static_rgctx_invoke_wrapper_cache.
3421
3422         * image.c marshal.c: Ditto.
3423
3424 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
3425
3426         * image.c (do_mono_image_load): Enable table data verification.
3427
3428 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
3429
3430         * metadata-verify.c (is_valid_constant): Fix nullref check.
3431
3432 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
3433
3434         * metadata-verify.c (is_valid_constant): Fix string bounds check.
3435
3436 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3437
3438         * sgen-gc.c: Managed allocation with pthreads TLS.
3439
3440         * threads.c, threads-types.h: Functions for the JIT to tell the
3441         runtime whether it supports the MONO_TLS opcode.
3442
3443 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
3444
3445         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
3446         without methods.
3447
3448 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
3449
3450         * metadata-verify.c (is_valid_constant): Fix the string length check.
3451         Use safe overflow checking. Add decent error messages.
3452
3453 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
3454
3455         * metadata-verify.c: Move remaininh blob checks to the offline
3456         verification path.
3457
3458 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
3459
3460         * metadata-verify.c: Move more blob checks to the offline verification
3461         path.
3462
3463 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
3464
3465         * object-internals.h : Adding interrupt_on_stop field.
3466
3467         * threads.c (mono_thread_request_interruption) : On Windows exit the
3468           thread if interrupt_on_stop is set.
3469
3470         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
3471          Removing old interrupt logic and setting the interrupt_on_stop for the
3472          thread when calling accept.
3473
3474         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
3475          setting the interrupt_on_stop for the thread when calling accept.
3476
3477         Contributed under MIT/X11 license.
3478
3479 2009-06-20  Martin Baulig  <martin@ximian.com>
3480
3481         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
3482
3483 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3484
3485         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
3486         running in no-exec mode.
3487
3488 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
3489
3490         * metadata-verify.c (verify_method_table): Move header
3491         checking to verify_method_table_full.
3492
3493         * metata-verify.c (mono_verifier_verify_full_table_data):
3494         Call verify_method_table_full.
3495
3496 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
3497
3498         * metadata-verify.c (verify_field_table): Move signature
3499         checking to verify_field_table_full.
3500
3501         * metata-verify.c (mono_verifier_verify_full_table_data):
3502         Call verify_field_table_full.
3503
3504 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
3505
3506         * metadata-verify.c (verify_typedef_table): Move remaining
3507         stuff to verify_typedef_table_full.
3508
3509 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
3510
3511         * metadata-verify.c: Kill is_corlib from VerifyContext.
3512         It is only used by the offline mode.
3513         So we better remove it from the runtime path.
3514
3515 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
3516
3517         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
3518         function that perform the offline metadata verification steps.
3519
3520         * metadata-verify.c (verify_typedef_table): Move some checks to
3521         verify_typedef_table_full and make it been called by new function
3522         mono_verifier_verify_full_table_data.
3523
3524         * pedump.c: Call mono_verifier_verify_full_table_data.
3525
3526         * verify-internals.h: Export mono_verifier_verify_full_table_data as
3527         part of the internal API.
3528
3529 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
3530
3531         * metadata-verify.c (typedef_is_system_object): Fix System.Object
3532         check.
3533
3534         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
3535         flags bits. SupportLastError was confused as bit 7 instead of 6.
3536
3537         * metadata-verify.c (verify_implmap_table): Fix import scope verification
3538         to check against the module ref table instead of module.
3539
3540         * metadata-verify.c (verify_implmap_table): Fix corlib check.
3541
3542         * pedump.c: Call mono_image_load_names.
3543
3544 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
3545
3546         * image.c: Extract mono_image_load_names from do_mono_image_load.
3547
3548         * metadata-internals.h: Export mono_image_load_names as part of
3549         the internal API.
3550         
3551 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3552
3553         * metadata.c (mono_metadata_cleanup): Free the generic method cache
3554         first, as it could reference data in the other caches.
3555
3556 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * metadata-verify.c: Finished with method header verification.
3559
3560 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
3561
3562         * metadata-verify.c: Added more header verification code.
3563         Now only EH clauses are missing.
3564
3565 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
3566
3567         * marshal.c (get_runtime_invoke_type): Don't share primitive types
3568         for return values.
3569
3570 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
3571
3572         * metadata-verify.c: Initial method header verification.
3573
3574 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
3575
3576         * metadata-verify.c (verify_import_table): The IAT contents
3577         might end been patched by the windows DL when running with
3578         coree enabled.
3579
3580 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
3581
3582         * class.c (mono_class_from_typeref): If the enclosing type is not
3583         found return null instead of crashing. Fixes #508487.
3584
3585 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
3586
3587         * normalization-tables.h : updated to the latest unicode charcter
3588           data.
3589         * appdomain.c : bump corlib version.
3590
3591 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
3592
3593         * class.c (mono_class_from_name): Fix support for assembly references
3594         in the EXPORTEDTYPE table. Fixes #511704.
3595
3596 2009-06-13  Geoff Norton  <gnorton@novell.com>
3597
3598         * domain.c: Ensure that mono_domain_assembly_open actually opens the
3599         assembly in the target domain.
3600
3601 2009-06-12  Robert Jordan  <robertj@gmx.net>
3602
3603         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
3604         because "this" of the managed signature has become an
3605         ordinary parameter in the unmanaged signature.
3606
3607 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
3608
3609         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
3610         field for owner-less generic containers.
3611
3612         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
3613         image field of the owner-less generic containers created here.
3614
3615         * metadata.c (mono_metadata_load_generic_params): Ditto, the
3616         contain is ownerless until the caller sets its owner.
3617
3618         * metadata.c (type_in_image): Handle owner-less generic containers
3619         correctly.
3620         
3621 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3622
3623         * image.c (mono_image_close): Support debug_assembly_unload for
3624         dynamic images too.
3625
3626 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
3627
3628         * class.c: Fix some typos in comments.
3629
3630 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3631
3632         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
3633
3634         * threads.c (mono_thread_execute_interruption): Avoid creating the
3635         abort exception object while holding the synch_cs lock.
3636
3637 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3638
3639         * metadata-verify.c: Verify basic cattr content.
3640
3641 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
3644         nested types.
3645         
3646         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
3647         support for nested types. Fixes #511704.
3648
3649 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
3650
3651         * metadata-verify.c: Verify methodspec signatures.
3652
3653 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
3654
3655         * metadata-verify.c: Verify typespec signatures.
3656
3657 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3658
3659         * metadata.c (free_inflated_method): Call 
3660         mono_marshal_free_inflated_wrappers (), which was missed earlier.
3661
3662 2009-06-08  Miguel de Icaza  <miguel@novell.com>
3663
3664         * mono-config.c: Small change to report the PPC64/ILP32 model.
3665
3666 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
3667
3668         * metadata-verify.c (parse_type): Check szarray.
3669
3670 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
3671
3672         * metadata-verify.c (parse_type): Check fnptr.
3673
3674 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
3675
3676         * metadata-verify.c (parse_type): Check generic instances.
3677
3678 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
3679
3680         * metadata-verify.c (parse_type): Check array shape.
3681
3682 2009-06-05  Robert Jordan  <robertj@gmx.net>
3683
3684         * class.c (mono_class_create_from_typedef): Check only for
3685         mscorlib's System.Array.
3686
3687 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
3688
3689         * metadata-verify.c (parse_type): Check pointer, class/valuetype
3690         and generic params. 
3691
3692         * metadata-verify.c (parse_field): Check the signature.
3693
3694 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
3695
3696         * metadata-verify.c: Implement locals signature check.
3697
3698 2009-06-04  Marek Safar  <marek.safar@gmail.com>
3699
3700         * domain.c: Add .NET 4.0 Beta 1 version.
3701
3702 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
3703
3704         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
3705           For QueryInterface on CCWs consider the base class
3706           interfaces as well.
3707
3708         Code is contributed under MIT/X11 license.
3709
3710 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3711
3712         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
3713
3714         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
3715         used.
3716
3717         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
3718         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
3719
3720         * generic-sharing.c (inflate_other_data): Ditto.
3721         
3722 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3723
3724         * metadata-verify.c: Implement property signature check.
3725
3726 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3727
3728         * sgen-gc.h: Register saving support for PPC.
3729
3730 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3731
3732         * sgen-gc.c: Fixed a pthread TLS screwup.
3733
3734 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3735
3736         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
3737         supported.
3738
3739 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3740
3741         * sgen-gc.c: Disable TLA and managed allocation if the __thread
3742         keyword is not supported.
3743
3744 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3745
3746         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
3747         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
3748         the inflated method is freed. Fixes #508389.
3749
3750         The code is contributed under the MIT/X11 license.
3751         
3752 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
3753
3754         * marshal.c (get_wrapper_target_class): New helper function.
3755         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
3756         the <Module> class of the image. Fixes #509049.
3757
3758 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
3759
3760         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
3761         Check if the thread was interrupted and proccess it straight away.
3762         Makes abortion much more responsive.
3763
3764 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
3765
3766         * threads.c (mono_thread_execute_interruption): Use atomic cas with
3767         MonoThread::interruption_requested to match it's counterpart.
3768
3769         Fixes a hang in abort-stress-1 on a 2 core x86.
3770
3771         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
3772         Fix warning.
3773
3774 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
3775
3776         Change MonoImage::name_cache to be protected by the image lock
3777         instead of the loader lock.
3778
3779         * appdomain.c (deregister_reflection_info_roots): Protect access
3780         to name_cache.
3781
3782         * class.c (mono_image_init_name_cache): Change from the loader lock
3783         to the image lock. Check if the cache wasn't already created.
3784
3785         * class.c: Change from the loader to the image lock.
3786
3787         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
3788         the code to hold the image lock while iterating over name_cache and
3789         not go into mono_array_new holding it.
3790
3791         * metadata-internals.h: Add a comment about this change.
3792
3793 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
3794
3795         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
3796         Under the 2.0 profile raise the loader error.
3797
3798         Fixes #508532.
3799
3800 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
3801
3802         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
3803         of ldind opcode for generic instances so we don't fail for direct wrappers.
3804         This only affect direct calls.
3805
3806 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * reflection.c (create_dynamic_mono_image): Fix warnings.
3809
3810         * generic-sharing.c (other_info_equal): Ditto.
3811         
3812 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3813
3814         * metadata-verify.c: Implement field signature check.
3815
3816 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3817
3818         * metadata-verify.c: Implement standalone signature check.
3819
3820 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3821
3822         * metadata-verify.c: Implement methodref signature check.
3823
3824 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * object-internals.h (MonoRuntimeCallbacks): New structure containing
3827         callbacks supplied by the runtime.
3828
3829         * object.c (mono_install_callbacks): New internal function to install
3830         the callbacks.
3831
3832         * object.c (mono_create_ftnptr): Move the implementation of this to
3833         mini/.
3834
3835         * object.c (mono_get_addr_from_ftnptr): Ditto.  
3836
3837 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
3838
3839         * metadata-verify.c (parse_return_type): Proper byref check.
3840         * metadata-verify.c (is_valid_method_signature): Check for zero arity
3841         generic signatures and method params.
3842
3843 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
3844
3845         * metadata-verify.c (decode_signature_header): Fix bounds check.
3846
3847         * metadata-verify.c (parse_custom_mods): Check custom mods.
3848
3849         * metadata-verify.c (parse_type): Do initial basic verification
3850         of valid values.
3851         
3852         * metadata-verify.c (is_valid_method_signature): Parse the generic
3853         param count.
3854
3855 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
3856
3857         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
3858         discarded based on their most specific definition so we set the method_slots
3859         array before checking if the method is acceptable or not.
3860
3861         Fixes #506757.
3862
3863 2009-05-26  Mark Probst  <mark.probst@gmail.com>
3864
3865         * icall.c: Free the old array when resizing a mono_ptr_array.
3866
3867 2009-05-26  Mark Probst  <mark.probst@gmail.com>
3868
3869         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
3870         for the hashes whose keys are managed objects.
3871
3872 2009-05-26  Mark Probst  <mark.probst@gmail.com>
3873
3874         * object-internals.h, threads.c: Set the execution context on
3875         thread start here, not in corlib.
3876
3877         * appdomain.c: Bump corlib version.
3878
3879 2009-05-27  Martin Baulig  <martin@ximian.com>
3880
3881         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
3882         if `_mono_debug_using_mono_debugger' is set to make things work
3883         properly when embedding Mono.
3884
3885 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3886
3887         * class.c (mono_class_setup_fields): Don't mark simd types as having
3888         16 bytes alignment as the whole runtime doesn't support.
3889
3890 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
3891
3892         * metadata-verify.c (safe_read): Use endian safe read macros.
3893
3894 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
3895
3896         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
3897         it is read-only when using full aot.
3898
3899 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
3900
3901         * metadata-verify.c (is_valid_method_signature): Verify parts
3902         of the return type. Provide an error message in case of failure.
3903
3904 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
3905
3906         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
3907
3908 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
3909
3910         * metadata-verify.c: Include the size prefix in the bounds check.
3911
3912 2009-05-22  Miguel de Icaza  <miguel@novell.com>
3913
3914         * icall.c: Remove warnings.
3915
3916         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
3917         prevent auto-detection based on GCC defines.
3918
3919         Add PS3
3920
3921         * metadata-verify.c: Do not include signal.h
3922
3923         * generic-sharing.c, marshal.c: Add returns to avoid some warning
3924         messages.  Not sure why the g_assert_not_reached is not enough to
3925         quiet the compiler.
3926         
3927
3928         * appdomain.c: Remove code that is not used when
3929         DISABLE_SHADOW_COPY is set.
3930
3931         * image.c: use g_getenv
3932
3933 2009-05-21  Miguel de Icaza  <miguel@novell.com>
3934
3935         * reflection.c: Remove code that it not used with
3936         DISABLE_REFLECTION_EMIT is defined.
3937
3938 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3939
3940         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
3941         invoke wrappers.
3942
3943 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3944
3945         * socket-io.c
3946         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
3947         the ifdef here and instead put that on io-layer
3948
3949 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
3950
3951         * metadata-verify.c: Verify the generic param constraint table.
3952
3953 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
3954
3955         * metadata-verify.c (verify_generic_param_table): Fix
3956         thinko on the valid flags bits for generic params.
3957
3958 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
3959
3960         * metadata-verify.c: Verify the methodspec table.
3961
3962 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
3963
3964         * metadata-verify.c: Verify the generic param table.
3965
3966 2009-05-19  Mark Probst  <mark.probst@gmail.com>
3967
3968         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
3969
3970 2009-05-19  Mark Probst  <mark.probst@gmail.com>
3971
3972         * sgen-gc.c: Use generation enum more consistently and use the
3973         correct generation in mono_gc_register_for_finalization().
3974
3975 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
3976
3977         * metadata-verify.c: Verify the nested class table.
3978
3979 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
3980
3981         * metadata-verify.c: Verify the manifest resource table.
3982
3983 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3984
3985         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
3986
3987 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3988
3989         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
3990         wrappers, this is now done in the JIT.
3991         
3992         * class.c (mono_set_generic_sharing_supported): New internal function.
3993         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
3994
3995 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
3996
3997         * metadata-verify.c: Verify the exported type table.
3998
3999 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
4000
4001         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
4002
4003 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
4004
4005         * metadata-verify.c: Verify the file table.
4006
4007 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
4008
4009         * metadata-verify.c (verify_assembly_table): Fix an error message.
4010
4011         * metadata-verify.c: Verify the assemblyref table.
4012
4013 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
4014
4015         * metadata-verify.c (verify_assembly_table): Fix the valid
4016         bits mask for flags.
4017
4018 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4019
4020         * debug-helpers.c (mono_method_full_name): Print generic parameters of
4021         generic methods as well.
4022
4023 2009-05-15  Geoff Norton  <gnorton@novell.com>
4024
4025         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
4026         use-case and is significantly more performant than the wapi layer.
4027
4028 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
4029
4030         * metadata-verify.c: Verify the assembly table.
4031
4032 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
4033
4034         * metadata-verify.c: Fix rows limit check.
4035
4036 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
4037
4038         * metadata-verify.c: Verify the fieldrva table.
4039
4040 2009-05-13  Mark Probst  <mark.probst@gmail.com>
4041
4042         * sgen.c: Speed up weak links and finalizers by grouping them by
4043         generation.
4044
4045 2009-05-13  Mark Probst  <mark.probst@gmail.com>
4046
4047         * marshal.c (delegate_hash_table_add): When overwriting an entry,
4048         free the old GCHandle (only applies to SGen).
4049
4050 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4051
4052         * loader.c (mono_get_method_from_token): Avoid the expensive call to
4053         mono_metadata_load_generic_params () for non-generic methods.
4054
4055 2009-05-12  Mark Probst  <mark.probst@gmail.com>
4056
4057         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
4058         New function for returning a monitor's weak link if it has one.
4059
4060         * sgen-gc.c: Remove an object's monitor's weak link (if it has
4061         one) when clearing a domain.  These can still be around because
4062         the object might not have been collected.
4063
4064 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4065
4066         * gc.c: Fix a warning.
4067
4068 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
4069
4070         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
4071         prevous wait that resulted in a deadlock on Windows when initializing
4072         the runtime form DllMain. Also results in improved startup time.
4073         (finalizer_thread): Get rid of thread_started_event.
4074         * threads.c, threads-types.h (mono_thread_create_internal): Return the
4075         resulting MonoThread.
4076
4077         Contributed under MIT/X11 license.
4078
4079 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
4080
4081         * metadata-verify.c: Verify the implmap table.
4082         Don't require that #US and #Strings be present.
4083
4084 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
4085
4086         * security-core-clr.c: Delegate checks are done at creation time,
4087         not a invocation time. Fix exception for Telerik Silverlight demo
4088
4089 2009-05-11  Mark Probst  <mark.probst@gmail.com>
4090
4091         * sgen-gc.c (need_remove_object_for_domain): Remove the special
4092         case for the Thread class.
4093
4094         * threads.c: Do clean-up of abort exception/state in
4095         thread_cleanup() instead of Thread.free_internal().  Also clean up
4096         current_appcontext.  The reason we have to do that is because
4097         those references might point into another domain and if that
4098         domain is unloaded before the thread is finalized, they point to
4099         invalid data.
4100
4101 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
4102
4103         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
4104         stub signatures.
4105         
4106         Contributed unter MIT/X11 license.
4107
4108 2009-05-09  Miguel de Icaza  <miguel@novell.com>
4109
4110         * verify.c, metadata-verifier.c: Add support for disabling the
4111         verifier in some builds.
4112
4113         [ Sorry, my previous commit accidentally commited some work in
4114         progress ]
4115
4116 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * class.c (mono_class_setup_fields): Set class->field.first for
4119         generic instances.
4120
4121 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
4122
4123         * metadata-verify.c: Verify the typespec table.
4124
4125 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
4126
4127         * metadata-verify.c: Verify the module table.
4128
4129 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
4130
4131         * metadata-verify.c: Verify the methodimpl table.
4132
4133 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
4134
4135         * metadata-verify.c: Verify the property table.
4136
4137 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4138
4139         * debug-helpers.c (mono_method_desc_match): Add support for generic
4140         glob patterns.
4141
4142 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
4143
4144         * metadata-verify.c: Verify the propertymap table.
4145
4146 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
4147
4148         * metadata-verify.c: Verify the event table.
4149
4150         * metadata-verify.c (search_sorted_table): Fix offset
4151         calculation.
4152
4153 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
4156
4157 2009-05-01  Mark Probst  <mark.probst@gmail.com>
4158
4159         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
4160         because mono_delegate_free_ftnptr() needs it.
4161
4162 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
4163
4164         * metadata-verify.c: Verify the eventmap table.
4165
4166 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
4167
4168         * metadata-verify.c: Verify the standalonesig table.
4169
4170 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
4171
4172         * metadata-verify.c: Verify the field layout table.
4173
4174 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
4175
4176         * class.c (mono_type_get_name_recurse): Don't crash
4177         for ownerless generic params.
4178
4179         * debug-helpers.c (mono_type_get_desc): Correct the format
4180         for ownerless generic params.
4181
4182 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
4183
4184         * metadata-verify.c: Verify the class layout table.
4185
4186 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
4187
4188         * metadata-verify.c: Verify the decl security table.
4189
4190 2009-04-30  Mark Probst  <mark.probst@gmail.com>
4191
4192         * domain.c (mono_domain_set_internal_with_options): Don't do
4193         anything if the old domain is the same as the old one.  Fixes
4194         #499326.
4195
4196 2009-04-30  Mark Probst  <mark.probst@gmail.com>
4197
4198         * appdomain.c: Deregister the reflection_info roots when unloading
4199         a domain.
4200
4201         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
4202         memory allocated by a domain and frees its disappearing links.
4203
4204         * boehm-gc.c, null-gc.c: Empty implementation of
4205         mono_gc_clear_domain().
4206
4207 2009-04-30  Mark Probst  <mark.probst@gmail.com>
4208
4209         * appdomain.c (clear_cached_vtable): Free the static fields memory
4210         block.
4211
4212 2009-04-30  Mark Probst  <mark.probst@gmail.com>
4213
4214         * gc.c: Set the correct domain when invoking finalizers.
4215
4216         * appdomain.c: Set the correct domain when creating threads.
4217
4218 2009-04-30  Mark Probst  <mark.probst@gmail.com>
4219
4220         * sgen-gc.c: Fix skip size for vectors.
4221
4222 2009-05-03  Martin Baulig  <martin@ximian.com>
4223
4224         * mono-debug-debugger.c
4225         (mono_debugger_check_breakpoints): Check class init handlers even
4226         if we don't have any method load handers.
4227
4228 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
4231         returning refonly assemblies if refonly is FALSE. Fixes #499013.
4232
4233 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
4234
4235         * metadata-verify.c: Verify the field marshal table.
4236
4237 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
4238
4239         * metadata-verify.c: Verify the custom attribute table.
4240
4241 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
4242
4243         * metadata-verify.c: Verify the constant table.
4244
4245 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
4246
4247         * metadata-verify.c: Verify the memberef table.
4248
4249 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
4250
4251         * metadata-verify.c (get_coded_index_token): Remove
4252         dead argument.
4253
4254 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
4255
4256         * metadata-verify.c: Verify the interfaceimpl table.
4257
4258 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
4259
4260         * verify.c: Improve error message.
4261
4262         * debug-helpers.c (mono_type_get_desc): Harden the code that
4263         deals with VAR and MVAR.
4264
4265 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4266
4267         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
4268         part of #498692.
4269
4270 2009-04-23 Tom Hindle <tom_hindle@sil.org>
4271
4272         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
4273         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
4274
4275 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
4276
4277         * security-core-clr.c: Avoid redundant checks for platform code, 
4278         e.g. check for method and for class (very common) and check
4279         for class and outer class (less common)...
4280
4281 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4282
4283         * reflection.c: Avoid returning random cattrs for synthetic methods.
4284         Fixes #498545.
4285
4286 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4287
4288         * assembly.c: assemblies in the GAC should never be shadow-copied.
4289
4290 2009-04-26  Mark Probst  <mark.probst@gmail.com>
4291
4292         * domain.c, domain-internals.h: Disable
4293         track_resurrection_{objects,handles}_hash in MonoDomain if using
4294         SGen.
4295
4296 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
4297
4298         * metadata-verify.c: Verify the param table.
4299
4300 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
4301
4302         * metadata-verify.c (verify_typedef_table): Range check FieldList and
4303         MethodList.
4304
4305         * metadata-verify.c (verify_method_table): Proper check the ParamList
4306         field.
4307
4308 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
4309
4310         * metadata-verify.c (verify_method_table): Check for runtime
4311         implemented functions such as delegate .ctors. Remove spurious
4312         printf.
4313         
4314 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
4315
4316         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
4317
4318 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
4319
4320         Don't allocate MonoGenericInfo for ownerless generic params.
4321         * class-internals.h (MonoGenericParam::info): Move field to ...
4322         (MonoGenericParamFull): ... this.  New struct.
4323         (MonoGenericContainer::type_params): Change type to
4324         MonoGenericParamFull.
4325         (MonoGenericParam, MonoGenericContainer): Update accessors.
4326         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
4327         'info' field for ownerless generic param.
4328         (mono_metadata_load_generic_params): Update to changes.
4329         * reflection.c (mono_reflection_create_generic_class): Likewise.
4330         (reflection_methodbuilder_to_mono_method): Likewise.
4331         (mono_reflection_initialize_generic_parameter): Likewise.
4332
4333 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
4334
4335         Don't use MonoGenericParamInfo for ownerless generic params.
4336         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
4337         use ParamInfo class at all.
4338         (mono_class_from_generic_parameter): Use them.
4339         (make_generic_param_class): Fix a couple of instances where 'pinfo
4340         == NULL' wasn't handle.
4341
4342 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
4343
4344         * class.c (make_generic_param_class): Carve out of ...
4345         (mono_class_from_generic_parameter): ... here.
4346
4347 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
4348
4349         Simplify mono_class_from_generic_parameter
4350         * class-internals.h (MonoGenericParamInfo::token): New field.
4351         * metadata.c (mono_metadata_load_generic_params): Initialize it
4352         from metadata.
4353         * class.c (mono_class_from_generic_parameter): Use it instead of
4354         searching through metadata.
4355
4356 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
4357
4358         * metadata-verify.c: Add verification of the method table.
4359
4360 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
4361
4362         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
4363         Delegate::Invoke optimization.
4364
4365 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
4366
4367         * appdomain.c (mono_domain_create_appdomain_internal): Free the
4368         string returned by get_shadow_assembly_location_base.
4369
4370         * appdomain.c (get_shadow_assembly_location_base): Add a comment
4371         about caller's ownership.
4372
4373 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
4374
4375         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
4376         reflection memory on domain unload.
4377
4378         * domain.c (mono_domain_free): Don't free refobject_hash, let the
4379         reflection cleanup code do it.
4380
4381         * domain-internals.h: Add mono_reflection_cleanup_domain.
4382
4383         This fixes a memory leak for managed mirrors of reflection objects
4384         on domain unload. 
4385
4386 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
4387
4388         * metadata-verify.c: Implement more verification of the field table.
4389
4390 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
4391
4392         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
4393         doesn't try to parse the input assembly, which can be broken.
4394
4395 2009-04-23  Mark Probst  <mark.probst@gmail.com>
4396
4397         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
4398         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
4399         by using the lowest bit in the link to store whether the link is
4400         tracked.  Move the track_resurrection hashes into boehm-gc.c.
4401
4402 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4403
4404         * Makefile.am: Split the console support in platform specific code
4405         and put together a framework for making this easy in the future so
4406         that we can start splitting code instead of having a mess of PLATFORM_WIN32
4407
4408 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
4409
4410         * pedump.c: Fix a warning.
4411
4412 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
4413
4414         * verify.c (mono_delegate_type_equal): Compare valuetypes using
4415         mono_class_from_mono_type to avoid bad interactions with the dual representation
4416         of the generic type definition.
4417
4418 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
4419
4420         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
4421         get the MonoClass for the call context type as it might be a generic
4422         instance.
4423
4424         Fixes #491483.
4425
4426 2009-04-21  Mark Probst  <mark.probst@gmail.com>
4427
4428         * object-internals.h: The Thread object has no execution_context
4429         member anymore.
4430
4431         * threads.c, threadpool.c, threads-types.h: Accessor functions for
4432         the execution context.
4433
4434         * appdomain.c: Bump corlib version.
4435
4436 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4437
4438         * verify.c (do_newobj): Improve error message.
4439
4440 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4441
4442         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
4443         is nested in the filter block.
4444
4445         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
4446         block is not fully nested.
4447
4448         Fixes #495656.
4449
4450 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4451
4452         * verify.c (verify_type_compatibility_full): Compare MonoClass and
4453         not MonoType to check for equality of valuetypes as the generic type
4454         definition allows for two different encodings: the generic type definition
4455         class or a generic instance over the GTD arguments.
4456
4457         Fixes #496175.
4458
4459 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4460
4461         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
4462
4463         * verify.c (do_initobj): Improve error message.
4464
4465 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4466
4467         * metadata-verify.c: Enable pe verification as the issue with #496453
4468         is that the authenticode data directory have a different unspecified
4469         format. Ignore it for now.
4470
4471         * pedump.c: Run the metadata verifier together with the IL verifier.
4472
4473         Fixes ##496453.
4474
4475 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
4476
4477         * metadata-verify.c: Temporarily disable pe verification due to #496453.
4478
4479 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
4480
4481         * class.c (can_access_type): Check visibility against
4482         the element type for pointers and arrays.
4483
4484         Fixes #496150.
4485
4486 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
4487
4488         * metadata-verify.c: Fix cli and table verification to use information
4489         from the MonoImage. A lot of duplicated code got killed.
4490
4491 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
4492
4493
4494         This patch starts to integrate the metadata verifier with the runtime code.
4495
4496         This patch causes major regression in functionality for the metadata verifier
4497         as cli and table verification are disabled since they require to be ported to
4498         use MonoImage information.
4499
4500         * image.c (do_mono_image_load): Split the code in this function
4501         into mono_image_load_pe_data and mono_image_load_cli_data.
4502         Add     care_about_pecoff parameter to not load pecoff data.
4503         Call into the metadata verifier for pecoff and cli verification.
4504
4505         * image.c (mono_image_open_raw): New function that doesn't perform
4506         any parsing of the image contents.
4507         
4508         The reason for the 3 new functions is to give pedump better control
4509         into the interaction with the verifier.
4510
4511         * metadata-internals.h: Add new functions from image.c as part of the
4512         internal mono API.
4513
4514         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
4515         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
4516         to make those functions work together with the runtime.
4517
4518         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
4519         true if the image needs to be verified.
4520
4521         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
4522
4523         * pedump.c: Use new metadata verifier API.
4524
4525 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * object.c (mono_install_vtable_trampoline): Make this receive a
4528         trampoline creation function instead of trampoline, allowing the JIT
4529         to use a different trampoline for each vtable.
4530
4531 2009-04-18  Mark Probst  <mark.probst@gmail.com>
4532
4533         * object.c (mono_raise_exception): Don't reset the thread abort
4534         exception state here.
4535
4536 2009-04-18  Mark Probst  <mark.probst@gmail.com>
4537
4538         * icall-def.h: New icall for getting the thread abort exception
4539         state for a thread.
4540
4541         * object.c, thread.c, object-internals.h: A thread's abort
4542         exception state is now a GC handle.  To get the object it stands
4543         for, we must move it into the current app domain, if it's
4544         different than the one where it originated from.
4545
4546         * appdomain.c: Bump corlib version.
4547
4548         * domain.c, domain-internals.h: New function for setting the
4549         domain and migrate the thread abort exception or not.
4550
4551 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
4552
4553         * metadata-verify.c: Add initial verification of the
4554         field table.
4555
4556 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
4557
4558         * metadata-verify.c: Add a macro to conditionally enable
4559         dumping of verification information. Add  make_coded_token
4560         and search_sorted_table to enable search sorted tables
4561         by a given coded token.
4562
4563 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
4564
4565         * metadata-verify.c: Add array mapping from table index
4566         to description offset. Add get_col_offset and get_col_size
4567         functions.
4568
4569 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
4570
4571         * metadata-verify.c: Add remaining table descriptions offsets.
4572         Add remaining coded index descriptions.
4573
4574 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
4575
4576         * metadata-verify.c: Fixed constant table description.
4577         Fixed calculation of HasCustomAttribute coded index size.
4578         Fixed calculation of size for many table indexes. 
4579
4580 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
4581
4582         * pedump.c (dump_metadata): Dump table offset instead
4583         of useless pointer in memory.
4584
4585 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
4586
4587         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
4588
4589 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
4590
4591         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
4592         a missing of for interface types.
4593
4594 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
4595
4596         * metadata-verify.c (verify_pe_optional_header): Add comment of why
4597         the code is commented.
4598
4599         * metadata-verify.c (verify_resources_table): Remove spurious printf
4600         and don't fail if there are unmanaged resources. Gmcs generates a useless
4601         one     for all assemblies - I bet it's some MS compatibility junk.
4602
4603 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
4604
4605         * metadata-verify.c (verify_typedef_table): Verify the extends field.
4606
4607         * metadata-verify.c (mono_image_verify): Add a is_corlib.
4608
4609         * verify-internals.h: Same.
4610
4611         * pedump.c: Fix for mono_image_verify new signature.
4612
4613 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
4614
4615         * metadata-verify.c (verify_typedef_table): Verify for some invalid
4616         flags combinations.
4617
4618 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         * metadata-verify.c (verify_module_table): Ignore the generation field.
4621
4622 2009-04-15  Martin Baulig  <martin@ximian.com>
4623
4624         * debug-mono-symfile.c
4625         (mono_debug_symfile_lookup_location): Don't print a warning for
4626         unknown extended opcodes if they're within 0x40 and 0x7f.
4627
4628 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
4629
4630         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
4631         invoke signatures returning an enum. Fixes #494847.
4632
4633 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
4634
4635         * metadata-verify.c: Initial code to verify the typedef table.
4636
4637 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
4638
4639         * verify.c (mono_method_verify): Don't fail if an unconditional branch
4640         with non empty stack happens before the beginning of a try block.
4641
4642         Fixes #494812.
4643
4644 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
4645
4646         * metadata-verify.c: Verify typename and typenamespace fields of
4647         the typeref table.
4648
4649 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
4650
4651         * metadata-verify.c: Initial code to verify the typeref table.
4652
4653 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
4654
4655         * verify.c (verify_delegate_compatibility): Fix error message.
4656
4657 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
4658
4659         * security-core-clr.c: Fix typo
4660
4661 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4662
4663         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
4664         a MonoGHashTable to keep its values alive.
4665         (emit_marshal_boolean): Fix a warning.
4666
4667 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
4668
4669         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
4670         not have any interface configured for IPv4/IPv6.
4671
4672 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
4673
4674         * assembly.c: fix typo in error message.
4675
4676 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4677
4678         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
4679         allocating the location holding the this argument to prevent
4680         'too many root sets' errors.
4681
4682         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
4683         to mark fields as special static.
4684         (mono_field_static_get_value): Handle special static fields.
4685         (mono_field_static_set_value): Ditto.
4686
4687         * class-internals.h (struct _MonoClassField): Document this.
4688
4689 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
4690
4691         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
4692           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
4693           case.  This will handle when managed code returns null to native code.
4694
4695         Code is contributed under MIT/X11 license.
4696
4697 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
4698
4699         * object.c (build_imt_slots): Changing a free to a g_free to match
4700           the g_malloc0 in add_imt_builder_entry that allocated this memory.
4701
4702         Code is contributed under MIT/X11 license.
4703
4704 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
4705
4706         * marshal.c (emit_marshal_boolean): Adding code to ensure that
4707           the correct TRUE value is passed through the marshaling layer.
4708
4709         Code is contributed under MIT/X11 license.
4710
4711 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4712
4713         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
4714         correctly. Fixes #492330.
4715         
4716         * marshal.c: Fix the embedding of object pointers into JITted code in
4717         the native-to-managed wrappers by allocating some GC tracked memory, and
4718         embedding the address of that.
4719
4720 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
4721
4722         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
4723         pointers into the vtable.
4724
4725 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
4726
4727         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
4728
4729         * verify.c (verify_ldftn_delegate): Improve error message.
4730
4731 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
4732
4733         * reflection.c (my_mono_class_from_mono_type): Remove.
4734
4735 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
4736
4737         Prepare to reduce memory usage of owner-less generic parameters (1/n)
4738         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
4739         and constraints fields into ...
4740         (MonoGenericParamInfo): ... this.
4741         (mono_generic_param_info, mono_generic_container_get_param_info):
4742         New accessors.
4743         * class.c, debug-helpers.c, icall.c: Update to changes.
4744         * metadata.c, reflection.c, verify.c: Likewise.
4745
4746 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
4749
4750         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
4751         
4752         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
4753         booleans with sbytes.
4754
4755 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
4756
4757         * class.c (can_access_instantiation): Verify accesibility of element types
4758         for arrays and pointers.
4759
4760         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
4761
4762         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
4763
4764         Fixes #493068.
4765
4766 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
4767
4768         * verify.c (do_invoke_method): Improve error messages.
4769
4770 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
4771
4772         * verify.c:  Fixing the MSVC build.
4773
4774         Code is contributed under MIT/X11 license.
4775
4776 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
4777
4778         * security-core-clr.c: Simplify get_reflection_caller not to call
4779         mono_method_get_last_managed (another stack walk) and adjust the
4780         callers to handle a (should not happen) NULL return value.
4781
4782 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4783
4784         Add accessors to some MonoGenericParam fields
4785         * class-internals.h (mono_generic_param_owner): New accessor.
4786         (mono_generic_param_num): Likewise.
4787         (mono_type_get_generic_param_owner): New helper.
4788         (mono_type_get_generic_param_num): New helper.
4789         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
4790
4791 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4792
4793         * class-internals.h (mono_generic_container_get_param): New wrapper.
4794         * class.c, icall.c, metadata.c, verify.c: Use it.
4795
4796 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4797
4798         Fix gtest-252.cs
4799         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
4800         the standard case/loop.  In particular, don't complain about
4801         references to generic type definitions.
4802
4803 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * debug-helpers.c (dis_one): Decode string arguments.
4806
4807 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
4808
4809         * pedump.c (dump_verify_info): Dump type name correctly.
4810
4811 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
4812
4813         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
4814         are larger than code size.
4815
4816         This can happen in valid code if the try/catch block is not followed by any instruction
4817         and do a backward branch on the leave instruction.
4818
4819         Fixes #492494.
4820
4821 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
4822
4823         * security-core-clr.c: Fix typo while comparing second method names
4824         in can_avoid_corlib_reflection_delegate_optimization
4825
4826 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
4827
4828         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
4829
4830         Fixes #487738.
4831
4832 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
4833
4834         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
4835         a MVAR using a class context.
4836
4837         Fixes #490335.
4838
4839 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4840
4841         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
4842
4843         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
4844
4845         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
4846         functions supplied by the JIT for the SGEN GC.
4847
4848         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
4849         
4850 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
4851
4852         monitor.c (mono_monitor_try_enter_internal):
4853         Added calls to profile monitor contentions.
4854         Also duplicated a small piece of code (the "get the monitor" logic)
4855         from the fast path to the slow path, and changed the relevant goto
4856         statements, so that monitor acquisition events can be emitted from the
4857         slow path (this is by Paolo Molaro).
4858
4859 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
4860
4861         * profiler.c, profiler.h, profiler-private.h:
4862         Added support for profiling monitor contentions.
4863
4864 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
4865
4866         * metadata-verify.c: Verify the modules table.
4867
4868 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
4869
4870         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
4871         using the context of the method been verifier and not of the method been called.
4872
4873         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
4874         safely inflate generic types. 
4875
4876 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
4877
4878         * security-core-clr.c: Change the strategy for checking the 
4879         "reflection using delegates optimization" to avoid unneeded 
4880         attributes in multiple class libraries.
4881
4882 2009-04-02  Mark Probst  <mark.probst@gmail.com>
4883
4884         * sgen-gc.c: Remove object element in the disappearing link struct
4885         by storing the object pointer in the link.
4886
4887 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
4888
4889         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
4890
4891 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
4892
4893         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
4894
4895         * verify.c (mono_method_verify): Do proper bounds checking of exception
4896         clause ranges.
4897
4898 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
4899
4900         * loader.c (mono_field_from_token): Don't crash if the field parent could
4901         not be decoded.
4902
4903 2009-03-31  Mark Probst  <mark.probst@gmail.com>
4904
4905         * sgen-gc.c: Execute critical finalizers after ordinary
4906         finalizers.
4907
4908         * class-internals.h, domain.c: Add CriticalFinalizerObject to
4909         mono_defaults.
4910
4911 2009-03-31 Jb Evain <jbevain@novell.com>
4912
4913         * verify.c (do_ldstr): don't check if a string is in the user strings
4914         heap if the current image is dynamic.
4915
4916 2009-03-31  Mark Probst  <mark.probst@gmail.com>
4917
4918         * sgen-gc.c: Wait until the last finalizer has executed when
4919         returning from WaitForPendingFinalizers.
4920
4921 2009-03-31  Martin Baulig  <martin@ximian.com>
4922
4923         * mono-debug-debugger.h (MonoDebuggerEvent): Add
4924         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
4925         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
4926         (mono_debugger_event_create_appdomain): New function.
4927         (mono_debugger_event_unload_appdomain): New function.
4928
4929         * appdomain.c (mono_domain_create_appdomain_internal): Call
4930         mono_debugger_event_create_appdomain().
4931
4932 2009-03-31  Martin Baulig  <martin@ximian.com>
4933
4934         * mono-debug-debugger.c
4935         (mono_debugger_register_class_init_callback): Also register the
4936         class init callback if the class is already initialized to make
4937         things work with shadow copied assemblies.
4938
4939 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
4940
4941         * security-core-clr.c
4942         (mono_security_core_clr_ensure_reflection_access_field): Let 
4943         critical code access the field (just like we do for methods). Use
4944         check_field_access helper.
4945         (mono_security_core_clr_ensure_reflection_access_method): Use 
4946         check_field_access helper.
4947
4948 2009-03-31  Mark Probst  <mark.probst@gmail.com>
4949
4950         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
4951         call the run-finalize function directly.
4952
4953         * gc.c, gc-internal.h: Make run_finalize() non-static.
4954
4955 2009-03-31  Mark Probst  <mark.probst@gmail.com>
4956
4957         * sgen-gc.c: Use a separate struct for disappearing links.
4958
4959 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
4960
4961         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
4962         * MaxIOVectorLength enabled, just ignore them.
4963         Fixes bug #349688.
4964
4965 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
4966
4967         * metadata-verify.c: Fix eglib build.
4968
4969 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
4970
4971         * threads-types.h: Fix the win32 build.
4972
4973 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
4974
4975         * class.c: move coreclr inheritance/override checks to 
4976         security-core.clr.c
4977         * security-core.clr.c|h: add code from class.c with additional
4978         documentation. Fix override check when the method is not critical.
4979
4980 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
4981
4982         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
4983         (match_class): Ditto.
4984
4985 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
4986
4987         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
4988
4989         * metadata-verify.c: Implement table layout row size calculation. Verify
4990         the total size of the tables.
4991
4992 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
4993
4994         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
4995
4996 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4997
4998         * appdomain.c:
4999         * console-io.[ch]: added new mono_console_init() to make sure that
5000         file descriptors 0, 1 and 2 are opened.
5001         Bug #489019 fixed.
5002
5003 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
5004
5005         * appdomain.h: Export a new callback type and a new function to
5006         set this callback. This allow a mono host to provide it's own
5007         definition for "platform code".
5008         * metadata-internals.h: Add a core_clr_platform_code flag on 
5009         _MonoImage to (cache and) know if it is representing platform 
5010         code.
5011         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
5012         on platform code images.
5013         * security-core-clr.c|h 
5014         (mono_security_set_core_clr_platform_callback): Allow the host
5015         to provide it's own platform check definition.
5016         (mono_security_core_clr_determine_platform_image): Detect if an 
5017         image is platform code (using the specified callback).
5018         (mono_security_core_clr_is_platform_image): Return cached value 
5019         for platform code.
5020
5021 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5022
5023         * threads.c (mono_create_thread): New helper function to wrap CreateThread
5024         which has different parameter types for the 'tid' argument in windows and
5025         the io-layer.
5026
5027         * appdomain.c attach.c threads.c: Use the new helper.
5028
5029 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
5030
5031         * metadata-verify.c: Verify valid table bits.
5032
5033 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
5034
5035         * metadata-verify.c (verify_metadata_header): Store size in the size field.
5036
5037         * metadata-verify.c: Add initial table schema verification.
5038
5039 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5040
5041         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
5042         obtain the refclass argument needed by mono_param_get_objects (). Fixes
5043         #488383.
5044
5045         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
5046
5047         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
5048
5049 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
5050
5051         * security-core-clr.c: Add/update documentation
5052
5053 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5054
5055         * marshal.c (emit_marshal_object): Generate code to throw an exception
5056         instead of throwing it. Fixes #488670.
5057
5058 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
5059
5060         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
5061         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
5062         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
5063         and add a call to mono_security_core_clr_ensure_delegate_creation
5064         to do the extra checks required by CoreCLR.
5065         * security-core-clr.c|h: Add function to check delegate creation,
5066         both in the binding and accessibility, under CoreCLR.
5067
5068 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
5069
5070         * reflection.c (mono_reflection_create_dynamic_method): when 
5071         coreclr is enabled make sure that every resolved object are
5072         checked (e.g. field and method access).
5073         * security-core-clr.c|h: Add function to check objects resolved
5074         when a dynamic method is created.
5075
5076 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
5077
5078         * metadata-verify.c: Cache directory rva translations.
5079
5080         * metadata-verify.c: Add cli-header and streams verification.
5081
5082 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
5083
5084         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
5085         the wrong offset (8 instead of 6).
5086
5087 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5088
5089         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
5090         methods, return the native function address itself. Fixes
5091         #487758.
5092
5093 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
5094
5095         * console-io.c: some of the values for control characters might not be
5096         present.
5097
5098 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
5099
5100         * exception.c|h: Add helpers to create [Field|Method]AccessException
5101         * icall.c: Add required coreclr check calls for field reflection.
5102         Move the existing (method) check logic into security-core-clr.c
5103         * security-core-clr.c: Add functions to check if the access of a
5104         field or method is allowed when reflecting under coreclr. This is
5105         mostly done using a stack walk to find the "real" caller: i.e. the
5106         code that is calling the reflection
5107
5108 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5109
5110         * gc-internal.h: Change location of gc_wrapper.h
5111
5112 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
5113
5114         * class.c: Simplification to coreclr checks for overrides that
5115         makes it easier to set breakpoints.
5116
5117 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
5118
5119         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
5120         mono_security_core_clr_method_level): Avoid potential 
5121         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
5122         user/application code) and make it easier to set breakpoints
5123
5124 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
5125
5126         * metadata-verify.c: Reject cli header tables that mono don't handle.
5127
5128 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
5129
5130         * pedump.c: Fix CLI header dumping.
5131
5132 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
5133
5134         * metadata-verify.c: More CLI header verification.
5135
5136 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5137
5138         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
5139
5140 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
5141
5142         * metadata-verify.c: Initial verification of the CLI header.
5143
5144 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
5145
5146         * metadata-verify.c (verify_resources_table): Fix verification of zero
5147         sized resource section and id entries count.
5148
5149 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5150
5151         * icall.c: Handle user types in many Type icalls. Fixes #486303.
5152
5153 2009-03-17  Jb Evain  <jbevain@novell.com>
5154
5155         * profiler.c: call mono_gc_base_init from mono_profiler_load.
5156
5157 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5158
5159         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
5160         (mono_gc_make_descr_for_array): Ditto.
5161
5162 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5163
5164         * verify.c (mono_verifier_is_class_full_trust): Add support for
5165         CoreCLR security mode where trusted assemblies are defined as
5166         "platform code".
5167
5168 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5169
5170         * metadata-verify.c: Add minimal PECOFF resource verification.
5171
5172 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5173
5174         * metadata-verify.c: Be less restrictive with some coff fields.
5175
5176 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5177
5178         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
5179         params as boxed values on stack. Fixes #485706.
5180
5181 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
5182
5183         * console-io.c: the termios values may vary in different flavors of unix.
5184
5185 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
5186
5187         * console-io.[ch]: return the entire set of control characters when
5188         initializing the terminal.
5189         * appdomain.c: bump corlib version.
5190
5191 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
5192
5193         * mono-perfcounters.c: added support for in-process custom
5194         performance counters.
5195
5196 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
5197
5198         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
5199
5200 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
5201
5202         * metadata-verify.c: Verify the data pointed by the import table. 
5203
5204 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
5205
5206         * metadata-verify.c (load_data_directories): Store data
5207         directory contents.
5208
5209         * metadata-verify.c: Verify the import table. 
5210
5211 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
5212
5213         * metadata-verify.c: Verify data directories.
5214
5215 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
5216
5217         * metadata-verify.c: Check section header flags.
5218
5219 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
5220
5221         * appdomain.c: if the assembly name is a shadow-copied file, return
5222         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
5223         in mono_make_shadow_copy.
5224         * icall.c: if the assembly name is a shadow-copied file, replace it
5225         with the original assembly path.
5226
5227         Bug #484244 fixed. NUnit tests for corlib can be run without
5228         --noshadow now.
5229
5230 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5231
5232         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
5233         entries when the table is reallocated.
5234
5235         * icall.c: Allocate the memory used by the mono_ptr_array macros using
5236         mono_gc_alloc_fixed () since it contains GC refs.
5237
5238 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5239
5240         * reflection.c (ensure_complete_type): New helper function to call
5241         type resolve handlers for unfinished dynamic types.
5242         (resolve_object): Call it for MonoClassFields. Fixes #483852.
5243
5244 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
5245
5246         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
5247         #483247.
5248
5249 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
5250
5251         * appdomain.c (get_shadow_assembly_location): Fix memleak.
5252
5253 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5254
5255         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
5256         between GCHandles of type WeakTrackResurrection and the objects they
5257         point to.
5258
5259         * gc.c: Partly implement the sematics of GCHandles of type 
5260         WeakTrackResurrection: these handles should only be cleared after the
5261         finalizer of the object they are pointing to has ran.
5262
5263 2009-03-06  Mark Probst  <mark.probst@gmail.com>
5264
5265         * icall.c: Partially revert r126631 because using the jump
5266         trampolines for generic shared methods makes it superfluous.
5267
5268 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5269
5270         * threads.c (handle_store): Create the 'threads' hash table with the proper
5271         MONO_HASH_VALUE_GC type.
5272
5273 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5274
5275         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
5276         FIRST_GC_TRACKED.
5277
5278         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
5279         and LAST_GC_TRACKED as a GC root.
5280
5281         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
5282
5283         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
5284         the static data even if it consists of 1 reference.
5285
5286         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
5287         if there is a GC descriptor.
5288
5289         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
5290         instead of through the GC since they contain no object references.
5291
5292 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5293
5294         * generic-sharing.c (instantiate_other_info): Always return a jump
5295         trampoline for method code.
5296
5297 2009-03-05  Marek Habersack  <mhabersack@novell.com>
5298
5299         * culture-info-tables.h: generated to include the en-tt culture.
5300
5301 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
5302
5303         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
5304         capture the thread context.
5305
5306         * object.c (mono_async_result_new): Cache the invoke wrappers to
5307         ExecutionContext::Capture.
5308
5309 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
5310
5311         * marshal.h: Add a prototype for what mono_compile_method returns
5312         for invoke wrappers.
5313
5314         * gc.c: Use the new prototype declaration.
5315
5316 2009-03-04  Geoff Norton  <gnorton@novell.com>
5317
5318         * boehm-gc.c: Add some MONO_LOG tracing for the GC
5319         * gc-internal.h:
5320         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
5321
5322 2009-03-04  Martin Baulig  <martin@ximian.com>
5323
5324         * mono-debug.h
5325         (mono_debugger_runtime_invoke): Removed.
5326
5327         * mono-debug-debugger.c
5328         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
5329
5330 2009-03-02  Martin Baulig  <martin@ximian.com>
5331
5332         * mono-debug.h
5333         (mono_debugger_unhandled_exception): Removed.
5334         (mono_debugger_handle_exception): Removed.
5335         (mono_debugger_throw_exception): Removed.
5336
5337         * mono-debug.c
5338         (mono_debug_debugger_version): Bump to 5.
5339
5340         * mono-debug-debugger.c: Moved the exception handling code to
5341         ../mini/debug-mini.c
5342
5343 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5344
5345         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
5346         finalize_objects_hash.
5347
5348         * gc.c: Use the separate lock to access the finalize_objects_hash field.
5349         
5350         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
5351         field.
5352
5353         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
5354         cache.
5355
5356         * image.c (mono_image_close): Free it.
5357         
5358         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
5359         allowing a creation of a wrapper which invokes its method using a CALLVIRT
5360         on the this argument.
5361
5362         * gc.c (run_finalize): Optimize the calling of the finalizers.
5363
5364 2009-03-03  Martin Baulig  <martin@ximian.com>
5365
5366         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
5367         of the `MonoGenericInst' changes.
5368
5369 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
5370
5371         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
5372         mono_array_class_get_cached to reduce locking contention. Extract
5373         a domain var.
5374
5375         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
5376         intermediary managed arrays. Use caching version of mono_array_new
5377         to allocate the result array.
5378
5379         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
5380
5381         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
5382
5383         * locales.c (create_names_array_idx):  Use mono_array_new_cached
5384         to reduce locking contention.
5385
5386 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5387                 
5388         * object.c (mono_method_add_generic_virtual_invocation): Put back the
5389         thunk builder code for the non-interface case.
5390
5391 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5392
5393         * object.c (get_generic_virtual_entries): New helper function to collect
5394         the virtual generic method instances which need to be added to an IMT
5395         thunk.
5396         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
5397         Instead of creating a new IMT thunk, reset the vtable slot to the
5398         trampoline, the thunk will be created the next time the trampoline is called.
5399         (build_imt_slots): Add support for virtual generic methods in interfaces by
5400         adding to the IMT thunk all the methods registered using 
5401         mono_method_add_generic_virtual_invocation ().
5402
5403         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
5404         (struct _MonoIMTCheckItem): Ditto.
5405
5406         * object.c (mono_method_add_generic_virtual_invocation): Take a
5407         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
5408         the IMT thunk to include all items.
5409         
5410         * object.c (mono_class_create_runtime_vtable): Add a missing
5411         mono_loader_unlock ().
5412
5413 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
5414
5415         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5416
5417         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
5418
5419 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
5420
5421         * object-internals.h: Rename _MonoReflectionEvent to
5422         MonoReflectionMonoEvent so it reflects the right managed type.
5423         Add a MonoReflectionEvent that correctly represents System.EventInfo.
5424
5425         * icall.c:
5426         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
5427         type.
5428
5429 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
5430
5431         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
5432         intermediary managed arrays. Use caching version of mono_array_new
5433         to allocate the result array.
5434
5435 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
5436
5437         * reflection.c: Use cached version of mono_array_new alongside
5438         the mono_reflection_get_custom_attrs_by_type call path.
5439
5440 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
5441
5442         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
5443         intermediary managed arrays. Use caching version of mono_array_new
5444         to allocate the result array.
5445
5446         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
5447
5448 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
5449
5450         * icall.c: Add small implementation of a growable stack bound array.
5451
5452         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
5453
5454         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
5455         intermediary managed arrays. Use caching version of mono_array_new
5456         to allocate the result array.
5457
5458 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
5459
5460         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
5461         helps Enum::CompareTo to be implemented without reboxing all enums
5462         to their underlying type.
5463 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5464
5465         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
5466         since it acquires a global lock leading to scalability problems.
5467
5468         * profiler.c: Make the stat profiler work with multiple appdomains, this
5469         currently only works when no appdomains are unloaded.
5470
5471 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5472
5473         * appdomain.c: make the check to avoid copying when the assembly is
5474         already shadow copied actually work.
5475
5476 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5477
5478         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5479
5480         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
5481         changes to the managed side.
5482
5483 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5484
5485         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
5486         classes + a separate lock for it, as it is used frequently at runtime, not
5487         just during metadata loading/JIT compilation.
5488
5489         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
5490         for szarrays.
5491         
5492         * object-internals.h (mono_class_from_name_cached): New macro to cache
5493         the results of the lookup locally without having to declare a static
5494         variable to hold it.
5495         (mono_class_get_field_from_name_cached): Ditto.
5496         (mono_array_class_get_cached): Ditto.
5497
5498         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
5499         the new macros.
5500         
5501         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
5502         slower search in metadata.
5503
5504         * pedump.c: Fix a warning.
5505
5506 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5507
5508         * reflection.c (encode_locals): Add checks for user types.
5509         (method_encode_clauses): Ditto.
5510         (method_encode_code): Ditto.
5511         (mono_image_create_token): Ditto.
5512
5513         * object-internals.h: Change the type of more fields from MonoReflectionType*
5514         to MonoObject*.
5515
5516 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5517
5518         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
5519         the a thread does not suspend within 100ms.
5520
5521         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
5522         in addition to StopRequested as well.
5523
5524         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
5525
5526         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
5527         search the method_hash before inserting a new entry, to avoid crashes when
5528         the same method is inserted multiple times, causing the old 
5529         MonoDebugMethodInfo structure to be freed by the value dtor function.
5530
5531 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
5532
5533         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
5534         SO_EXLUSIVEADDRUSE where available.
5535
5536 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5537
5538         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
5539         runtime invoke wrappers, this time it is string ctor wrappers, which
5540         pass a dummy string as 'this' instead of their obj argument. Fixes
5541         #478473.
5542
5543 2009-02-21  Jb Evain  <jbevain@novell.com>
5544
5545         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
5546         only get create_culture once.
5547
5548 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5549
5550         * reflection.c (mono_reflection_setup_internal_class): Move the user type
5551         check before the locking.
5552         
5553         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
5554         (mono_reflection_create_runtime_class): Ditto.
5555         (mono_reflection_sighelper_get_signature_local): Ditto.
5556         (mono_reflection_sighelper_get_signature_field): Ditto.
5557
5558         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
5559         is a System.MonoType object or similar.
5560         (monotype_cast): New helper function to cast a MonoObject to a 
5561         MonoReflectionType object.
5562
5563         * object-internals.h: Change MonoReflectionType* members in structures to
5564         MonoObject* members to force the usage of the monotype_cast () function.
5565
5566         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
5567         structures/arrays. This causes us to assert instead of crashing when 
5568         instances of user defined subclasses of System.Type are encountered.
5569
5570 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
5571
5572         * cil-coff.h:
5573         * icall-def.h:
5574         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
5575         win32 resource loaded from a PE file.
5576
5577         * image.c: fix mono_image_lookup_resource.
5578
5579 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
5580
5581         * icall-def.h:
5582         * threads-types.h:
5583         * threads.c: added internal call for WaitHandle.SignalAndWait.
5584
5585 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
5586
5587         * cominterop.c : Adding cominterop_type_from_handle and 
5588           registering it as an icall.  Replacing all references
5589           to type_from_handle.
5590
5591         Code is contributed under MIT/X11 license.
5592
5593 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5594
5595         * Makefile.am: Add lock-tracer.h and lock-trace.c.
5596
5597         * appdomain.c: Call the tracer init function.
5598
5599         * domain-internals.h: Enable the tracer for the domain locks.
5600
5601         * image.c: Enable the tracer for image locks.
5602
5603         * loader.c: Enable the trace for the loader lock.
5604
5605         * lock-tracer.h:
5606         * lock-tracer.c: Initial implementation of the lock trace utility.
5607         The tracer requires a compile time define to be enabled and a env var
5608         to be enabled at runtime.
5609
5610 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5611
5612         * domain.c (mono_domain_code_foreach): Improve documentation.
5613
5614 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5615
5616         * appdomain.c:
5617         * generic-sharing.c:
5618         * object.c:
5619         * reflection.c:  Adjust locking order to the new semantics where the loader lock
5620         comes first.
5621
5622 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
5623
5624         * domain.c: Add mono_domain_code_* functions that perform locking
5625         around the domain codeman.
5626
5627         * domain-internals.h: Export those functions.
5628
5629         * object.c: Use new functions instead of acquiring the domain lock.
5630
5631 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
5632
5633         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
5634         delegate. Fixes #477396.
5635
5636 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5637
5638         * reflection.c (create_custom_attr): Get rid of alloca.
5639
5640 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
5641
5642         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
5643           Adding exception handling for all CCW calls.
5644
5645         Code is contributed under MIT/X11 license.
5646
5647 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5648
5649         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
5650
5651         * marshal.c (emit_marshal_boolean): Add null checks to the new 
5652         native->managed marshalling code. Fixes #476247.
5653
5654 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * class.c (mono_class_get_vtable_entry): Move the addition of
5657         static rgctx invoke wrappers for vtable methods here, this simplifies
5658         a lot of code and causes fewer rgctx wrappers to be created.
5659
5660         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
5661         name of the statistics to begin with an uppercase.
5662
5663 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
5664
5665         * reflection.c: Revert previous change as it breaks the build.
5666         
5667 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
5668
5669         * verify.c: Properly handle SZARRAY element type.
5670
5671         Fixes #474271.
5672
5673 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
5674
5675         * reflection.c (mono_image_create_method_token): Correctly encode
5676         MethodDef MemberRefParent token.
5677
5678         Fixes #472845.
5679
5680 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5681
5682         * image.c (mono_image_close): Delete the critical section before
5683         freeing the memory holding it.
5684
5685 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
5686
5687         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
5688         Fixes #476257.
5689
5690 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
5691
5692         * pedump.c (main): Call mono_marshal_init so pedump
5693         doesn't crash.
5694
5695 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
5696
5697         * loader.c (method_from_memberref): Properly fix #474271 and
5698         don't break the runtime bad.
5699
5700 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5701
5702         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
5703         (mono_domain_alloc0): Ditto.
5704
5705 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
5706
5707         * loader.c (method_from_memberref): Don't abort if the array
5708         method is not found. A regular loader failure is more informative
5709         and correct.
5710
5711         Fixes #474271.
5712
5713 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
5714
5715         *loader.c: Guard MonoImage::method_cache/methodref_cache
5716         using the image lock instead of the loader lock.
5717
5718         * metadata.h: Add comments about which fields are protected by
5719         the image lock.
5720
5721 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5722
5723         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
5724
5725         * generic-sharing.c (mono_method_construct_object_context): Remove the
5726         wrapper_type == NONE assert, it is not needed.
5727
5728 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5729
5730         * reflection.c (clear_cached_object): New helper function.
5731         (mono_method_clear_object): New function to clear the cached reflection
5732         objects for a dynamic method.
5733
5734         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
5735         Partly fixes # 463323.
5736         
5737 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
5738
5739         * class.c:
5740         * loader.c:
5741         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
5742
5743 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
5744
5745         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
5746         take the image lock instead of the loader lock.
5747
5748         * metadata-internals.h: Export new functions.
5749
5750 2009-02-12  Miguel de Icaza  <miguel@novell.com>
5751
5752         * domain.c (app_config_parse): Remove another use of stat that is
5753         not necessary as g_file_get_contents already does the presence
5754         check. 
5755
5756 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
5757
5758         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
5759
5760         * marshal.c: Move the bstr handling code to cominterop.c.
5761
5762         * marshal.c: Remove some COM interop code missed previously.
5763
5764 2009-02-12  Miguel de Icaza  <miguel@novell.com>
5765
5766         More Paolo patches from the Wii port:
5767         
5768         * security.c: Remove ves_icall_System_Environment_get_UserName
5769         from here.
5770
5771         * icall.c: And put ves_icall_System_Environment_get_UserName
5772         here. 
5773
5774         * appdomain.c (mono_set_private_bin_path_from_config): Remove
5775         redundant call to stat that was only used to test for the file
5776         existence.   Patch from Paolo.
5777
5778         * gc.c (run_finalize): If COM is disabled, do not link in
5779         mono_marshal_free_ccw.
5780
5781         * generic-sharing.c: Use alloca.h here as well.
5782
5783 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
5784
5785         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
5786
5787 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
5788
5789         * cominterop.c cominterop.h: New files.
5790
5791         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
5792         function/typedefs which are needed by cominterop.c global.
5793
5794 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5795
5796         * generic-sharing.c: Don't take the loader lock to guard image
5797         mempool allocs.
5798
5799 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
5800
5801         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
5802         called without the loader lock which is required to guard MonoImage:tokens.
5803
5804 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
5805
5806         * class.c:
5807         * metadata.c:
5808         * method-builder.c:
5809         * marshal.c:
5810         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
5811
5812 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
5813
5814         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
5815         Rework the code to use regular mono_image_alloc/0.
5816
5817         * loader.c: Rework the code to use regular mono_image_alloc/0.
5818
5819         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
5820
5821 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
5822
5823         * object-internals.h : Fixing a typo in the 
5824           MonoReflectionComVisibleAttribute struct.
5825
5826         * marshal.c (cominterop_com_visible): Check the implemented 
5827           interfaces for ComImport.
5828
5829         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
5830           assume that bools should be treated as VARIANTBOOLs.
5831
5832         * marshal.c (emit_marshal_boolean): Adding cases for 
5833           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
5834
5835         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
5836           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
5837
5838         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
5839           should be treated as VARIANTBOOLs.    
5840
5841         Code is contributed under MIT/X11 license.
5842
5843 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
5844
5845         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
5846         allocation with the image lock.
5847
5848 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
5849
5850         This patch is the last of a series to remove explicit reference of MonoImage::mempool
5851         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
5852
5853         * object.c: Add mono_string_to_utf8_image.
5854
5855         * object-internals.h: Export mono_string_to_utf8_image.
5856
5857         * reflection.c: Rework all explicit references to the the image mempool to go thought
5858         the mono_image_alloc set of functions.
5859
5860 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
5861
5862         This patch is the third of a series to remove explicit reference of MonoImage::mempool
5863         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
5864         and generics-sharing.c.
5865
5866         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
5867         as first argument. Note that this function remains broken as it doesn't perform locking around the
5868         mempool allocation.
5869
5870         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
5871
5872         * image.c: Add g_slist_append_image.
5873
5874         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
5875         the supplied image for allocation. Move code into mono_metadata_field_info_full.
5876
5877         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
5878         Fix all related code to do the same.
5879
5880         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
5881
5882         * metadata-internals.h: Fix the signatures.
5883
5884 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
5885
5886         This patch is the second of a series to remove explicit reference of MonoImage::mempool
5887         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
5888         and similar to work using MonoImage.
5889
5890         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
5891         MonoMemPool.
5892
5893         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
5894
5895         * class.c (mono_metadata_signature_deep_dup): Same.
5896
5897         * class.c (inflate_generic_type): Same.
5898
5899         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
5900
5901         * metadata.c (mono_metadata_signature_dup_full): Same.
5902
5903         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
5904         mono_metadata_signature_dup_full.
5905
5906         * metadata.c (mono_metadata_type_dup): Same.
5907
5908         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
5909
5910         * reflection.c: Same.
5911
5912         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
5913
5914         * metadata-internals.h: Fix the signatures.
5915
5916         * class-internals.h: Same.
5917
5918 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
5919
5920         This patch is the first of a series to remove explicit reference of MonoImage::mempool
5921         and use mono_image_alloc set of functions instead. 
5922
5923         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
5924         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
5925         of a MonoMemPool.
5926
5927         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
5928
5929         * class.c (g_list_prepend_mempool): Removed.
5930
5931         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
5932
5933         * image.c: Add g_list_prepend_image.
5934
5935         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
5936
5937         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
5938
5939
5940 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
5941
5942         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
5943         mono_image_unlock.
5944
5945         * image.c (mono_image_init): Init the lock field.
5946  
5947         * image.c (mono_image_init): Cleanup the lock field.
5948
5949         * image.c: Add mono_image_(un)lock functions.
5950
5951 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5952
5953         * class.c, class-internals.h: mono_method_get_context_general()
5954         combines the functionality of mono_method_get_context() and
5955         mini_method_get_context().
5956
5957         * generic-sharing.c, domain-internals.h:
5958         mono_method_construct_object_context() and
5959         mono_domain_lookup_shared_generic() moved from mini.
5960
5961         * icall.c (ves_icall_InternalInvoke): Handle the case where the
5962         method doesn't have the correct instantiation because it's shared
5963         generic code.  Fixes #473999.
5964
5965 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5966
5967         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
5968
5969         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
5970         
5971 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
5972
5973         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
5974
5975         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
5976
5977         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
5978         and recheck the cache for dups after it.
5979
5980         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
5981
5982         Fixes one of the deadlocks found in #473150.
5983
5984 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
5985
5986         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
5987           For Win32, add additional break conditions for accept.
5988
5989         Code is contributed under MIT/X11 license.
5990
5991 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5992
5993         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
5994         lazily initialize the native wrapper cache.
5995         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
5996         cache, since they are different from the normal wrappers.
5997
5998         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
5999
6000         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
6001         AOT compiled native wrappers.
6002
6003 2009-02-09  Geoff Norton  <gnorton@novell.com>
6004
6005         * appdomain.h:
6006         * security-core-clr.c: Allow enabling core-clr from the embedding
6007         API.
6008
6009 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
6010
6011         * socket-io.c: when requesting all the local ips, if there are no
6012         interfaces up and running, MS returns 127.0.0.1.
6013
6014 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
6015
6016         * mono-perfcounters-def.h: processor time is an inverse time.
6017         Fixes bug #468625.
6018
6019 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
6020
6021         * socket-io.c: an empty host name returns the list of local IPs.
6022         Fixes bug #386637 part 1/2.
6023
6024 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6025
6026         * verify.c (mono_class_interface_implements_interface): Call
6027         mono_class_setup_interfaces ().
6028         (merge_stacks): Ditto.
6029
6030 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6031
6032         * class.c (mono_class_setup_interfaces): New function to lazily initalize
6033         klass->interfaces.
6034         (mono_generic_class_get_class): Don't initalize klass->interfaces.
6035         (mono_generic_class_get_class): Ditto.
6036
6037 2009-02-06  U-QUACK\miguel  <miguel@quack>
6038
6039         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
6040         they live in security.c
6041
6042         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
6043         another bit from Paolo's code.
6044
6045 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6046
6047         * object.c (build_imt_slots): Add a small optimization to avoid inflating
6048         methods which will be discarded by add_imt_builder_entry ().
6049
6050         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
6051         need to be boxed.
6052
6053         * loader.c: Add a statistics for the size of the memberref signature cache.
6054         
6055         * loader.c (find_cached_memberref_sig): New helper function.
6056         (cache_memberref_sig): Ditto.
6057
6058         * loader.c: Cache the result of parsing memberref signatures, since otherwise
6059         they will be parsed again for every generic instantiation, leading to unbounded
6060         memory growth.
6061
6062 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6063
6064         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
6065         parameters of generic methods.
6066
6067         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
6068         after the original method is copied to the inflated method.
6069         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
6070
6071         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
6072         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
6073
6074         * class.c metadata.c: Update after the changes above.
6075
6076 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
6077
6078         * metadata-verify.c: Simplified error handling and added
6079         section table validation.
6080
6081 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * class-internals.h (MonoClassExt): New structure containing rarely used
6084         fields of MonoClass.
6085         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
6086         through a new 'ext' field.
6087
6088         * class.c (mono_class_alloc_ext): New helper function to allocate 
6089         class->ext.
6090
6091         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
6092
6093 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6094
6095         * object.c (mono_object_get_virtual_method): Properly inflate
6096         generic methods.  Fixes #472692.
6097
6098 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
6099
6100         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
6101         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
6102         for the parent type, the created type must be ready to be used on a generic
6103         instantiation.
6104         We fill this_arg/byval_arg if the parent is a generic instance to make sure
6105         we won't have duplicated entries in generic_inst_cache.
6106
6107         Fixes #469553.
6108
6109 2009-02-05  Miguel De Icaza  <miguel@novell.com>
6110
6111         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
6112         replace with plain BSD per the comments on the bug MONO77637.
6113
6114 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6115
6116         * class.c (mono_class_get_generic_class): New accessor function.
6117         (mono_class_get_generic_container): Ditto.
6118
6119         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
6120         fields, similar to the ones in MonoMethod.
6121
6122         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
6123         (mono_class_create_from_typedef): Set klass->is_generic if needed.
6124
6125         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
6126         
6127         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
6128         the same information as element_class->byval_arg.
6129
6130         * class.c reflection.c: Remove references to class->byval_arg.
6131
6132         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
6133         klass->enum_basetype directly.
6134
6135         * verify.c metadata.c object.c icall.c reflection.c: Use 
6136         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
6137         directly.
6138
6139 2009-02-04  Miguel de Icaza  <miguel@novell.com>
6140
6141         * icall-def.h: Remove internal calls for sockets when
6142         DISABLE_SOCKET is defined, file system writing features when the
6143         OS only support reading and not writing data and Policy support if
6144         the Policy is disabled.
6145         
6146         * image.c (do_mono_image_open): Apply Paolo's patches for using
6147         mono_file_map_ APIs here.
6148
6149         * assembly.c: Add support for platforms to avoid prefix
6150         auto-detection. 
6151
6152 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6153
6154         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
6155         warning.
6156
6157         * class.c (mono_class_inflate_generic_class): New helper function.
6158
6159         * class.c: Use mono_class_inflate_generic_class in a few places. Add
6160         statistics for inflated methods/classes.
6161
6162         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
6163
6164         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
6165         the call is made from Delegate.CreateDelegate () for the invoke method of
6166         a delegate.
6167
6168         * loader.c: Add a statistics for the memory occupied by inflated signatures.
6169
6170         * metadata.c (mono_metadata_signature_size): New helper function.
6171
6172         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
6173         generic instances.
6174
6175         * metadata.c (inflated_method_in_image): Avoid calling 
6176         mono_method_signature () if the method does not already have a signature.
6177
6178 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
6179
6180         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
6181         valuetype is compatible with target type, check by inheritance as a
6182         VT is not really compatible with System.ValueType, for example.
6183
6184         * verify.c (do_invoke_method): Improve error message.
6185
6186         * verify.c (do_box_value): If boxing a nullable, use the type argument
6187         on stack instead.
6188
6189         * verify.c (do_newobj): Improve error message.  
6190
6191         Fixes #469549.
6192
6193 2009-02-03  Miguel de Icaza  <miguel@novell.com>
6194
6195         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
6196
6197 2009-02-03  Mark Probst  <mark.probst@gmail.com>
6198
6199         * generic-sharing.c: Don't hold domain lock when calling
6200         instantiate_other_info().  Fixes #471958.
6201
6202         * domain-internals.h, loader.c: Describe locking policy of domain
6203         lock vs loader lock.
6204
6205 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
6206
6207         * verify.c (mono_delegate_signature_equal): Make it possible to check
6208         first-arg-bound delegates to static method.
6209
6210         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
6211         static methods with the first arg bound.
6212
6213         Fixes #469529.
6214
6215 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
6216
6217         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
6218         errors.
6219
6220         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
6221         under strict mode. Any type, when boxed can be seen as a reference type.
6222
6223         Fixes #469528.
6224
6225 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
6226
6227         * object.h: The lower bound of an array is a signed integer value.
6228         Introduce mono_array_lower_bound_t typedef. It should be used instead of
6229         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
6230
6231         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
6232         calculate the upper bound.
6233         
6234         Fixes #471252.
6235
6236 2009-02-02  Miguel de Icaza  <miguel@novell.com>
6237
6238         From Paolo's work, refactored, cleared up:
6239         
6240         * threadpool.c, icall.c: ifdef code that requires a working socket
6241         stack.
6242
6243         * metadata.c (mono_metadata_field_info): Do not attempt to return
6244         a value from a function declared as void.
6245
6246         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
6247         from the console stack.
6248
6249         * assembly.c: use strrchr instead of rindex.
6250
6251         * class.c, object.c, marshal.c, icall.c, reflection.c: include
6252         alloca.h on systems that have it.
6253
6254         * environment.c: Avoid code that uses stuff from
6255         HAVE_SYS_UTSNAME_H
6256         
6257         * appdomain.c: Include sys/time.h.
6258
6259         * console-io.c: include sys/ioctl.h if it is available.
6260
6261 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6262
6263         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
6264
6265         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
6266         the method builder.
6267
6268         * marshal.c: Set mb->skip_visibility instead of setting it on the method
6269         after it was created and cached, as the later is not thread safe.
6270         
6271 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6272
6273         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
6274         called while the debugging module is not initialized. Fixes #471669.
6275
6276 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
6277
6278         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
6279
6280         Fixes #471255.
6281
6282 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6283
6284         * generic-sharing.c (lookup_or_register_other_info): Make sure the
6285         loader lock is not taken while the templates lock is held.  Fixes
6286         #471089.
6287
6288 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6289
6290         * metadata.c (type_in_image): Added a check to fix a monodis
6291         crash.
6292
6293 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6294
6295         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
6296         nullable arguments.
6297
6298         * object.c (mono_runtime_invoke_array): Ditto.
6299         
6300         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
6301         freeing wrappers of dynamic methods.
6302
6303         * loader.c (mono_free_method): Call it. Fixes #463323.
6304         
6305         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
6306         methods taking vtype/byref arguments, to fix yet another bug caused by
6307         the sharing of runtime invoke wrappers. Partly fixes #471259.
6308
6309 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6310
6311         * debug-mono-symfile.c (check_line): Return NULL instead of returning
6312         <first file in file table>:1 when the IL offset does not have an associated
6313         line number.
6314
6315 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * mono-debug.c (mono_debug_lookup_locals): New function to return local
6318         variable info for a method.
6319
6320         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
6321         
6322 2009-01-30  Jb Evain  <jbevain@novell.com>
6323
6324         * pedump.c: reuse code from monodis to make sure pedump honors
6325         MONO_PATH, which is needed to verify net_2_1 assemblies.
6326
6327 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6328
6329         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
6330         there is no line number info.
6331
6332 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
6333
6334         Avoid some MonoType allocations
6335         * reflection.c (mono_reflection_initialize_generic_parameter):
6336         Reuse MonoType from param->pklass rather than allocating one.
6337         (mono_dynamic_image_free): Update to changes.
6338
6339 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
6340
6341         Rearrange some code to improve consistency
6342         * reflection.c (mono_reflection_setup_generic_class): Move body ...
6343         (mono_reflection_initialize_generic_parameter): ... here.
6344
6345 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6346
6347         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
6348         with type constraints as an experiment.
6349
6350         * boehm-gc.c (on_gc_notification): Update mono_stats.
6351
6352 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
6353
6354         Avoid some allocations
6355         * class-internals.h (_MonoGenericInst::type_argv): Convert from
6356         pointer to tail array to avoid extra allocation.
6357         * metadata.c (free_generic_inst): Update to changes.
6358         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
6359         on-stack struct.
6360
6361 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6362
6363         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
6364         return TRUE if the two type objects are the same.
6365
6366 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6367
6368         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
6369         (mono_class_native_size): Use klass->marshal_info->min_align instead of
6370         klass->min_align, since klass->min_align contains the managed alignment,
6371         while the native alignment can be different, like for longs on x86.
6372         Fixes #469135.
6373
6374         * class-internals.h (MonoMarshalType): Add a min_align field.
6375
6376 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
6377
6378         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
6379         the 1.0 format.
6380
6381 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6382
6383         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
6384         some comments about the usage of the used_regs field.
6385
6386         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
6387         Fixes #469217.
6388
6389 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
6390
6391         * appdomain.c: return NULL instead of throwing FileNotFoundException
6392         when LoadAssembly() fails.
6393
6394 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6395
6396         * metadata.c (mono_metadata_generic_param_equal): Only compare the
6397         image if the owner is NULL.  Fixes the AOT failures.
6398
6399 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6400
6401         * metadata.c (mono_metadata_load_generic_params): Initialize the 
6402         MonoGenericParam structure using memset so the image field is initialized
6403         as well.
6404
6405 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
6406
6407         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
6408         a plain store.
6409
6410 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6411
6412         * class.c (mono_class_setup_vtable_general): In the generic instance
6413         optimization, set method->slot for abstract virtual methods. Fixes part of
6414         #467834.
6415
6416 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
6417
6418         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
6419         which signals that the unloading has started but all appdomain services must
6420         remain operational.
6421
6422         * appdomain.c (mono_domain_unload): The initial state for unloading now
6423         is unloading_start and we switch to unloading after the managed call to
6424         AppDomain::DomainUnload has finished.
6425
6426         The new unloading state has to be created because managed code in the
6427         DomainUnload event can depend on things like the threadpool still working.
6428         The domain must remain fully functional while the event executes.
6429
6430         This shown as an issue due to Process::WaitForExit, which waits for
6431         async reads of stdout and stderr to complete. Since those are processed
6432         in the threadpool the code deadlocks because the DomainUnload callback 
6433         waits for the async read finished event, which should have been set by a
6434         threadpool job but has been discarded due to the domain been in unload
6435         state.
6436
6437 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6438
6439         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
6440         image must match.
6441
6442 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6443
6444         * reflection.c (resolve_object): For fields, inflate the class and
6445         then get the field in the inflated class.
6446
6447 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6448
6449         * object-internals.h (struct _MonoException): Added a comment
6450         explaining the new use of trace_ips.
6451
6452 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6453
6454         * generic-sharing.c (inflate_other_data): Inflate array methods
6455         correctly.
6456
6457         * loader.c, class-internals.h: Rename search_in_array_class() to
6458         mono_method_search_in_array_class() and make it non-static.
6459
6460 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6461
6462         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
6463         Hopefully fixes #458168.
6464
6465 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
6466
6467         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
6468         as it is performed elsewhere.
6469
6470         Code is contributed under MIT/X11 license
6471
6472 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
6473
6474         * mono-perfcounters-def.h: Add counters for asp.net requests total and
6475         requests queued.
6476         * object.c (mono_raise_exception): Increment the exceptions total
6477         counter when an exception is thrown.
6478         * class-internals.h: Add a location for storing the total number of
6479         asp.net requests served.
6480         * mono-perfcounters.c: Implement update support for asp.net counters
6481         from the class libraries. Implement read support for asp.net counters
6482         and exceptions total counter.
6483
6484 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
6487         accessing klass->methods. Fixes #467385.
6488
6489 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6490
6491         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
6492         for byval arguments without an [Out] attribute. Fixes #467212.
6493
6494         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
6495         Fix compilation under android.
6496         
6497         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
6498         processed, scan them directly after they are copied, to achieve better locality
6499         and cache usage.
6500
6501         * socket-io.c: Applied patch from Koushik Dutta
6502         (koush@koushikdutta.com). Disable IPV6 when running under android.
6503
6504 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6505
6506         * icall.c (ves_icall_InternalExecute): Add write barriers.
6507
6508         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
6509         the GC code.
6510
6511         * sgen-gc.c: Implement write barriers in IL code.
6512
6513 2009-01-17  Geoff Norton  <gnorton@novell.com>
6514
6515         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
6516
6517 2009-01-17  Geoff Norton  <gnorton@novell.com>
6518
6519         * image.c: When unloading the image->references table, there can be gaps
6520         in it.  Ensure that we iterate every entry to avoid leaking assembly references
6521         when unloading an appdomain.
6522
6523 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
6524
6525         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
6526         speed up ptr-in-nursery checks.
6527
6528         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
6529         threads_lock () to prevent deadlocks.
6530
6531         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
6532         does not need to be scanned during minor collections, since writes to it
6533         must use write barriers.
6534
6535 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
6536
6537         * metadata-verify.c: Add pe nt header verification.
6538         
6539 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
6540
6541         * gc.c: Fix a few warnings when using SGEN.
6542
6543 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
6544
6545         * metadata-verify.c: Add pe optional header verification.
6546
6547 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
6548
6549         * sgen-gc.c: Add support for user defined marker functions, used by
6550         MonoGHashTable to avoid registering a GC root for every hash node.
6551
6552 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
6553
6554         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
6555         non-pinned roots into separate hashes to avoid having to traverse them
6556         in functions which are only interested in one kind.
6557
6558 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
6559
6560         * metadata-verify.c: Add pe header machine field verification.
6561         
6562 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
6563
6564         * metadata-verify.c: Add pe header size verification.
6565
6566 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
6567
6568         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
6569         using the GC, they don't contain references.
6570
6571         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
6572
6573 2009-01-13  Geoff Norton  <gnorton@novell.com>
6574
6575         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
6576         AppDomains created on the native side can be cleaned up on the native side.
6577
6578 2009-01-13  Geoff Norton  <gnorton@novell.com>
6579
6580         * appdomain.c: Ensure that we call mono_context_init for the embedding api
6581         as well as the managed api.
6582
6583 2009-01-13  Geoff Norton  <gnorton@novell.com>
6584
6585         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
6586         with a MonoAppDomain initialized against it.
6587
6588 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6589
6590         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
6591         
6592         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
6593
6594         * marshal.c: Avoid setting the exception clauses after a method has been entered 
6595         into the wrapper caches. Fixes #465700.
6596
6597         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
6598         method builder.
6599         (mono_mb_create_method): Set the clauses from the method builder.
6600
6601 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
6602
6603         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
6604         Patch from Makoto Kishimoto.
6605
6606 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6607
6608         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
6609         encoding them as ROOT_DESC_COMPLEX.
6610         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
6611
6612 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
6615         no longer point to the nursery.
6616
6617         * sgen-gc.c: Add a few comments/FIXMEs.
6618         
6619         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
6620
6621         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
6622         initialization of the various _method variables thread safe. Fixes
6623         #465377.
6624
6625 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6626
6627         * domain.c, domain-internals.h: Remove the shared_generics_hash
6628         and its lookup functions.
6629
6630 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
6631
6632         * socket-io.c:  Fixing the MSVC build. 
6633
6634         Code is contributed under MIT/X11 license.
6635
6636 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
6637
6638         * metadata-verify.c: Add pe header watermark verification.
6639
6640 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
6641
6642         * metadata-verify.c: Add lfanew verification.
6643
6644 2009-01-12  Jb Evain  <jbevain@novell.com>
6645
6646         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
6647         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
6648
6649 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6650
6651         * socket-io.c: Fix the build.
6652
6653         * environment.c: Fix an #ifdef.
6654
6655 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6656
6657         * threadpool.c (async_invoke_thread): Handle the wait function returning
6658         WAIT_IO_COMPLETION as well.
6659         (async_invoke_io_thread): Ditto.
6660
6661 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
6662
6663         * threads.c: Fixing the Windows build.
6664
6665         Code is contributed under MIT/X11 license.
6666
6667 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6668  
6669         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
6670         interrupt a wait.
6671         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
6672         the thread to wait again.
6673
6674 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
6675
6676         * metadata-verify.c: Initial skeleton of the metadata verifier.
6677
6678         * pedump.c: Add support for the metadata verifier.
6679
6680         * verify-internal.h: Export the whole assembly metadata verifier function.
6681
6682 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
6683
6684         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
6685
6686 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6687
6688         * Makefile.am: Upgrade dtrace-prelink.sh location.
6689
6690 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
6691
6692         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
6693         well. Otherwise the shutdown deadlock that happens on unix will can happen
6694         as well.
6695         If the main thread code finishes too fast it's possible that the finalizer
6696         thread won't have executed yet, won't record itself as the finalizer thread
6697         and the shutdown sequence will wait on it forever.
6698
6699 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
6700
6701         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
6702         with MSVC.
6703
6704 2009-01-08  Miguel de Icaza  <miguel@novell.com>
6705
6706         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
6707         Robert Jordan for pointing this out.
6708
6709 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
6710
6711         * icall.c
6712         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
6713         ves_icall_System_IO_DriveInfo_GetDriveType.
6714
6715 2009-01-07  Miguel de Icaza  <miguel@novell.com>
6716
6717         * icall.c: Wrap calls to mono_strtod in CriticalSection
6718         invocations when using eglib, to work around #464316.
6719
6720 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
6721
6722         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
6723         return value of GetCurrentDirectory to never access unitialized memory.
6724
6725 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
6726
6727         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
6728         return value of GetCurrentDirectory and expand the buffer if needed.
6729
6730         Fixes #459094.
6731
6732 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
6733
6734         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
6735           Adding a call to mono_init_com_types.
6736
6737         Code is contributed under MIT/X11 license.
6738
6739 2009-01-07  Geoff Norton  <gnorton@novell.com>
6740
6741         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
6742         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
6743         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
6744         be the value of the ip buffer.
6745
6746 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
6747
6748         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
6749         interfaces_packed here.
6750
6751         Fixes part of #463294.
6752
6753 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
6754
6755         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
6756
6757         Fixes part of #463294.
6758
6759 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
6760
6761         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
6762         is a boxed complex as well.
6763
6764         Fixes part of #463294.
6765
6766 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
6767
6768         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
6769         control if a methodspec should be created for the generic method definition from external assemblies.
6770         Caching of methodspec is done using the handleref hash table.
6771
6772         Fixes #462592.
6773
6774 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
6775
6776         * loader.c (find_method): When searching the interfaces of a class
6777         check the transitive closure of implemented interfaces.
6778
6779         Fixes #463303.
6780
6781 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
6782
6783         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
6784         
6785 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
6786
6787         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
6788         interfaces calculation to fill_valuetype_array_derived_types.
6789
6790         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
6791         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
6792         for example.
6793
6794         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
6795         interfaces for valuetypes if needed.    
6796
6797         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
6798         for their basetype as well. Types are array expanded if rank is > 0.
6799
6800         Fixes #400716.
6801
6802 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
6803
6804         * socket-io.h : Changing the signature of
6805           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
6806           the blocking state.
6807
6808         * icall-def.h :  Changing the signature of
6809           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
6810
6811         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
6812           For Windows only.  Avoid blocking when calling accept by
6813           querying for a connection via select.  The loop also queries
6814           the thread state every 1000 micro seconds for the thread
6815           stop state.  This will avoid the process hanging on shutdown
6816           when using a TcpChannel that is never connected to.
6817
6818         Code is contributed under MIT/X11 license.
6819
6820 2008-12-30  Marek Safar  <marek.safar@gmail.com>
6821
6822         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
6823
6824 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
6825
6826         * class.c (get_implicit_generic_array_interfaces): Extract common
6827         code to a helper function making it a lot easier on the eyes.
6828
6829 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
6830
6831         * class.c (get_implicit_generic_array_interfaces): If the internal
6832         enumerator is an interface inflate System.Object instead of itself.
6833
6834         Fixes #461261.
6835
6836 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
6837
6838         * object.c (mono_runtime_invoke_array): Don't assert with
6839         byref nullable types.
6840
6841         * marshal.c (mono_marshal_get_runtime_invoke): To handle
6842         byref nullables we unbox the object and store it on the
6843         stack. 
6844         We can't use the boxed object since it is the T of Nullable<T>
6845         and the boxed representation of a nullable it's underlying type
6846         or null.
6847         We could cheat and create a boxed nullable and use the same
6848         machinery of other byref VTs but this feels like a hack and
6849         using the stack has the bonus of reducing heap pressure.
6850
6851         Fixes #461941.
6852
6853 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
6854
6855         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
6856         return value.
6857
6858         Fixes #461867.
6859
6860 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
6861
6862         * icall-def.h : Adding an internal call definition for 
6863           System.Environment.internalBroadcastSettingChange.
6864
6865         * icall.c : Adding a Windows only implementation to broadcast a 
6866           WM_SETTINGCHANGE when an environment variable has changed.
6867
6868         Code is contributed under MIT/X11 license.
6869
6870 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6871
6872         * class.c, class-internals.h: Made
6873         mono_class_has_parent_and_ignore_generics() non-static.
6874
6875 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
6876
6877         * image.c: deal with the mmap failing when loading an image.
6878
6879 2008-12-17  Geoff Norton  <gnorton@novell.com>
6880
6881         * threadpool.c: Ensure that the io_queue_lock is initialized
6882         in all circumstances, as we always attempt to cleanup against it.
6883
6884 2008-12-17  Miguel de Icaza  <miguel@novell.com>
6885
6886         * icall.c (ves_icall_System_Environment_get_Platform): For
6887         compatibility reasons for existing client code we will keep
6888         returning 4 for a while.   
6889
6890         For how long will depend on the documentation being updated, and
6891         for us to give client code a chance to be updated.
6892
6893         This reverts the original decison on #433108 since we did not
6894         catch roughly 33 instances of the broken code in our own source
6895         code base, we did not catch failures on the buildbots, and QA did
6896         not bring this as a problem.
6897
6898         Only today I found some customer's code breaking due to our own
6899         class libraries not being fully updated and tracked it down to
6900         this change.  I am reverting it because if we could not even get
6901         our story straight in our own code base, how can we hope that our
6902         end user code be fixed?
6903
6904         As of this morning, our Wiki page that documents how to detect
6905         Unix had not been fixed.    
6906
6907 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
6908
6909         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
6910
6911         * class.c (mono_class_get_fields): Handle loading errors.
6912
6913 2008-12-12 Mark Mason <mmason@upwardaccess.com>
6914
6915         * 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.
6916         
6917 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
6918
6919         * mono-perfcounters.c: avoid warning.
6920
6921 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
6922
6923         * reflection.c (ensure_runtime_vtable): Work on generic instances and
6924         make sure all interfaces have MonoClass::interface_id set.
6925
6926         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
6927         method table is property set.
6928
6929 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
6930
6931         * class.c: New function mono_class_setup_interface_id that setup
6932         MonoClass::interface_id if needed.
6933
6934         * class-internals.h: Export new function.
6935
6936 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
6937
6938         * class.c: Add code to sanity check the vtable after setup_vtable_general
6939         has done it's work.
6940
6941 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
6942
6943         * icall.c: make Assembly.GetExecutingAssembly work properly when
6944         reflection is used to invoke the method.
6945         Bug #321781 fixed.
6946
6947 2008-12-11  Mark Probst  <mark.probst@gmail.com>
6948
6949         * metadata/generic-sharing.c: Look for constraints in all type
6950         arguments, not just the first one.
6951
6952 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
6953
6954         * appdomain.c: return the correct CodeBase for an Assembly instance
6955         that was loaded from the shadow-copy directories.
6956         Bug #458190 fixed.
6957
6958 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6959
6960         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
6961
6962         * sgen-gc.c (check_object): New debugging helper function.
6963
6964         * object.c: Fix calls to mono_value_copy_array ().
6965
6966 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
6967
6968         * class.c (mono_class_setup_fields): If working on an inflated class
6969         first check if the generic definition did init with success.
6970
6971         Fixes #445361.
6972
6973 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
6974
6975         pedump.c (main): Fix a warning.
6976
6977 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
6978
6979         * object-internals.h : Adding a definition for 
6980           MonoReflectionComVisibleAttribute.
6981
6982         * marshal.c (cominterop_com_visible) :  Method added to check the 
6983           ComVisible attribute of a class.
6984
6985         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
6986           cominterop_raise_hr_exception added to consolidate common code 
6987           to raise hr exceptions.
6988
6989         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
6990           if a managed class should support IDispatch.
6991
6992         * marshal.c 
6993           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
6994           Added additional checks for managed object when getting 
6995           an IDispatch interface.
6996
6997         Code is contributed under MIT/X11 license.
6998
6999 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
7000
7001         pedump.c (main): Handle mono_get_method () returning NULL. 
7002
7003 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * marshal.h: Fix a warning.
7006
7007 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7008
7009         * marshal.c : Adding cominterop_release_all_rcws to release all
7010           runtime callable wrappers held by the runtime.
7011
7012         * marshal.h : Adding declaration for cominterop_release_all_rcws.
7013           
7014         Code is contributed under MIT/X11 license.
7015
7016 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7017
7018         * metadata.c (mono_image_alloc_lock): New helper function.
7019         (mono_image_alloc0_lock): Ditto.
7020
7021         * metadata.c: Use the alloc_lock () helper functions for allocating
7022         memory from the image mempool.
7023
7024 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
7025
7026         * class.c (mono_class_from_generic_parameter): Document it's
7027         locking behavior. Fix double checked locking here, we stored in
7028         param->pklass a partially initialized MonoClass and no membar was used.
7029
7030 2008-12-05  Marek Habersack  <mhabersack@novell.com>
7031
7032         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
7033         (3) functions are present in the C library use them to do the
7034         job. If they are absent, make sure that the sum of int_part and
7035         dec_part is rounded before returning. This is necessary due to the
7036         division of dec_part by the power of 10 before the final addition
7037         is performed - if the result is not rounded in some cases it will
7038         yield invalid results.
7039
7040 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7041
7042         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
7043         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
7044         instruction instead of a pointer constant.
7045
7046 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7047
7048         * loader.c (mono_method_get_header): Do most of the work outside the
7049         loader lock, to avoid assembly load hook deadlocks.
7050
7051         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
7052         (mono_metadata_parse_type_full): Ditto.
7053
7054 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
7055
7056         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
7057         Make the stack depth fixed. Ensure proper argument passing to the backtrace
7058         funtions. Finally, use a lock to produce well ordered output.
7059
7060         The lock looks silly, as all calls to the corlib mempool should be guarded
7061         with the loader lock, but for some reason this fact doesn't help. 
7062
7063         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
7064
7065 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7066
7067         * socket-io.c: 64 bit big-endian fixes.
7068
7069 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
7070
7071         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
7072         targets that require strict compatibility between the types.
7073
7074         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
7075         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
7076         Kill the strict argument and create a new one valuetype_must_be_boxed.
7077
7078         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
7079         state that all valuetypes must be boxed.
7080
7081         Fixes #448560.
7082
7083 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
7084
7085         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
7086         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
7087
7088         Contributed under MIT/X11 license.
7089
7090 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
7091
7092         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
7093         the inflate_generic_type machinery should handle it.
7094
7095         This avoids a crash when the field's flags is zero and it's type is
7096         a primitive.
7097         What happens is that mono_metadata_parse_type_full will see that opt_attrs
7098         is zero and will return one of the cached built-in primitive types. Since
7099         those types live in read-only memory, the code that copies it crashes.  
7100
7101 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7102
7103         * object.c: Don't put function descriptors into generalized IMT
7104         thunks.
7105
7106 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7107
7108         * class.c: Enable generic code sharing on PPC64.
7109
7110 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7111
7112         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
7113         from mini/mini.c.
7114
7115         * generic-sharing.c: Allocate the method template slists from the
7116         image mempool so it doesn't leak.
7117
7118 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
7119
7120         * class.c (generic_array_methods): Release the linked list.
7121
7122 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7123
7124         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
7125         invocation to g_utf16_to_utf8().
7126
7127 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7128
7129         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
7130         arguments on big endian archs.
7131
7132 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
7133
7134         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
7135         the type name (test added in corlib).
7136
7137 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
7138
7139         * pedump.c: initialize perf. counters. Fixes a segv.
7140
7141 2008-11-25  Martin Baulig  <martin@ximian.com>
7142
7143         * mono-debug-debugger.c
7144         (mono_debugger_runtime_invoke): Return the exception object if an
7145         exception was thrown.  Visual Studio displays the exception object
7146         in the locals window.
7147
7148 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7149
7150         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
7151         ftnptr.
7152
7153 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7154
7155         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
7156         MONO_TYPE_U are sizeof (gpointer), too.
7157
7158 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7159
7160         * marshal.c (mono_type_native_stack_size): Fixed size and
7161         alignment for reference types.
7162
7163 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7164
7165         * class.c (mono_class_generic_sharing_enabled): Disable generic
7166         code sharing for PPC64.
7167
7168 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
7169
7170         * icall.c (mono_method_get_equivalent_method): Make sure
7171         method->klass->methods is inited before looping over it.
7172
7173 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
7174
7175         * object.c: when calling ExecuteAssembly in a newly created domain,
7176         the configuration file and application base are already set up.
7177         Bug #446353 take 2 fixed.
7178
7179 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
7180
7181         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
7182         Fixes #444715. Fix a warning.
7183
7184 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
7185
7186         * appdomain.c: write the full path of the assembly to the .ini file
7187         created when "shadow-copying"
7188         Bug #446353 fixed.
7189
7190 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7191
7192         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
7193         if signature==FALSE.
7194
7195 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7196
7197         * marshal.h : Fix the cygwin build.
7198            marshal.c:12442: undefined reference to `_IID_IMarshal'
7199           
7200         Code is contributed under MIT/X11 license.
7201
7202 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7203
7204         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
7205           free threaded marshaler when QueryInterface is called on a COM callable
7206           wrapper requesting the IMarshal interface.
7207           
7208         Code is contributed under MIT/X11 license.
7209
7210 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7211
7212         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
7213
7214         * reflection.c (mono_type_get_object): Special case the very common
7215         void type.
7216
7217         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
7218         hold typeof(void).
7219
7220 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
7221
7222         * process.h : Adding method declaration for
7223           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
7224           
7225         * process.c : Adding implementation for
7226           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
7227           
7228         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
7229           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
7230
7231         Code is contributed under MIT/X11 license.
7232
7233 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
7234
7235         * appdomain.c (unload_thread_main): Clean up threadpool by
7236         calling mono_thread_pool_remove_domain_jobs.
7237
7238         * domain-internals.h (struct _MonoDomain): Add new fields to
7239         help coordinate the cleanup of the threadpool.
7240
7241         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
7242         that cleans up the threadpool of all jobs associated with an appdomain.
7243         It does that by cleaning up the queues and making sure all active
7244         threads are accounted.
7245
7246         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
7247         unloaded or in the process of. Take this is such way that there is
7248         no race condition between another thread starting the unload and the
7249         current thread acknowledging it.
7250
7251         * threadpool.c (async_invoke_thread): Same.
7252
7253         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
7254         firing the new thread.
7255
7256         * threadpool.c (start_tpthread): Same.
7257
7258         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
7259
7260         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
7261
7262 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
7263
7264         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
7265         Add support for DuplicateHandle.
7266         
7267         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
7268         Add support for DuplicateHandle.
7269         
7270         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
7271         Add support for DuplicateHandle.
7272
7273         Code is contributed under MIT/X11 license.
7274
7275 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7276
7277         * class-internals.h: Make min_align into a whole byte.
7278
7279         * class.c: Set min_align for SIMD types to 16.
7280
7281 2008-11-05  Geoff Norton  <gnorton@novell.com>
7282
7283         * attach.c: Default the attacher to enabled for all cases including
7284         embedded.
7285
7286 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7287
7288         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
7289         change r117650.
7290
7291 2008-11-04  Mark Probst  <mark.probst@gmail.com>
7292
7293         * monitor.c, monitor.h: New function for querying offsets of
7294         members of MonoThreadsSync.
7295
7296 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
7297
7298         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
7299         to speed up this function and to avoid the boundless memory growth caused by
7300         the signature_dup () calls.
7301
7302 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7303
7304         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
7305         wrapper.
7306
7307         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
7308         by 1 bit.
7309
7310         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
7311
7312 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7313
7314         * appdomain.c:
7315         * domain-internals.h: made mono_set_private_bin_path_from_config()
7316         "internal".
7317         * object.c: call the above function after setting the configuration
7318         file path for the root domain.
7319         Fixes bug #314478.
7320
7321 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
7322
7323         * assembly.c: when the assembly is loaded from an absolute path, end
7324         basedir with a directory separator.
7325         Bug #440781 fixed.
7326
7327 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7328
7329         * monitor.c (mono_monitor_get_fast_enter_method): If
7330         CompareExchange is not available, don't create the fastpath
7331         instead of asserting.  (The method is missing in the 1.1 profile.)
7332
7333 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7334
7335         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
7336
7337         * monitor.c, monitor.h: Code for generating Monitor.Enter and
7338         Monitor.Exit IL fastpaths.
7339
7340 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7341
7342         * class.c (mono_class_create_from_typedef): Added Vector2ul.
7343
7344 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7345
7346         * class.c (mono_class_create_from_typedef): Added Vector2l.
7347
7348 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7349
7350         * class.c (mono_class_create_from_typedef): Added Vector2d.
7351
7352 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
7353
7354         * appdomain.c: translate \ into / for cache_path.
7355         * domain-internals.h: new mono_is_shadow_copy_enabled().
7356         * icall.c: (fill_reflection_assembly_name) do the same path
7357         manipulations that get_code_base does.
7358         (get_code_base) use mono_is_shadow_copy_enabled.
7359
7360 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
7361
7362         * appdomain.c: shadow-copied assemblies go to CachePath +
7363         ApplicationName when both are set. DynamicBase has nothing to do with
7364         shadow copies.
7365         Bug #406877 fixed.
7366
7367 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7368
7369         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
7370         STANDALONESIG table.
7371
7372         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
7373         standalone signatures.
7374
7375         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
7376         comparison code: instead of comparing the signatures using a custom
7377         equals function, transform them to a common signature and compare that. This
7378         works better with AOT.
7379
7380 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
7381
7382         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
7383
7384         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
7385         call for generic instances.
7386         (mono_class_setup_properties): Call setup_properties () before accessing
7387         gklass->properties.
7388
7389         * class.c (mono_class_get_virtual_methods): New helper function to iterate
7390         over the virtual methods of a class using metadata if possible, avoiding the
7391         creation of MonoMethod's for non-virtual methods.
7392         
7393         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
7394         get_virtual_methods () to iterate over the virtual methods of classes.
7395
7396 2008-10-25  Martin Baulig  <martin@ximian.com>
7397
7398         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
7399
7400 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7401
7402         * class.c (mono_class_create_from_typedef): Added Vector4i.
7403
7404 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7405
7406         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
7407         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
7408         special-casing applies to eliminate the call completely.
7409
7410 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7411
7412         * class.c (mono_class_create_from_typedef): Added Vector8s.
7413
7414 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7415
7416         * class.c (mono_class_create_from_typedef): Added Vector16sb.
7417
7418 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7419
7420         * icall.c: get rid of annoying warning.
7421
7422 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
7423
7424         * threadpool.c: in 1.x, if you change the background status of the
7425         threadpool thread, it's not reset.
7426         Remove unnecessary calls to SetState.
7427
7428 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7429
7430         * threadpool.c: asynchronously create a set of idle threads upon first
7431         use of the threadpool. SetMinThreads will now start the appropriate
7432         number of idle threads if they are not already running. The default is
7433         1 threadpool thread per CPU. Increased the maximum number of threads
7434         per CPU to 10.
7435
7436 2008-10-22  Martin Baulig  <martin@ximian.com>
7437
7438         Revert r116521 from Zoltan, it breaks the debugger:
7439
7440         * class.c (mono_class_get_virtual_methods): New helper function to iterate
7441         over the virtual methods of a class using metadata if possible, avoiding the
7442         creation of MonoMethod's for non-virtual methods.
7443         
7444         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
7445         get_virtual_methods () to iterate over the virtual methods of classes.
7446
7447 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7448
7449         * threads.c: when creating a threadpool thread, set its state to
7450         'background'.
7451         * threadpool.c: reset the background state of a threadpool thread
7452         after finishing each work item
7453         Bug #437888 fixed.
7454
7455 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
7456
7457         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
7458         
7459         * class.c (mono_class_setup_vtable_general): Add an optimized version for
7460         generic instances which works by inflating the methods in the container
7461         class's vtable.
7462
7463         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
7464         variant which doesn't make a copy if no inflation was done.
7465         (mono_class_setup_fields): Use it.
7466
7467         * metadata.c (mono_metadata_get_shared_type): New helper function to
7468         return a shared instance of a given MonoType.
7469
7470         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
7471         a copy of most non-generic types.
7472
7473 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7474
7475         * threadpool.c: remove one more GetSystemInfo () call.
7476
7477 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
7478
7479         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
7480         use the code in mono-proclib.h to get processor information.
7481
7482 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
7483
7484         * appdomain.c: fixed the logic that determines whether assemblies in a
7485         directory are "shadow-copied" or not. Bug #433483 fixed.
7486
7487 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
7488
7489         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
7490         warning.
7491
7492 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7493
7494         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
7495         returning a vtype.
7496
7497         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
7498         reflection.c: Use mono_field_get_name () for accessing a field's name.
7499
7500         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
7501         class.c
7502
7503         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
7504         field.
7505
7506         * loader.c (find_method_in_class): Reenable the metadata optimization by
7507         not using it for generic instances.
7508
7509         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
7510         data/def_type fields from MonoClassField into a separate structure.
7511         (struct MonoClassField): Remove data/def_type fields.
7512         (struct _MonoClass): Add a 'field_def_values' array to store the default
7513         values/RVA for fields.
7514
7515         * class.c reflection.c: Update after the changes.
7516         
7517         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
7518         for accessing field->data.
7519
7520         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
7521
7522         * loader.c (find_method_in_class): Revert the last change for now as
7523         it breaks Mono.C5 unit tests.
7524
7525         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
7526         'field_generic_types' and 'field_objects' which contain the information
7527         previously stored in MonoInflatedField.
7528         (MonoInflatedField): Delete.
7529         (struct _MonoClassField): Delete 'generic_info' field.
7530
7531         * reflection.c: Store the information which was previously in 
7532         field->generic_info in MonoDynamicGenericClass instead.
7533
7534         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
7535         MonoClassField changes.
7536
7537 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
7538
7539         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
7540         store the value inside the data array of the MonoMethodWrapper.
7541         This saves memory, is faster and fixes the lifetime issues (methods
7542         were never removed from the hash previously). May also fix bug#436996.
7543
7544 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7545
7546         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
7547         generic instances, compute the type from the generic definition instead of
7548         looking in field->generic_info.
7549
7550         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
7551         for inflated fields, the only user was get_fieldref_token () which no
7552         longer needs it.
7553
7554         * class.c (mono_class_init): Revert the last change as it seems to cause
7555         crashes.
7556
7557         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
7558         bytes on 64 bit platforms.
7559
7560         * object.c (mono_class_create_runtime_vtable): Fix a warning.
7561         
7562         * object.c (mono_class_create_runtime_vtable): Don't initalize
7563         field->data/field->def_type here, it is done lazily by 
7564         mono_class_get_field_default_value ().
7565
7566         * icall.c (ves_icall_get_enum_info): Call 
7567         mono_class_get_field_default_value () instead of directly accessing
7568         field->data and field->def_type.
7569
7570         * object.c (get_default_field_value): Ditto.
7571
7572         * class.c (mono_field_get_data): Ditto.
7573         
7574         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
7575         call for generic instances.
7576
7577         * loader.c (find_method_in_class): If klass != from_class, then inflate
7578         the method with the context of from_class, since the caller assumes this.
7579
7580 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
7581
7582         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
7583         for accessing method->slot.
7584
7585 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
7586
7587         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
7588
7589 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7590
7591         * class.c (mono_method_get_vtable_index): Use
7592         mono_method_get_vtable_slot () for accessing method->slot.
7593
7594         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
7595         accessing klass->methods.
7596
7597         * class.c (mono_method_get_vtable_slot): New helper function.
7598         (mono_class_get_vtable_entry): Ditto.
7599         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
7600         accessing method->slot.
7601
7602         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
7603         method to get_inflated_method ().
7604
7605         * class.c (mono_class_get_inflated_method): New helper method to obtain
7606         a method of an inflated class without calling setup_methods ().
7607         (mono_class_get_cctor): Use get_inflated_method.
7608
7609         * generic-sharing.c (mono_class_get_method_generic): Ditto.
7610         
7611         * marshal.c image.c: Lazily create all the marshal caches.
7612
7613         * image.c (mono_image_init): Move initialization of runtime_invoke
7614         caches to marshal.c.
7615
7616         * marshal.c (get_cache): New helper function to lazily initialize a 
7617         wrapper cache.
7618         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
7619
7620         * debug-helpers.c (mono_method_full_name): Include generic arguments.
7621
7622 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
7623
7624         * loader.c: fixed check for interface type.
7625
7626 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
7627
7628         * appdomain.c: check for NULL setup before it's referenced.
7629
7630 p
7631 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7632
7633         * class.c: remove the unused old vtable setup code.
7634
7635 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
7636
7637         * class.c: don't depend on interface order in
7638         setup_interface_offsets (bug #435777).
7639         * reflection.c: sort the InterfaceImpl table (patch from
7640         Jb Evain  <jbevain@novell.com>).
7641
7642 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7643
7644         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
7645         the low level assemblies lock.
7646
7647 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
7648
7649         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
7650         object.c, reflection.c, socket-io.c, threads.c: introduced
7651         mono_framework_version () to return the major framewrok version,
7652         changed the code that was using more complex patterns to use it.
7653         Return the correct value for PlatformID for OSX.
7654
7655 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
7656
7657         * icall-def.h, process.h, process.c: added an icall to get info about
7658         processes using mono-proclib.
7659
7660 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
7661
7662         * mono-perfcounters.c: use the mono-proclib functions to
7663         access process information.
7664
7665 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
7666
7667         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
7668         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
7669         reflection.c: remove rawbuffer usage: mmap support is more sanely
7670         provided by utils/mono-mmap.
7671
7672 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
7673
7674         * gc.c: use posix semaphores when possible so that
7675         mono_gc_finalize_notify() is signal safe.
7676
7677 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
7678
7679         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
7680         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
7681         be #ifdef-ed out, the linker will remove the rest.
7682
7683         * marshal.c: Implement DISABLE_COM.
7684
7685         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
7686
7687 2008-10-11  Miguel de Icaza  <miguel@novell.com>
7688
7689         * locales.c (string_invariant_compare_char): Optimization: do not
7690         call g_unichar_type unless we actually need the information.
7691
7692 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7693
7694         * object.c, class-internals.h: Also create remoting trampolines
7695         for generic methods.  Pass the domain to the remoting trampoline
7696         creation function, too.
7697
7698 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7699
7700         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
7701
7702 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7703
7704         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
7705         Vector4ui.
7706
7707 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
7708
7709         * assembly.c:
7710         * locales.c: remove the use of g_strdown. Fixes bug #322313.
7711
7712 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
7713
7714         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
7715         for the least possible amount of time (extending the fix in r113458).
7716
7717 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7718
7719         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
7720
7721 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7722
7723         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
7724         as possible simd intrinsic types.
7725         Optimized the test to check for the common prefix first.
7726
7727 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
7728
7729         * class.c: back out part of a broken optimization committed on
7730         May 23th (bug #433908).
7731
7732 2008-10-09  Mark Probst  <mark.probst@gmail.com>
7733
7734         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
7735         Win32.  Should fix #432388 for most cases until we have the new
7736         profiler on Win32.
7737
7738 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7739
7740         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
7741         instead of using inst->id so the hash is stable for AOT.
7742
7743 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
7744
7745         * appdomain.c:
7746         * icall.c: create a .ini file for shadow-copied assemblies that
7747         contains the location of the original assembly. Use this to return the
7748         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
7749         Also fix the number of '/' for windows when returning the CodeBase.
7750         Fixes bug #430920.
7751
7752 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7753
7754         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
7755
7756         Code is contributed under MIT/X11 license.
7757
7758 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7759
7760         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
7761           if if the class vtable needs initialized.
7762
7763         Code is contributed under MIT/X11 license.
7764
7765 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7766
7767         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
7768           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
7769           STRING->BSTR, and CLASS->INTERFACE.
7770
7771         Code is contributed under MIT/X11 license.
7772
7773 2008-10-07  Marek Habersack  <mhabersack@novell.com>
7774
7775         * sysmath.h: changed the declaration of the
7776         ves_icall_System_Math_Round2 icall by adding an extra
7777         away_from_zero parameter.
7778
7779         * sysmath.c (ves_icall_System_Math_Round2): added support for
7780         away from zero rounding. The icall now takes an extra boolean
7781         parameter to signal that away from zero operation is requested.
7782
7783 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7784
7785         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
7786         the delegate klass so it can work with full-aot.
7787         (mono_marshal_get_delegate_end_invoke): Ditto.
7788         (mono_marshal_get_delegate_invoke): Ditto.
7789
7790 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
7791
7792         * gc.c, attach.h, attach.c: remove a bad pattern:
7793         add_finalizer_callback () is not implemented correctly, it can't
7794         without adding more overhead to the finalizer loop and it's not
7795         even needed, since we know exactly what we need to call, so there is
7796         no need to do so through an expensive function pointer.
7797
7798 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
7801         for the no-gc case.
7802         * attach.c (mono_attach_init): Remove the #ifdef.
7803
7804 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
7805
7806         * attach.c (mono_attach_init): Don't use
7807         mono_gc_add_finalizer_thread_callback when compiling without GC.
7808         Fixes #432306.
7809         
7810         Code is contributed under MIT/X11 license.
7811
7812 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7813
7814         * class.c (mono_class_create_from_typedef): Remove the 
7815         #ifndef DISABLE_SIMD stuff.
7816
7817 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7818
7819         * class-internals.h (MonoClass): Added simd_type bit field.
7820
7821         * class.c (mono_class_create_from_typedef): Check if type is a simd
7822         intrinsic.
7823
7824 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7825
7826         * object.c (mono_method_add_generic_virtual_invocation): Only add
7827         instantiations to the thunk whose count is at least as large as
7828         the threshold.
7829
7830 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
7831
7832         * icall.c: changed the Type of the exception thrown when trying to
7833         invoke a constructor on an abstract class. Part of the fix for bug
7834         #324185.
7835
7836 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7837
7838         * class.c, class-internals.h (mono_method_get_vtable_index): New
7839         function which returns the index into the vtable and properly
7840         handles inflated virtual generic methods.
7841
7842 2008-10-01  Mark Probst  <mark.probst@gmail.com>
7843
7844         * object.c, domain.c, object-internals.h, domain-internals.h:
7845         Generalize IMT thunk machinery to also handle thunks for virtual
7846         generic method invokes.  When a virtual generic method is invoked
7847         more than a number of times we insert it into the thunk so that it
7848         can be called without lookup in unmanaged code.
7849
7850         * generic-sharing.c, class-internals.h: Fetching a
7851         MonoGenericInst* for a method from an (M)RGCTX.
7852
7853 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
7854
7855         * marshal.c (emit_marshal_string): Applied a variant of a patch by
7856         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
7857         marshalling. Fixes #431304.
7858
7859 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
7860
7861         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
7862           handle when ref is specified without In or Out.
7863
7864         Code is contributed under MIT/X11 license.
7865
7866 2008-09-30  Mark Probst  <mark.probst@gmail.com>
7867
7868         * loader.c (mono_get_method_constrained): Don't expand method with
7869         the class's context, because it's already a method of that class.
7870
7871 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
7872
7873         * attach.c : should be correct build fix.
7874
7875 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * attach.c: Fix the previous change.
7878
7879 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
7880
7881         * attach.c : quick w32 build fix.
7882
7883 2008-09-27  Miguel de Icaza  <miguel@novell.com>
7884
7885         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
7886         crashes MonoDevelop: #430455.
7887
7888 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7889
7890         * domain-internals.h (struct _MonoDomain): Move most fields used only by
7891         the JIT do MonoJitDomainInfo in ../mini/mini.h.
7892
7893         * domain.c: Remove initialization/cleanup of the removed fields.
7894
7895 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7896
7897         * class.c (mono_class_generic_sharing_enabled): Enable generic
7898         code sharing for PPC.
7899
7900 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
7901
7902         * attach.c : Fixing the Windows builds.
7903
7904         Code is contributed under MIT/X11 license.
7905
7906 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7907
7908         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
7909         the default generic sharing mode to 'all'.
7910
7911 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7912
7913         * generic-sharing.c, class-internals.h: New function for checking
7914         whether a method needs a static RGCTX invoke wrapper.  A few
7915         funtions moved from mini/generic-sharing.c.
7916
7917         * icall.c: New function used.
7918
7919 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7920
7921         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
7922         Static RGCTX invoke wrapping applies to value type methods, too.
7923
7924         * class.c (mono_class_setup_vtable_general): In generic-shared
7925         value types, wrap methods with a static RGCTX invoke wrapper.
7926
7927 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7928
7929         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
7930         osx build.
7931
7932 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
7935         register a callback which is called when the finalizer thread is woken
7936         up.
7937         (finalizer_thread): Call the callback if it exists.
7938
7939         * attach.h attach.c: New files, implementing the attach mechanism.
7940
7941         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
7942         
7943         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
7944         by the previous change.
7945
7946 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
7947
7948         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
7949         loader.c, marshal.c, metadata-internals.h, metadata.c,
7950         method-builder.c, object.c, reflection.c: introduced specific functions
7951         to allocate from the domain and image mempools and cleaned up most of
7952         the code to use them (still missing a few in reflection.c).
7953         Keep the loader bytes counter updated.
7954
7955 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
7956
7957         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
7958         loader-related counters.
7959
7960 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
7961
7962         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
7963         added more MS-compatible counters.
7964
7965 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
7966
7967         * class.c (mono_class_setup_fields): Call setup_fields before accessing
7968         class->blittable. Fixes #428217.
7969
7970 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * reflection.c (mono_image_get_field_on_inst_token): Call 
7973         field_encode_signature () since that handles custom modifiers too.
7974         Fixes #424663.
7975
7976 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
7977
7978         * reflection.c (add_custom_modifiers): New helper function to merge custom
7979         modifiers stored in objects to a MonoType.
7980         (fieldref_encode_signature): Encode custom modifiers.
7981         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
7982         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
7983
7984 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
7985
7986         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
7987         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
7988         64-bit IL only images because imports are not resolved for IL only images.
7989         Special thanks to Bill Holmes for finding this bug and testing the patch.
7990         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
7991
7992         Contributed under MIT/X11 license.
7993
7994 2008-09-19  Miguel de Icaza  <miguel@novell.com>
7995
7996         * mono-config.c (dllmap_start): Add support for the bits keyword
7997         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
7998
7999 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8000
8001         * reflection.c (inflate_mono_method): When the class the method is
8002         to be inflated for is itself not inflated, just return the method.
8003
8004 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
8005
8006         * mono-perfcounters.c: use more user friendly process instance names.
8007
8008 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
8009
8010         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
8011           handle "[in] ref" and "[in][out] ref" cases.
8012
8013         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
8014           to mono_mb_create_method.  This was causing problems calling native to
8015           managed passing Variants by value.
8016
8017         Code is contributed under MIT/X11 license.
8018
8019 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
8020
8021         * class.c (can_access_internals): Call mono_assembly_load_friends ()
8022         before accessing the friend_assembly_names field.
8023
8024         * assembly.c (mono_assembly_load_friends): Make this callable multiple
8025         times.
8026         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
8027         called lazily when it is needed.
8028
8029         * metadata-internals.h (struct _MonoAssembly): Add 
8030         'friend_assembly_names_inited' flag.
8031
8032 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
8033
8034         * mono-perfcounters-def.h: fix the types of a few counters.
8035         * mono-perfcounters.c: implemented the instance names getter
8036         and a few bugfixes.
8037
8038 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
8039
8040         * culture-info-table.h : regenerated.
8041
8042 2008-09-17  Robert Jordan  <robertj@gmx.net>
8043
8044         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
8045         context bound objects. Fixes #415577.
8046
8047         Code is contributed under MIT/X11 license.
8048
8049 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
8050
8051         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
8052         implementation (bug #423582).
8053
8054 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
8055
8056         * object.c (mono_object_get_virtual_method): Handle the case method->slot
8057         is not set. Fixes #426309.
8058
8059 2008-09-16  Jb Evain  <jbevain@novell.com>
8060
8061         * class.c (mono_class_from_name): fix the exported type look up
8062         when the type is defined in a referenced assembly.
8063
8064 2008-09-16  Jb Evain  <jbevain@novell.com>
8065
8066         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
8067         increment the next index counter on each iteration to make that work
8068         for more than one type forwarder. Unmanaged part to fix #422929.
8069
8070 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8071
8072         * object-internals.h: enum ComInterfaceType in
8073         MonoInterfaceTypeAttribute is guint32, not guint16.
8074
8075 2008-09-12  Mark Probst  <mark.probst@gmail.com>
8076
8077         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
8078         writing code.
8079
8080 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8081
8082         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
8083         not gboolean.
8084
8085 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8086
8087         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
8088         Endianness fixes for MonoSymbolFileOffsetTable.
8089
8090 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
8091
8092         * process.c (complete_path) : Removing quotes from the 
8093           input path.  The glib file routines do not handle file paths
8094           that have quotes around them.
8095
8096         Code is contributed under MIT/X11 license.
8097
8098 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
8099
8100         * socket-io.h : Adding a comment to provide locations where 
8101           changes to MonoSocketAsyncResult need to be synced.
8102
8103         Code is contributed under MIT/X11 license.
8104
8105 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
8106
8107         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
8108         parameters as well. Fixes #425001.
8109
8110 2008-09-08  Miguel de Icaza  <miguel@novell.com>
8111
8112         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
8113         windows build.
8114
8115 2008-09-07  Miguel de Icaza  <miguel@novell.com>
8116
8117         * console-io.c: Add support for tracking the window size if it
8118         changes.
8119
8120         The setup is very simple: the TtySetup function will now return a
8121         pointer to a location in memory that tracks the current console
8122         size.  The managed code checks its current value every time its
8123         queried against the last value set, and updates accordingly.
8124
8125         With this setup we can work with multiple consoles, and we do not
8126         require to poke into managed code from a signal handler.
8127
8128         Additionally, the environment for COLUMNS and LINES is now handled
8129         in unmanaged code.
8130
8131         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
8132
8133 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8134
8135         * marshal.c (mono_type_native_stack_size): Treat
8136         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
8137
8138 2008-09-04  Jb Evain  <jbevain@novell.com>
8139
8140         * class.c (mono_class_is_assignable_from): fix assignability of nullables
8141         to nullables.
8142
8143 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
8144
8145         * verify.c (verify_type_compatibility_full): Revert change
8146         to allow converting a native int to unmanaged pointer be verifiable
8147         under non-strict mode.
8148         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
8149
8150         * verify.c: Added some TODOs.
8151
8152 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
8153
8154         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
8155           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
8156           Changed to use GlobalAlloc for the memory returned on Windows platforms.
8157
8158         Code is contributed under MIT/X11 license.
8159
8160 2008-09-02  Jb Evain  <jbevain@novell.com>
8161
8162         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
8163
8164 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
8165
8166         reflection.c (typebuilder_setup_fields): Handle classes with
8167         explicit size.
8168
8169 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
8170
8171         class.c (mono_class_setup_events): Add memory barrier due to
8172         double checked locking.
8173         
8174         class.c (mono_class_setup_properties): Same.
8175
8176 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8177
8178         * class.c (mono_class_is_assignable_from): Fix the build.
8179         
8180         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
8181         before accessing klass->interface_bitmap. Fixes #421744.
8182
8183 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8184
8185         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
8186         the runtime into no-exec mode, useful when running the AOT compiler.
8187
8188         * appdomain.c gc.c object.c: Avoid executing managed code when running
8189         in no-exec mode.
8190         
8191         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
8192
8193         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
8194         special case when the mono_assembly_loaded () returns NULL because the 
8195         search hook is not installed.
8196
8197 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8198
8199         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
8200         crashes in bstr marshalling on linux.
8201
8202 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8203
8204         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
8205         with more than one parameter.
8206
8207 2008-08-24  Miguel de Icaza  <miguel@novell.com>
8208
8209         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
8210         start/stop flow control as well when turning off ICANON (allows
8211         C-s and C-q to be read by Console.ReadKey).
8212
8213 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8214
8215         * class.c (mono_class_init): Move the initialization of nested classes
8216         into mono_class_get_nested_types (). Fixes #418433.
8217
8218         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
8219         flag.
8220
8221         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
8222         iterating tough the nested classes of a class.
8223
8224 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
8227         on arm.
8228
8229 2008-08-22  Miguel de Icaza  <miguel@novell.com>
8230
8231         * console-io.c (sigcont_handler): Support signal chaining for
8232         SIGCONT.
8233
8234         (console_set_signal_handlers): Use best practices with sigaction,
8235         clear the structure before using it. 
8236
8237 2008-08-22  Robert Jordan  <robertj@gmx.net>
8238
8239         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
8240         Fix the Windows build.
8241
8242 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8243
8244         * class.c (mono_class_generic_sharing_enabled): Make the default
8245         sharing mode 'corlib'.
8246
8247 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8248
8249         * console-io.c (console_set_signal_handlers): Fix a warning.
8250
8251         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
8252         method normally, the JIT will take care of avoiding recursion.
8253
8254 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8255
8256         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
8257
8258         Code is contributed under MIT/X11 license.
8259
8260 2008-08-20  Miguel de Icaza  <miguel@novell.com>
8261
8262         * console-io.c (sigcont_handler): We need to restore the entire
8263         termios state, not only the original settings, as things like echo
8264         can be controlled after this (Booish exposes this issue with its
8265         own ReadLine implementation).
8266
8267         Additionally, we need to set the terminal back into keypad_xmit
8268         mode.
8269         
8270         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
8271         string as a paramter as well.   Otherwise we get different
8272         keyboard sequences.
8273
8274 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8275
8276         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
8277         delegates with byref out parameter passing. Fixes #351520.
8278
8279         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
8280         a generic context.
8281         (mono_type_get_desc): Add the type arguments for GENERICINST.
8282         (mono_method_full_name): Stringify the class name using mono_type_full_name
8283         so it picks up generic arguments.
8284
8285 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
8286
8287         * console-io.c: Removed debug output.
8288
8289 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
8290
8291         reflection.c (mono_reflection_create_runtime_class): Alloc
8292         the nested classes linked list using the dynamic image mempool.
8293         Fixes leak in corlib compilation.
8294
8295 2008-08-19  Miguel de Icaza  <miguel@novell.com>
8296
8297         * console-io.c: Fix incredibly annoying behavior on the console
8298         after resuming execution after control-z.   This affected every
8299         console application.
8300
8301 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
8302
8303         * mempool-internals.h: Header for mono private mempool functions. The first
8304         two function are for allocating glib linked lists using pools.
8305
8306         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
8307
8308         * Makefile.am: Added mempool-internals.h.
8309
8310 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
8311
8312         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
8313         (mono_domain_free): Ditto.
8314
8315         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
8316         be used by the JIT to store its domain-specific information, instead of putting
8317         it directly into MonoDomain.
8318
8319         * domain.c (mono_install_create_domain_hook): New helper function to install
8320         a hook which initializes domain->runtime_info.
8321
8322         * domain.c (mono_install_free_domain_hook): Ditto.
8323         
8324 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
8325
8326         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
8327         asserting if the ares parameter is null.
8328
8329         * mono-perfcounters.c: Fix warnings.
8330
8331         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
8332         is not needed, don't check for interruptions either.
8333         (mono_marshal_get_delegate_end_invoke): Ditto.
8334
8335 2008-08-15  Marek Habersack  <mhabersack@novell.com>
8336
8337         * mono-perfcounters.c (predef_readonly_counter): added support for
8338         reading the ASP.NET Requests Queued counter from another process.
8339
8340 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8341
8342         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
8343         MonoImage to simplify the AOT code.
8344
8345 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
8346
8347         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
8348         marshalling. Fixes #416078.
8349
8350 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8351         
8352         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
8353         it is set, looking up the icall address is deferred to the JIT, since 
8354         in embedded scenarios, the icall might not be registered in the runtime
8355         doing the AOT compilation. Backported from the 2.0 branch.
8356
8357 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8358
8359         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
8360         Fixes #415621.
8361
8362 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8363
8364         * Makefile.am: added support for cross-compilation.
8365
8366 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
8367
8368         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
8369
8370 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
8371
8372         * mono-perfcounters.c: jitted methods and jitted bytes counters.
8373
8374 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
8375
8376         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
8377         mono-perfcounters.c: performance counters implementation.
8378
8379 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
8380
8381         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
8382         to gpointer, letting the AOT code decide what to store in it.
8383
8384 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
8385
8386         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
8387           mono_class_setup_methods if the methods are not initialized.
8388
8389         Code is contributed under MIT/X11 license.
8390
8391 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
8392
8393         * verify.c: Remove some debug code I commited by accident.
8394
8395         * verify.c (mono_method_is_valid_in_context): Change the return value
8396         to make possible to distinguish between invalid and unverifiable.
8397
8398         * verify.c (verifier_load_method): Don't return NULL for unverifiable
8399         methods.
8400
8401 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
8402
8403         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
8404         constraints. Fixes regression in gtest-253.
8405
8406 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
8407
8408         * verify.c (mono_verifier_verify_class): Don't allow generic types
8409         with explicit layout.
8410
8411         * verify.c (mono_method_verify): Check locals and argument types.
8412
8413 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8414
8415         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
8416         wait if the thread is in StopRequested state.
8417
8418         * class.c (mono_class_from_name): Refactor the module searching code into
8419         a separate function so it can be reused in the AOT case too.
8420
8421 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
8422
8423         * verify.c (mono_type_is_valid_in_context): Improve the error message.
8424         Check both the type and it's generic type definition for loader errors.
8425         
8426         * verify.c (mono_method_is_valid_in_context): Don't generate another
8427         error when a type errors occur, this leads to the wrong exception been
8428         thrown.
8429
8430 2008-07-28  Dick Porter  <dick@ximian.com>
8431
8432         * icall-def.h
8433         * process.c
8434         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
8435         New internal calls to duplicate and close a process handle.
8436
8437 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
8438
8439         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
8440
8441 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
8444
8445 2008-07-27  Robert Jordan  <robertj@gmx.net>
8446
8447         * class.c (mono_class_init): Don't compute class.has_finalize for
8448         valuetypes. Fixes #412477.
8449
8450 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
8451
8452         * verify.c: Implement constraint equivalence checking.
8453         This is required when a generic parameter is used as
8454         argument to a constrained one.
8455
8456         Fixes #410637.
8457
8458 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8459
8460         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8461
8462         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
8463
8464         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
8465         synch with managed object layout.
8466
8467 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
8468
8469         * verify.c (do_branch_op): Handle valuetypes and generic
8470         arguments properly.
8471
8472         * verify.c (do_cmp_op): Same.
8473
8474         Fixes #410383.
8475
8476 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8477
8478         * generic-sharing.c: Fix memory leaks.
8479
8480         * class.c, class-internals.h: Make
8481         mono_class_inflate_generic_type_with_mempool() non-static.
8482
8483 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
8484
8485         * pedump.c (dump_verify_info): Dump full class name.
8486
8487 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8488
8489         * generic-sharing.c: Removed some old code that didn't do anything.
8490
8491 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
8492         * profiler.c: Added runtime_initialized_event,
8493         mono_profiler_install_runtime_initialized and
8494         mono_profiler_runtime_initialized. This new hook tells the profiler
8495         when the runtime is sufficiently initialized to be able to call
8496         mono_thread_attach on the root appdomain.
8497         * profiler.h, profiler-private.h: Likewise.
8498
8499 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
8500
8501         * verify.c (do_cast): Do boxing for generic arguments as well.
8502
8503         * class.c (is_nesting_type): Drop generic instantiations before
8504         checking for nesting.
8505
8506         * class.c (can_access_instantiation): Allow access to generic
8507         arguments.
8508
8509 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
8510
8511         * verify.c (verify_class_for_overlapping_reference_fields):
8512         On some cases, the field size might be zero, guard against that.
8513         Fix the explicit layout check to work as expected.
8514
8515 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8516
8517         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
8518         mono_thread_resume () during shutdown, since the thread we want to abort
8519         might be suspended.
8520
8521 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
8524         warning.
8525
8526         * debug-mono-symfile.c: Fix a warning.
8527
8528         * mono-perfcounters.c (get_cpu_times): Fix a warning.
8529
8530         * object.c (mono_class_vtable): Check if exception_type is set, and return
8531         NULL as defined by the function comments.
8532
8533 2008-07-22  Mark Probst  <mark.probst@gmail.com>
8534
8535         * mempool.c: Use malloc for every single mempool allocation if the
8536         configure option is set.  This makes it easier to track mempool
8537         allocations with tools like Valgrind.
8538
8539 2008-07-22  Jb Evain  <jbevain@novell.com>
8540
8541         * reflection.c (create_dynamic_mono_image): emit the same
8542         metadata version that SL2 does when creating a SL2 image.
8543
8544 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
8545
8546         * icall-def.h:
8547         * icall.c: New icall System.Enum:get_hashcode. This function
8548         avoids the overhead of boxing the enum to the underlying type.
8549
8550 2008-07-21  Mark Probst  <mark.probst@gmail.com>
8551
8552         * reflection.c (mono_method_get_object): Don't let static RGCTX
8553         invoke wrappers get into MonoReflectionMethods.
8554
8555 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
8556
8557         * object-internals.h:
8558         * object.c: New mono_runtime_class_init_full function
8559         that makes throwing the exception optinal.
8560
8561         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
8562         for the case where the exception object is supplied.
8563
8564 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
8565
8566         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
8567         old ld versions.
8568
8569         Contributed under MIT/X11 license.
8570
8571 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
8572
8573         * string-icalls.c (ves_icall_System_String_InternalSplit):
8574         Optimize array allocation by caching the MonoClass of the
8575         array type.
8576
8577         * icall.c (ves_icall_Type_GetMethodsByName): Same.
8578
8579         * reflection.c (mono_param_get_objects): Same.
8580
8581 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
8582
8583         * icall-def.h:
8584         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
8585         It inflates the given type using the class context.
8586
8587 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
8588
8589         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
8590         the vtable if it already exists.
8591
8592         * object-internals.h: Add mono_class_try_get_vtable as part of the
8593         internal API.
8594
8595         * reflection.c (mono_type_get_object): Use the MonoObject from the
8596         vtable when possible. Reduces locking contention on reflection heavy
8597         code.
8598
8599 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
8600
8601         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
8602         g_bit_nth_msf () since that macro is not implemented in eglib.
8603
8604 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
8605
8606         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
8607         on platforms which do not support it.
8608
8609 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8610
8611         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
8612
8613 2008-07-11  Martin Baulig  <martin@ximian.com>
8614
8615         * mono-debug-debugger.h
8616         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
8617
8618         * mono-debug-debugger.c
8619         (_mono_debugger_interruption_request): New global volatile variable.
8620         (mono_debugger_check_interruption): New public function.
8621
8622         * threads.c
8623         (mono_thread_current_check_pending_interrupt): Call
8624         mono_debugger_check_interruption().
8625         (mono_thread_interruption_checkpoint_request): Likewise.
8626
8627 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
8628
8629         * verify.c: Add more type checks for loaded types. Verify the result
8630         handle from ldtoken.
8631
8632 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
8633
8634         * loader.c (field_from_memberref): Don't crash if the field
8635         wasn't found.
8636
8637 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
8638
8639         * verify.c: Verify if type and method instantiations
8640         don't have invalid VAR or MVAR arguments.
8641
8642 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
8643
8644         * verify.c: Fix double free of function pointer list.
8645
8646 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
8647
8648         * object.c (mono_string_to_utf8): Comment the new code as it
8649         breaks under eglib.
8650
8651 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
8652
8653         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
8654
8655 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8656
8657         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
8658           is not throw too many times.
8659
8660         Code is contributed under MIT/X11 license.
8661
8662 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8663
8664         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
8665         debugging is turned off.
8666
8667 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8668
8669         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
8670
8671 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8672
8673         * class-internals.h, class.c: Added new generic sharing option:
8674         Share only stuff in System.Collections.Generic, which is now the
8675         default.
8676
8677 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8678
8679         * generic-sharing.c, class-internals.h: New function for getting a
8680         generic method in a generic class given the corresponding method
8681         for a different instantiation of the class.  Partly refactored
8682         from mini-trampolines.c.
8683
8684         * class.c: Make sure generic methods have a class_inst if they are
8685         part of a generic class.
8686
8687         * metadata.c (mono_type_stack_size_internal): Handle type
8688         variables.
8689
8690 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8691
8692         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
8693         Signifies whether information on the this/vtable/mrgctx variable
8694         is available.
8695
8696 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8697
8698         * object.c, object-internals.h, icall.c: New function
8699         mono_delegate_ctor_with_method(), which does the same as
8700         mono_delegate_ctor(), but takes an explicit method argument
8701         instead of taking the method from the jit info.
8702
8703         * marshal.c: When creating a delegate with an inflated method take
8704         the "this" argument as the target class for the castclass.
8705
8706 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8707
8708         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
8709         mono_jit_info_table_find() to perform very badly in some cases.
8710
8711 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8712
8713         * icall.c (type_from_typename): Handle 'string'.
8714
8715         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
8716         wrappers into the wrapper_hash, since the key is not a MonoMethod.
8717
8718 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8719
8720         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
8721
8722         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
8723         number of available managed allocator types.
8724
8725         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
8726         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
8727
8728 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
8729
8730         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
8731         which is a low level lock protecting just the 'jit_code_hash' hash table.
8732
8733         * domain.c: Initialize+cleanup jit_code_hash_lock.
8734         
8735 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
8736
8737         * coree.c (mono_load_coree): Set coree_module_handle global variable only
8738         after initialization.
8739
8740         * coree.h: Make MonoFixupExe internal.
8741
8742         Contributed under MIT/X11 license.
8743
8744 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
8745
8746         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
8747         because that is platform independent. Check NumberOfRvaAndSizes in PE32
8748         as well.
8749         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
8750         image being loaded is a CLI image and _CorValidateImage gets called.
8751
8752         * coree.h: Add MonoLoadImage.
8753
8754         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
8755         instead of LoadLibrary.
8756
8757         Contributed under MIT/X11 license.
8758
8759 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
8760
8761         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
8762         for any primitive type.
8763
8764 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
8765
8766         * object.c (mono_array_new_specific): Optimize this and the other allocation
8767         functions a bit.
8768         
8769         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
8770         domains too if mono_dont_free_domains is set.
8771
8772         * domain-internals.h (mono_dont_free_domains): New internal option controlling
8773         whenever to free appdomain data after it has been unloaded.
8774
8775         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
8776         
8777 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
8778
8779         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
8780         (mono_method_get_equivalent_method): Fix a warning.
8781
8782         * object.c (mono_message_init): Avoid looking up array types for each call.
8783
8784 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
8785
8786         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
8787         call.
8788
8789         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
8790         even more.
8791
8792         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
8793         each iteration.
8794
8795         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
8796         fields of an enum.
8797
8798 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
8799
8800         * object.c (mono_value_box): Fix boxing of nullables.
8801
8802 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
8803
8804         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
8805         mono_module_handle that is defined by the linker; no initialization required.
8806         * coree.h: Remove mono_module_handle, add __ImageBase, update
8807         mono_image_open_from_module_handle.
8808         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
8809         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
8810         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
8811         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
8812         to 4 GB away from image base address. IA64 version is not tested but was very
8813         easy to implement and should work if we ever need it.
8814         * domain.c (mono_init_internal): Avoid system error message boxes.
8815         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
8816         with has_entry_point. Handle do_mono_image_load fauilre correctly.
8817         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
8818         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
8819         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
8820
8821         Contributed under MIT/X11 license.
8822
8823 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
8824
8825         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
8826         as part of the private mono API.
8827         
8828         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
8829         Do proper argument checking for methods that belong to generic classes.
8830         Do proper type resolution for GMFH/2.
8831         Fixes #377324.
8832         
8833 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
8834
8835         * verify.c (do_switch): Fix a memory corruption bug with
8836         the jump index is out of bound.
8837
8838 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
8839
8840         * verify.c: Disable debug code.
8841
8842 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
8843
8844         * reflection.c (mono_image_get_methodbuilder_token): Use
8845         mono_image_get_methodspec_token_for_generic_method_definition
8846         instead of mono_image_get_memberref_token. We cache more memberef
8847         entries now.
8848
8849 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
8850
8851         * verify.c: Inflate exception clause types.
8852         Fixes #402606.
8853         
8854 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
8855
8856         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
8857         name.
8858
8859         * reflection.c (mono_image_get_ctorbuilder_token): Same.
8860
8861         * reflection.c (mono_image_create_method_token): Same.
8862
8863 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
8864
8865         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
8866         It does the same as mono_image_get_methodref_token but works on
8867         MethodBuilder.
8868
8869         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
8870         and always generate a methodspec. This follows the old behavior and fixes
8871         the regressions in System.Core. 
8872
8873 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
8874
8875         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
8876         don't event mono_class_get () succeeds. Fixes #402182.
8877
8878 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
8879
8880         * metadata-internals.h: Added MonoDynamicImage::methodspec
8881         hashtable to store methodspec tokens created for MethodBuilders.
8882
8883         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
8884         MethodBuilders as open instantiations if a methodspec was requested.
8885
8886         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
8887
8888         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
8889
8890         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
8891
8892         Fixes bug #349190.
8893
8894 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
8895
8896         * loader.c (method_from_methodspec): Avoid crashing if the
8897         method lookup fails.
8898
8899 2008-06-20  Dick Porter  <dick@ximian.com>
8900
8901         * socket-io.c (get_socket_assembly): Cope with Moonlight network
8902         classes being in a different assembly.  Fixes bug 399184.
8903
8904 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
8905
8906         * loader.c (mono_loader_init): Make this callable multiple times.
8907         (mono_dllmap_insert): Call mono_loader_init () so this works even before
8908         the runtime is initialized. Fixes #401755.
8909
8910 2008-06-19  Dick Porter  <dick@ximian.com>
8911
8912         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
8913         Fixes bug 349688.
8914
8915 2008-06-19  Dick Porter  <dick@ximian.com>
8916
8917         * socket-io.c:
8918         * icall-def.h: Implement Socket generic Send() and Receive()
8919         methods.  Fixes bug 395168.
8920
8921 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
8922
8923         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
8924
8925         Contributed under MIT/X11 license.
8926
8927 2008-06-18  Martin Baulig  <martin@ximian.com>
8928
8929         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
8930         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
8931         set to 80.0.  The debugger <-> runtime interface is now frozen as
8932         well.   
8933
8934         * mono-debug.c
8935         (mono_debug_debugger_version): Bump to 4.
8936
8937 2008-06-18  Martin Baulig  <martin@ximian.com>
8938
8939         * debug-mono-symfile.c
8940         (load_symfile): Don't check the minor version.
8941
8942         * debug-mono-symfile.h: Bump the version number to 50.0.
8943
8944 2008-06-18  Martin Baulig  <martin@ximian.com>
8945
8946         * debug-mono-symfile.c
8947         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
8948         minimum required version.
8949
8950 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
8951
8952         * reflection.c (mono_custom_attrs_from_property): Fix support for
8953         retriveving cattrs of dynamic inflated generic types.
8954
8955         * reflection.c (mono_custom_attrs_from_event): Same.
8956
8957         * reflection.c (mono_custom_attrs_from_field): Same;
8958
8959         * reflection.c (typebuilder_setup_events): Same cattrs of events.
8960
8961         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
8962         Moved to metadata.c.
8963
8964         * metadata.c: New functions to retrive the equivalent field, event
8965         of property from the generic type definition.
8966
8967         * metadata-internals.h: Added new functions from metadata.c.
8968
8969 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
8970
8971         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
8972         to cached in a mempool is used.
8973
8974         * metadata.c (free_generic_class): In some situations field generic_info type
8975         is not properly dup'ed and leads to double free'ing.
8976
8977         Fixes #400643.
8978
8979 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8980
8981         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
8982         this arguments (will be needed later for generic methods).
8983         Collect stats.
8984
8985 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8986
8987         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
8988         Create a static RGCTX invoke wrapper for methods which require it.
8989
8990 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8991
8992         * object.c, class-internals.h: New function for checking whether
8993         an individual field is special static.
8994
8995 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
8996
8997         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
8998         linear search since the table is sorted.
8999
9000         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
9001         Fixes #324180.
9002
9003 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
9004
9005         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
9006         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
9007
9008         * gc.c (mono_domain_finalize): Allow an infinite timeout.
9009
9010         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
9011         
9012         * threads.c (mono_thread_request_interruption): Get rid of locking, use
9013         InterlockedCompareExchange to query and modify 
9014         thread->interruption_requested.
9015
9016         * object-internals.h (struct _MonoThread): Change interruption_requested
9017         to a gint32 so it can be modified by atomic operations. Add 
9018         'critical_region_level' from the managed side, change small_id to a guint32,
9019         add new set of 'unused' fields.
9020
9021         * appdomain.c: Bump corlib version.
9022
9023 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9024
9025         * class.c (mono_class_from_name): Search modules as well. Fixes
9026         #322332.
9027
9028 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9029
9030         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
9031         templates.  Templates are generalized with an additional type_argc
9032         argument.  RGCTX templates have type_argc==0, MRGCTX templates
9033         have type_argc>0.
9034
9035         * domain-internals.h, domain.c: New hash table for looking up
9036         MRGCTXs.
9037
9038         * metadata.c, metadata-internals.h: Rename hash and equal
9039         functions for MonoGenericInst's and make them public.
9040
9041         * class-internals.h: New data structures for the MRGCTX.  Macros
9042         for distinguishing slots in the RGCTX and the MRGCTX.
9043
9044 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9045
9046         * object.c (mono_method_get_imt_slot): Put the same methods of
9047         different instantiations of the same generic interface in the same
9048         IMT slots, to make generic sharing simpler.
9049
9050 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
9051
9052         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
9053
9054         * metadata.c (mono_metadata_field_info_with_mempool): Added.
9055         This function works just like mono_metadata_field_info, but
9056         accept a mempool as argument to be used allocating memory.
9057
9058         * marshal.c (mono_marshal_load_type_info): Use new function
9059         to load marshal data into image mempool.
9060
9061 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
9062
9063         * class.c (mono_class_inflate_generic_type_with_mempool):
9064         This function allows to inflate a generic type using
9065         a mempool.
9066
9067         * class.c (inflate_generic_type): Take a mempool as argument
9068         and use it to do type dup'ing.
9069
9070         * class.c (mono_class_setup_fields): Field type for generic
9071         generic classes are allocated from the image mempool.
9072
9073         * metadata.c (free_generic_class): Inflated field type is
9074         now allocated in the image mempool.
9075
9076 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
9077
9078         * threads.c (thread_cleanup): Free MonoThread::name.
9079
9080 2008-06-12  Marek Habersack  <mhabersack@novell.com>
9081
9082         * appdomain.c (ensure_directory_exists): avoid unnecessary
9083         mkdir(2) calls when the shadow directory already exists.
9084         (mono_make_shadow_copy): copy also satellite assemblies from the
9085         private bin directories.
9086
9087 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
9088
9089         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
9090         
9091         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
9092         a page boundary. Fixes #396219.
9093
9094 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9095
9096         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
9097         due to double-checked locking.
9098
9099 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9100
9101         * assembly.c (build_assembly_name): Release memory on failure.
9102
9103         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
9104
9105 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9106
9107         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
9108         memory on failure.
9109
9110 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9111
9112         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
9113         memory on failure.
9114
9115 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9116
9117         * loader.c (field_from_memberref): Check if field signature type is equal
9118         to the non-inflated type of the field. Fixes #398980.
9119
9120 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
9121
9122         * assembly.c (mono_assembly_load_from_full): Call 
9123         mono_assembly_load_friends () outside the assemblies lock, since it can
9124         acquire the loader lock. Fixes #323696.
9125
9126         * reflection.c (resolve_object): Inflate the inst with the context for
9127         FieldOnTypeBuilderInst. Fixes #399010.
9128
9129 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9130
9131         * reflection.c (mono_image_get_field_on_inst_token): Don't
9132         inflate the field to encode it's signature. If it's a
9133         VAR or MVAR it should stay that way in the signature.
9134         Fixes #399047.
9135
9136 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * reflection.c (resolve_object): Release memory of inflated types.
9139
9140 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9141
9142         * loader.c (mono_method_get_signature_full): Remove assert about
9143         loading a methodspec to a generic method. We have such methods, such as
9144         System.Threading.Interlocked::CompareExchange<T>.
9145         This assert was removed since it crashes the verifier when it checks
9146         methods calling CompareExchange<T>.
9147
9148 2008-06-10  Marek Safar  <marek.safar@gmail.com>
9149
9150         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
9151         of Type array and not MonoType.
9152
9153 2008-06-10  Marek Habersack  <mhabersack@novell.com>
9154
9155         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
9156         <lupus@ximian.com>
9157
9158 2008-06-10  Martin Baulig  <martin@ximian.com>
9159
9160         * debug-mono-symfile.h
9161         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
9162         changes to the file format, but we were generating incorrect
9163         source file indices in the line number table due to a bug, which
9164         made backtraces report an incorrect source file.
9165
9166 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
9167
9168         * mono-debug.c: Moved mono_debug_free_method_jit_info from
9169         mini/debug-mini.c to here.
9170
9171         * mono-debug.c (il_offset_from_address): Free memory from find_method.
9172
9173         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
9174         use it to release structs returned by mono_debug_find_method.
9175
9176 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
9179         since it needs to set method->slot for all interface methods.
9180
9181 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
9182
9183         * class-internals.h: Forgot to add.
9184
9185 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
9186
9187         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
9188
9189         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
9190         Lookup the custom attributes from property_hash.
9191
9192         * reflection.c (mono_save_custom_attrs): Save the custom attributes
9193         in property_hash. Allocate all data using the image mempool.
9194
9195         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
9196         for dynamic_custom_attrs to checks if the image is dynamic.
9197
9198 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9199
9200         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
9201         assemblies array.
9202         
9203         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
9204         runtime functions while holding the domain assemblies lock.
9205
9206 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
9207
9208         * verify.c: Reapplied the last bit of the reverted changes.
9209
9210 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
9211
9212         * verify.c: Reapplied more of the reverted changes.
9213
9214 2008-06-09  Martin Baulig  <martin@ximian.com>
9215
9216         * debug-mono-symfile.c (load_symfile): Check the major version
9217         first; if it's wrong, don't print the minor version in the error message.
9218
9219 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9220
9221         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
9222         lock instead of the domain lock to avoid deadlocks, since the thread might
9223         already hold the loader lock.
9224
9225         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
9226         (mono_thread_attach): Ditto.
9227
9228         * monitor.c: Use a TLS variable for holding the current thread id instead
9229         of calling pthread_self ().
9230         (mono_monitor_init_tls): New internal function to initialize the TLS
9231         variable.
9232         (mono_monitor_try_enter_internal): Put the owner == id check after the
9233         owner == 0 check.
9234
9235         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
9236         missed optimizations when using gcc-4.3.
9237
9238 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
9239
9240         * reflection.c (mono_dynamic_image_free): Free the memory
9241         used by MonoGenericParam in MonoDynamicImage::gen_param.
9242
9243         * reflection.c (mono_reflection_setup_generic_class): Allocate
9244         container from mempool.
9245
9246         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
9247         container from mempool.
9248
9249 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9250
9251         * threads.c (mono_set_pending_exception): New internal function to set the
9252         pending exception of the current thread.
9253         (mono_thread_get_and_clear_pending_exception): Check for 
9254         thread->pending_exception as well.
9255
9256         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
9257
9258         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
9259         it can trigger a collection.
9260
9261 2008-06-06  Martin Baulig  <martin@ximian.com>
9262
9263         Merged the `debugger-kahalo' branch.
9264
9265         * mono-debug.h
9266         (MONO_DEBUGGER_VERSION): Bumped to 72.
9267
9268         * debug-mono-symfile.h
9269         (MonoSymbolFileMethodIndexEntry): Removed.
9270         (MonoSymbolFileMethodEntry): New public typedef.
9271         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
9272         (MonoSymbolFileSourceEntry): Remove everything except `index' and
9273         `data_offset'.
9274         (MonoSymbolFileMethodEntry): Removed.
9275         (MonoSymbolFileLexicalBlockEntry): Removed.
9276         (MonoSymbolFileLineNumberEntry): Removed.
9277         (MonoDebugLexicalBlockEntry): Removed.
9278         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
9279         removed `num_il_offsets' and `il_offsets'.
9280         (MonoSymbolFile): Replace `version' with `major_version' and
9281         `minor_version'.
9282         (MONO_SYMBOL_FILE_VERSION): Replace with
9283         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
9284         `MONO_SYMBOL_FILE_MINOR_VERSION'.
9285
9286         * debug-mono-symfile.c
9287         (mono_debug_symfile_lookup_location): Add support for the new line
9288         number table format.
9289
9290 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
9291
9292         * metadata.c (free_generic_class): Release the inflated
9293         MonoClass of dynamic generic classes if it's not a generic
9294         type definition.
9295
9296 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
9297
9298         * verify.c: Reapplied more of the reverted changes.
9299
9300 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
9301
9302         * reflection.c (lookup_custom_attr): Clean the cached flag or
9303         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
9304         for SRE types.
9305
9306 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
9307
9308         * verify.c: Reapplied a small part of the reverted changes.
9309
9310 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9311
9312         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
9313
9314         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
9315         previously in managed code.
9316         (mono_monitor_exit): Ditto.
9317         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
9318
9319         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
9320         the managed definition.
9321
9322 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
9323
9324         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
9325
9326 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9327
9328         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
9329         
9330         * monitor.c: Add some micro optimizations.
9331
9332         * icall.c (type_from_typename): Handle 'bool'.
9333
9334 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
9335
9336         * verify.c: Implement constructor verification per P III 1.8.1.4.
9337         Fixes #396716.
9338
9339 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9340
9341         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
9342         holding the assemblies lock here too.
9343
9344 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
9345
9346         * verify.c: Kill stack_top function.
9347
9348 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
9349
9350         * verify.c: Kill stack_get function.
9351
9352 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
9353
9354         * verify.c (mono_method_verify): Last change broke the build. Fixed.
9355
9356 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
9357
9358         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
9359         more reliable.
9360
9361         * verify.c (mono_method_verify): Inflate params and locals to avoid
9362         mismatch when checking for compatibility.
9363
9364 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
9365
9366         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
9367         Length prefix should be size in bytes. Fix bug #339530.
9368         
9369         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
9370         Length prefix should be size in bytes. Fix bug #339530.
9371
9372         Code is contributed under MIT/X11 license.
9373
9374 2008-06-05  Bill Holmes <billholmes54@gmail.com>
9375
9376         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
9377
9378         Contributed under MIT/X11 license.
9379
9380 2008-06-05  Martin Baulig  <martin@ximian.com>
9381
9382         * mono-debug-debugger.c
9383         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
9384
9385 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9386
9387         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
9388         while holding the assemblies lock to prevent deadlocks. Handle the case
9389         where the search hook returns NULL but the assembly was still loaded.
9390         Fixes #323696.
9391
9392         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
9393         modify domain state.
9394
9395 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
9396
9397         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
9398         * Makefile.am (pedump_LDADD): Post-process object files and
9399         add dtrace-generated object file, if necessary.
9400
9401         Code is contributed under MIT/X11 license.
9402
9403 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
9404
9405         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
9406
9407 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
9408
9409         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
9410
9411 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9412
9413         * threads.c: Try to free everything from the delayed free table
9414         when shutting down threads, and set the variable to NULL after the
9415         table is freed so that calling
9416         mono_thread_hazardous_try_free_all() when shutting down the root
9417         domain doesn't crash.
9418
9419 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
9420
9421         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
9422         the caller if resulting type was inflated.
9423
9424         * class.c (mono_class_create_from_typespec): Free the MonoType if it
9425         was inflated.
9426
9427         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
9428
9429
9430 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
9431
9432         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
9433         class library tests.
9434
9435         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
9436         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
9437         #396989.
9438
9439 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9440
9441         * domain.c, domain-internals.h: The JIT infos are now freed by the
9442         JIT info table code.  They are freed immediately if there only a
9443         single JIT info table in circulation.  If there is more, the free
9444         is delayed via a queue.
9445
9446         * threads.c, threads-types.h: New hazard pointer function for
9447         freeing all freeable delayed items in one sitting.
9448
9449 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
9450
9451         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
9452
9453         * reflection.c (typebuilder_setup_properties): Same.
9454
9455         * reflection.c (typebuilder_setup_events): Same.
9456
9457 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
9458
9459         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
9460         and use it for allocating memory.
9461
9462         * reflection.c (mono_marshal_spec_from_builder): Same.
9463
9464         * reflection.c: Change code to use new signatures.
9465
9466         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
9467
9468 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9469
9470         * decimal.c (rescale128): Put back one line which was accidently commented
9471         out.
9472         
9473         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
9474         to cause crashes.
9475
9476 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
9477
9478         * reflection.c (mono_reflection_generic_class_initialize): Name must
9479         be always malloc'ed so we can free it later on. Do this for field, property
9480         and event.
9481
9482         * metadata.c (free_generic_class): Free field, property and event names.
9483
9484 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
9485
9486         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
9487         instead of g_memdup.
9488
9489         * reflection.c (typebuilder_setup_fields): Same.
9490
9491 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9492
9493         * decimal.c (rescale128): Optimize this function a bit more.
9494
9495 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
9496
9497         * metadata.c (free_generic_class): Release some memory from
9498         SRE generic classes.
9499
9500 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
9501
9502         * reflection.c (mono_image_get_generic_field_token): No reference
9503         to name is kept, free it.
9504
9505         * reflection.c (mono_reflection_generic_class_initialize): Free
9506         more memory of the inflated field.
9507
9508 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9509
9510         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
9511         code.
9512
9513 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
9514
9515         * reflection.c (mono_dynamic_image_free): Release memory used by
9516         MonoDynamicImage::array_methods elements.
9517
9518         * reflection.c (assembly_add_win32_resources): Release memory after
9519         encoding.
9520
9521 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
9522
9523         * decimal.c (log2_32): Use an optimized version for this function too.
9524         
9525         * decimal.c (log2_64): Fix this on 32 bit machines.
9526
9527 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
9528
9529         * class.c (mono_dup_array_type): Implement allocation using a mempool.
9530
9531         * class.c (mono_metadata_signature_deep_dup): Same.
9532
9533         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
9534         a mempool.
9535
9536         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
9537
9538         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
9539
9540         * metadata-internals.h: Added mono_metadata_signature_dup_full.
9541
9542         * class-internals.h: Update signatures to take a MonoMemPool.
9543
9544 2008-06-02  Dick Porter  <dick@ximian.com>
9545
9546         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
9547         * icall-def.h: Add
9548         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
9549         FormatMessage API to get the error text.  Fixes bug 321827.
9550
9551 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
9552
9553         * decimal.c: Add some micro optimizations to make decimal operations faster.
9554
9555 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
9556
9557         * reflection.c (method_encode_clauses): Take a mempool
9558         as parameter and use it to allocate the clause array.
9559
9560         * reflection.c (mono_image_get_field_on_inst_token): Free
9561         the inflated type after encoding it.
9562
9563         * reflection.c (mono_dynamic_image_free): Free each element
9564         of MonoDynamicImage::gen_params.
9565
9566         * reflection.c (reflection_methodbuilder_to_mono_method):
9567         Allocate the generic param array from the mempool.
9568         Allocate signature params from the mempool.
9569
9570         * reflection.c (mono_reflection_generic_class_initialize):
9571         Free inflated fields after been used.
9572
9573 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
9574
9575         * icall.c: Reapply the memory leak fixes as they no
9576         longer make mono crash.
9577
9578 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
9579
9580         * reflection.c (mono_type_get_object): Don't store the suplied
9581         MonoType with type_hash. A caller which pass a type that
9582         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
9583         might end with a pointer to freed memory.
9584         The solution is to use byval_arg or this_arg from the associated
9585         MonoClass of the supplied type.
9586
9587 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
9588
9589         * icall.c: Revert the rest of the last change as it breaks the build too.
9590
9591 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
9592
9593         * icall.c: Revert a leak fix as it's breaking the build.
9594
9595 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
9596
9597         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
9598
9599 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
9600
9601         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
9602
9603 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
9604
9605         * icall.c: Fix some memory leaks.
9606
9607 2008-05-29  Dick Porter  <dick@ximian.com>
9608
9609         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
9610         async socket operations from the pending list when a socket
9611         closes.  Leaving it until the threadpool services the event
9612         exposes a race condition when a socket descriptor is reused.
9613         Fixes bug 377589.
9614
9615 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
9616
9617         * object.c: Fix negative index check for array alocation.
9618
9619 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
9620
9621         * icall.c, marshal.c: Delegate wrappers should skip visibility.
9622         This check is performed by the verifier for IL created delegates
9623         and by Delegate::CreateDelegate for programatically created ones.
9624         Fixes #372406.
9625
9626 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
9627
9628         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
9629         Fix code to use mono_array_size_t instead of int.
9630
9631         Based on patch by Luis F. Ortiz.
9632         Contributed under X11 license.
9633         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
9634
9635 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
9636
9637         * icall.c: Added ves_icall_System_Array_GetLongLength and
9638         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
9639         arrays.
9640
9641         * icall.h: Export both new functions.
9642
9643         Based on patch by Luis F. Ortiz.
9644         Contributed under X11 license.
9645         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
9646
9647 2008-05-28  Martin Baulig  <martin@ximian.com>
9648
9649         The debugger now requires exactly r103463.
9650
9651         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
9652         This version is not supported by the debugger, wait for 72.
9653
9654 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
9655
9656         * object.h: Changed array related functions to use
9657         mono_array_size_t instead of guint32. Forgot to commit this file.
9658
9659         Patch by Luis F. Ortiz.
9660         Contributed under X11 license.
9661         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
9662
9663
9664 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
9665
9666         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
9667         don't define it. Use the number literal instead.
9668
9669 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
9670
9671         * icall.c: Changed array related functions to use
9672         mono_array_size_t instead of guint32.
9673
9674         * icall.c (ves_icall_System_Array_GetLength): Check for length
9675         overflow under MONO_BIG_ARRAYS.
9676
9677         Based on patch by Luis F. Ortiz.
9678         Contributed under X11 license.
9679         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
9680
9681 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
9682
9683         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
9684
9685         Based on patch by Luis F. Ortiz.
9686         Contributed under X11 license.
9687         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
9688
9689 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
9690
9691         * object.c, object.h: Changed array related functions to use
9692         mono_array_size_t instead of guint32.
9693
9694         Patch by Luis F. Ortiz.
9695         Contributed under X11 license.
9696         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
9697
9698 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
9699
9700         * object.h: Introduced mono_array_size_t typedef. This must be used
9701         in all places an array length is expected. This is 64bits wide if
9702         MONO_BIG_ARRAYS is enabled.
9703
9704         Patch by Luis F. Ortiz.
9705         Contributed under X11 license.
9706         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
9707
9708 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
9709
9710         * security-manager.c class.c: Set the class exception info by calling
9711         mono_class_set_failure ().
9712
9713         * class.c (mono_class_get_exception_data): New accessor function.
9714         (mono_class_set_failure): Store exception_data in the property hash.
9715
9716         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
9717         the struct as a property.
9718
9719         * loader.c (mono_get_method_full): Store the lookup result for method
9720         tokens in method_cache, the others in methodref_cache to decrease the memory
9721         usage of hash tables.
9722
9723         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
9724         (mono_image_init): method_cache is lazy inited now.
9725
9726         * metadata-internals.h (struct _MonoImage): Change method_cache to
9727         a MonoValueHashTable, add a separate methodref_cache.
9728
9729 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
9730
9731         * number-formatter.h: Fix tables to avoid arithemtic overflow in
9732           Double.ToString as exposed by Bug #383531.
9733
9734 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * number-formatter.h: Make some tables static.
9737
9738         * class.c (mono_method_set_generic_container): New accessor function.
9739         (mono_method_get_generic_container): Ditto.
9740
9741         * class-internals.h (struct _MonoMethod): Remove rarely used 
9742         'generic_container' field, store it in the property hash instead. Add 
9743         'is_generic' boolean field instead.
9744
9745         * image.c (mono_image_init): Initialize property_hash.
9746         (mono_image_close): Destroy property_hash.
9747
9748         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
9749         hold rarely used fields of runtime structures belonging to this image.
9750
9751         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
9752         to get/set method->generic_container.
9753
9754         * loader.c (mono_get_method_from_token): Avoid loading the method header for
9755         generic methods.
9756
9757 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
9758
9759         * class.c (mono_class_inflate_generic_method_full): Don't increase
9760         mono_stats.inflated_method_count for methods found in the cache.
9761
9762         * threads.c (mono_thread_request_interruption): Add a comment about 
9763         QueueUserAPC ().
9764
9765 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
9766
9767         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
9768         interface_offsets_packed table.
9769         
9770         * class.c (mono_class_init): Remove some dead code.
9771
9772         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
9773         mono_class_setup_vtable () when CAS is active to detect security problems.
9774
9775 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
9776
9777         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
9778
9779         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
9780         parameters as it's irrelevant for delegate checking.
9781
9782 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
9783
9784         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
9785
9786         * class.c (mono_class_init): Control the creation of a generic vtable using
9787         a global which is true by default, but set to false by the runtime startup code.
9788         
9789         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
9790         Disabled for now since it breaks the embedding API.
9791         Move the setup of class->methods for arrays to mono_class_setup_methods ().
9792         (mono_class_setup_methods): Add a memory barrier.
9793
9794         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
9795         when mono_class_init () doesn't compute the generic vtable.
9796         
9797 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9798         * profiler.c: Added mono_profiler_install_statistical_call_chain,
9799         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
9800         to support call chains (backtrace) in the stat profiler.
9801         * profiler.c, profiler-private.h: Likewise.
9802
9803 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9804
9805         * generic-sharing.c: Init generic class when a method of it is
9806         requested via a runtime generic context.
9807
9808 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
9809
9810         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
9811
9812         * reflection.c (mono_type_get_object): Add a FIXME.
9813
9814         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
9815
9816         * class.c (mono_class_get_method_by_index): New helper function, returning an
9817         entry in the class->methods array.
9818
9819 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * class.c (mono_class_init): Only do the array optimization for szarrays. 
9822         Avoid creating a generic vtable for generic instances as well.
9823         (mono_class_get_method_from_name_flags): Don't search in the metadata for
9824         generic instances.
9825
9826 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
9827
9828         * loader.c (mono_get_method_constrained): Inflate the signature
9829         with class context. Fix #325283.
9830
9831 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9832
9833         * object.c (mono_class_create_runtime_vtable): Add a comment.
9834
9835         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
9836         where needed.
9837         (setup_interface_offsets): Handle the case when this is called twice for arrays.
9838         (mono_class_setup_vtable_general): Add an assert.
9839         (mono_class_init): Avoid creating a generic vtable for arrays.
9840
9841         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
9842         here, let mono_class_init () do that.
9843
9844         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
9845         interfaces in mscorlib.
9846
9847         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
9848         interfaces. Add some comments.
9849         (mono_class_init): Call mono_class_setup_methods () here since it is no
9850         longer called by mono_class_setup_vtable ().
9851
9852         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
9853         not set in class->vtable.
9854         (mono_class_create_runtime_vtable): Reenable the disabled code.
9855
9856         * object.c (mono_class_create_runtime_vtable): Disable the last change for
9857         now as it causes some test failures.
9858
9859         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
9860         if using the vtable trampoline. Also remove some strange code which put the
9861         generic methods themselves into the vtable slots. Remove the AOT init_vtable
9862         stuff as it is no longer needed.
9863
9864 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
9865
9866         * pedump.c: Give make --verify all option check code as well.
9867         Using --verify code won't check for metadata now.
9868
9869 2008-05-19  Martin Baulig  <martin@ximian.com>
9870
9871         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
9872
9873         * mono-debug.c
9874         (_mono_debug_using_mono_debugger): New global variable; it's set
9875         directly by the debugger, so mono_debug_using_mono_debugger() also
9876         works after attaching.
9877
9878 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
9879
9880         * object.c (mono_class_create_runtime_vtable): Use memory barriers
9881         as we do double checked locking on MonoClass::runtime_info and
9882         MonoClassRuntimeInfo::domain_vtables.
9883
9884 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
9885
9886         * debug-helpers.c (print_field_value): Fix a warning.
9887
9888 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
9891         set in the AOT case.
9892
9893 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
9894
9895         * class.c (mono_class_setup_vtable_general): Use memory barriers
9896         as we do double checked locking on MonoClass::vtable.
9897
9898 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
9899
9900         * reflection.c (resolve_object): Inflate only if the generic context
9901         is not null. Fixes #389886.
9902
9903 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
9904
9905         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
9906         instead of g_free.
9907
9908         Code is contributed under MIT/X11 license.
9909
9910 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
9911
9912         * class.c: Revert unrelated change.
9913
9914 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
9915
9916         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
9917         a generic instantiation, use mono_class_from_mono_type instead of playing
9918         with MonoType directly.
9919
9920 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
9921
9922         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
9923         checks must ignore generic instantiations, so mono_class_has_parent is not
9924         suitable. Fixes #390128.
9925
9926 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
9927
9928         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
9929         it to avoid registering tokens during metadata generation. Fixes #390023.
9930
9931 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
9932
9933         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
9934         consistent.
9935
9936         Contributed under MIT/X11 license.
9937
9938 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
9939
9940         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
9941         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
9942         to fixup the EXE image.
9943         (mono_cleanup): Use mono_close_exe_image.
9944         (mono_close_exe_image): New function.
9945         * image.c: Include "marshal.h".
9946         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
9947         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
9948         counting when the image is loaded outside of mono_image_open_full. Set status
9949         based on GetLastError.
9950         * coree.c: Include required headers. Add init_from_coree.
9951         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
9952         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
9953         (_CorExeMain): Set init_from_coree.
9954         (CorExitProcess): Only call ExitProcess for now.
9955         (CorBindToRuntimeEx): New stub implementation.
9956         (CorBindToRuntime): New function.
9957         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
9958         (MonoFixupExe): ILONLY executables require no fixups.
9959         (mono_set_act_ctx): New function to set activation context.
9960         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
9961         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
9962         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
9963         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
9964         as MONO_INTERNAL.
9965         * domain-internals.h: Add mono_close_exe_image.
9966
9967         Contributed under MIT/X11 license.
9968
9969 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
9970
9971         * metadata.c (mono_metadata_compute_size): Correctly calculate field
9972         size for generic param and event tables. Fixes #388977.
9973
9974 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
9975
9976         * loader.c (mono_method_signature): Use memory barriers because of the double
9977         checked locking pattern.
9978
9979         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
9980         aborting or aborted as well. Fixes #376391.
9981         
9982         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
9983         existing runtime state in the Suspend handler during shutdown.
9984
9985 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
9988
9989         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
9990         which are starting up or shutting down.
9991
9992         * threads.c (mono_threads_set_shutting_down): Don't return a value since
9993         this function never returns if the runtime is already shutting down.
9994
9995         * icall.c (ves_icall_System_Environment_Exit): Update after 
9996         mono_threads_set_shutting_down () signature change.
9997         
9998 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
9999
10000         * class.c: Added can_access_instantiation to verify if the instantiation
10001         is visible. Fix access check for nested types as they returned TRUE
10002         before doing type and generic instantiation visibility checks.
10003
10004 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
10005
10006         * reflection.c (mono_reflection_create_generic_class): The created type
10007         must have a different container from its TypeBuilder. Otherwise they
10008         will end sharing generic arguments, which is wrong.
10009
10010         Due to the sharing, making a generic instance of the created type using
10011         the TypeBuider generic arguments resulted in the generic type definition
10012         been returned, which is wrong as well.
10013
10014         As a bonus the code was leaking the type_params array. This memory should
10015         be allocated from the image mempool.
10016
10017         This fixes bug #354047.
10018
10019 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
10020
10021         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
10022         to here         as they are now used in assembly.c new code.
10023         Added a skipverification flag to MonoAssembly.
10024         New internal function mono_assembly_has_skip_verification.
10025
10026         * assembly.c: New function mono_assembly_has_skip_verification. It checks
10027         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
10028         part of #387274.
10029
10030 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10031
10032         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
10033         needed. Fixes #387034.
10034
10035         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
10036
10037 2008-05-06  Miguel de Icaza  <miguel@novell.com>
10038
10039         * assembly.c (mono_assembly_load_reference): Prevent crash while
10040         disassembling Silverlight 2.0 executables while we still do not
10041         have GACed libraries.
10042
10043 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10044
10045         * reflection.c: Special case generic type definitions as well. Fixes #383444.
10046
10047 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
10048
10049         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
10050         of the dynamic case. Fixes #387404.
10051
10052 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
10053
10054         *verify.c (mono_verifier_is_class_full_trust): If under
10055         verify_all and the verifier mode was not set, only
10056         gac and corlib types are fulltrust. This makes --verify-all
10057         usable to detect unverifiable code, which is the expected
10058         use case.
10059
10060 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
10061
10062         * verify.h: Ops, commited the header with debug
10063         enabled.
10064
10065 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
10066
10067         * verify.c (merge_stack): Use the new value on unverifiable
10068         stack merges.
10069
10070         * verify.c (verify_type_compatibility_full): Comparison
10071         of nullable types can't use mono_class_is_assignable_from.
10072
10073         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
10074         that makes all verification errors be reported.
10075
10076         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
10077         mono_method_verify.
10078
10079 2008-05-05  Robert Jordan  <robertj@gmx.net>
10080
10081         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
10082         support for value types. See #386415.
10083
10084         * object.c: comments.
10085
10086         Code is contributed under MIT/X11 license.
10087
10088 2008-05-05  Martin Baulig  <martin@ximian.com>
10089
10090         * debug-mono-symfile.h
10091         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
10092         for old pre-terrania symbol files.
10093
10094 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
10095
10096         * mono-config.c: Add ppc64 architecture.
10097
10098         Code is contributed under MIT/X11 license.
10099
10100 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
10101
10102         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
10103           PPC64 uses function descriptors as well.
10104
10105         Code is contributed under MIT/X11 license.
10106
10107 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
10108
10109         * object.c (compute_class_bitmap): Ignore literal static fields.
10110
10111         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
10112         var has an invalid format.
10113         (describe_ptr): Add some sanity checks for the vtable.
10114         (add_nursery_frag): Clear unused nursery fragments.
10115         (major_collection): Clear all remaining nursery fragments.
10116
10117 2008-05-03  Robert Jordan  <robertj@gmx.net>
10118
10119         * image.c, metadata-internals.h: add thunk_invoke_cache.
10120
10121         * marshal.c, marshal.h: implement
10122         mono_marshal_get_thunk_invoke_wrapper ().
10123
10124         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
10125
10126         Code is contributed under MIT/X11 license.
10127
10128 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
10129
10130         * verify.c (do_leave): Empty the stack.
10131
10132 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
10133
10134         * class.c (mono_class_is_assignable_from): Variance
10135         doesn't work between reference and value types. For example,
10136         given type C<T+>, C<int32> is not assignable to C<object>.
10137         Break the argument checking loop on first error. 
10138
10139 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
10140
10141         * icall.c : base64_to_byte_array() needs some more strict
10142           check for sequence of '=' characters. Patch by Santa
10143           Marta (http://deee.g.hatena.ne.jp/santamarta).
10144
10145           Contributed under MIT/X11 license.
10146           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
10147
10148 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
10149
10150         * domain.c: Disable LoadLibrary support to fix Win32 build.
10151
10152         Code is contributed under MIT/X11 license.
10153
10154 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
10155
10156         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
10157         to help with cache behaviour.
10158
10159 2008-05-01  Miguel de Icaza  <miguel@novell.com>
10160
10161         * appdomain.c (mono_domain_from_appdomain): Add new accessor
10162         method. 
10163
10164 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
10165
10166         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
10167
10168 2008-05-01  Dick Porter  <dick@ximian.com>
10169
10170         * process.c (process_get_fileversion): Only pass 16 bits of
10171         language ID to VerLanguageName.  Fixes bug 381204.
10172
10173 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
10174
10175         * verify.c (mono_method_verify): Fix the comparison
10176         operator for code bounds check.
10177
10178 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
10179
10180         * verify.c (mono_method_verify): Check the bounds of
10181         all access of the code array.
10182
10183 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
10184
10185         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
10186
10187 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
10188
10189         * image.c (mono_image_strong_name_position): Fix return value when the rva is
10190         not valid.
10191
10192 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
10193
10194         * loader.c (mono_get_method_from_token, mono_method_signature): Add
10195         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
10196         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
10197         fixup main EXE images when using mono.exe for mixed-mode assembly support.
10198         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
10199         mono_runtime_load.
10200         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
10201         runtime initialization from metadata.
10202         * assembly.c: Remove obsolete ceGetModuleFileNameA.
10203         (mono_set_rootdir): Use mono_get_module_file_name.
10204         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
10205         handles.
10206         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
10207         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
10208         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
10209         MonoCLIImageInfo. Add support for module handles.
10210         (load_cli_header): Update mono_cli_rva_image_map signature.
10211         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
10212         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
10213         (mono_image_rva_map): Add support for module handles.
10214         (mono_image_ensure_section_idx): Add support for module handles.
10215         (mono_image_close): Add support for module handles.
10216         (do_load_header): Add support for module handles.
10217         (mono_image_open_from_module_handle): New function for internal use.
10218         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
10219         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
10220         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
10221         handles.
10222         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
10223         * image.h: Add mono_image_fixup_vtable.
10224         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
10225         support.
10226         * coree.h: New file.
10227         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
10228         unsupported native code.
10229         (mono_marshal_set_callconv_from_modopt): New function splitted from
10230         mono_marshal_get_managed_wrapper.
10231         (mono_marshal_get_managed_wrapper): Use
10232         mono_marshal_set_callconv_from_modopt.
10233         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
10234         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
10235         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
10236         that results in a deadlock when the runtime is loaded in _CorDllMain.
10237         * Makefile.am: Add coree.c and coree.h.
10238
10239         Contributed under MIT/X11 license.
10240
10241 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10242
10243         * generic-sharing.c: Search for type arguments in array element
10244         types as well.
10245
10246 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10247
10248         * class-internals.h, generic-sharing.c: New, small runtime generic context.
10249
10250         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
10251
10252         * object.c: Don't setup the RGCTX when the vtable is created,
10253         because we're setting it up lazily now.
10254
10255 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
10256
10257         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
10258         64 bit support.
10259
10260 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
10261
10262         * verify.c (verify_class_for_overlapping_reference_fields): 
10263         If class is under fulltrust allow reference types to overllap
10264         if they have the same RVA.
10265
10266 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
10267
10268         * pedump.c: Added new flag valid-only, that makes the verifier
10269         behaves just like --security=validil. It won't fail type load
10270         due to unverifiable restrictions.
10271
10272 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
10273
10274         * class-internals.h (struct MonoMethod): Added a verification_success
10275         field to cache verifier executions. Reduced MonoMethod:slot size by
10276         one bit.
10277
10278 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10279
10280         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
10281         instead of a 'vt' argument to save an indirection and to allow these to be used
10282         for valuetypes.
10283         (scan_vtype): New helper function to scan an area using a gc descriptor.
10284         (mono_gc_wbarrier_value_copy): Implement this.
10285         (handle_remset): Add support for REMSET_VTYPE.
10286         (find_in_remset_loc): Ditto.
10287         (mono_gc_base_init): Allow some debugging options to be controlled through the
10288         use of the MONO_GC_DEBUG env variable.
10289         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
10290         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
10291
10292 2008-04-23  Martin Baulig  <martin@ximian.com>
10293
10294         * domain.c (mono_domain_create): Move the call to
10295         mono_debug_domain_create() down, after allocating the domain id.
10296
10297 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
10298
10299         verify.c (verify_class_for_overlapping_reference_fields): Skip
10300         static fields while verifying for overlapping fields as they
10301         don't matter at all.
10302
10303 2008-04-23  Marek Habersack  <mhabersack@novell.com>
10304
10305         * domain-internals.h: added a declaration of
10306         mono_make_shadow_copy.
10307
10308         * assembly.c (mono_assembly_open_full): shadow copying of
10309         assemblies moved to here, so that all the assemblies within the
10310         application domain's private binary directories can be
10311         processed. Fixes bug #380546
10312
10313         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
10314         mono_make_shadow_copy and made non-static. The decision whether
10315         to shadow-copy an assembly is made based on its location - it's
10316         copied if it's in one of the private application domain binary
10317         directories and its different to the target file in the shadow
10318         directory. Fixes bug #380546
10319
10320 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10321
10322         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
10323
10324         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
10325         types.
10326
10327         * reflection.c (mono_image_create_token): Handle 
10328         Method/ConstructorOnTypeBuilderInst.
10329         (resolve_object): Ditto.
10330         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
10331         so it can be called from resolve_object. Also handle the case when the inflated
10332         class already has its methods setup.
10333
10334 2008-04-21  Martin Baulig  <martin@ximian.com>
10335
10336         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
10337
10338 2008-04-20  Geoff Norton  <gnorton@novell.com>
10339
10340         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
10341         pointer dereference.
10342
10343 2008-04-15  Marek Habersack  <mhabersack@novell.com>
10344
10345         * appdomain.c (try_load_from): if IOMAP is in effect, call the
10346         portability API to look up the assembly file. Fixes behavior in
10347         situations when the application has a bin/ directory, but the
10348         assembly search patch refers to Bin/ (and thus the requested file
10349         name is Bin/SomeLibrary.dll). Fixes bug #379888
10350
10351 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
10352
10353         verify.c (mono_type_is_generic_argument): Extracted this check
10354         from a dozen places to here.
10355
10356         verify.c: Fixed all issues related to boxing generic arguments
10357         and their constraints.
10358
10359 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
10360
10361         verify.c (mono_class_interface_implements_interface): Fix win32 build.
10362
10363 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10364
10365         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
10366         isn't finished yet. Fixes #363447.
10367
10368 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
10369
10370         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
10371         Fixes #346419.
10372
10373 2008-04-13  Jb Evain  <jbevain@novell.com>
10374
10375         * domain.c: update the 2.1 profile versions.
10376         Merged from the Moonlight 2 branch.
10377
10378 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
10381         mscorlibs for the non-refonly case as well.
10382
10383         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
10384         in mono_assembly_load_from_full (). Fixes #378924.
10385
10386 2008-04-11  Geoff Norton  <gnorton@novell.com>
10387
10388         * icall.c: The global extern environ doesn't exist on Mac.  We
10389         need to call NSGetEnviron instead.
10390
10391 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
10392
10393         verify.c: Add generic method constraint verification.
10394
10395 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
10396
10397         class.c (mono_class_inflate_generic_method_full): Add a long
10398         explanation to the is_mb_open hack. Remove the FIXME.
10399
10400 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
10401
10402         * verify.c (mono_method_verify): Mark all unknown opcodes
10403         as invalid. Mark jmp as unverifiable.
10404
10405 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
10406
10407         * verify.c: Add code to do type constraint verification on class instances.
10408
10409         * verify.c (mono_verifier_verify_class): Use the type constraint 
10410         verification code.
10411
10412 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
10413
10414         * class.c (mono_class_get_field_default_value): Don't pass cindex
10415         as hint to mono_metadata_get_constant_index. The local is not initialized
10416         and should contain garbage most of the time. This could only work
10417         with a lot of luck.
10418
10419 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
10420
10421         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
10422
10423 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
10424
10425         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
10426
10427         * class.c (mono_class_from_generic_parameter): Save the token of the
10428         generic param in MonoClass::sizes.generic_param_token.
10429
10430         * reflection.c (mono_custom_attrs_from_class): If the class type is
10431         VAR or MVAR retrieve the attributes of the generic param.
10432
10433 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
10434
10435         * class.c (mono_class_init): Do class verification if the verifier
10436         is enabled.
10437
10438 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
10439
10440         * verify-internal.h: Added mono_verifier_verify_class.
10441
10442         * verify.c: Added mono_verifier_verify_class. It checks for
10443         classes with explicit layout that have overlapping reference fields.
10444
10445         * pedump.c: Init the verifier state prior to verification. Fixed
10446         command line arguments.
10447
10448 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
10449
10450         * Makefile.am: Added verify-internals.h, hopefully fix the build.
10451
10452 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10453
10454         * verify-internals.h: Fix a warning.
10455
10456 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
10457
10458         * verify-internals.h: New header with the verifier configuration
10459         extracted from mini.c.
10460
10461         * verify.c: Implemented the new functions exported by verify-internals.h.
10462
10463 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
10464
10465         * verify.c: Add proper verification of ckfinite.
10466
10467 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
10468
10469         * verify.c (do_conversion): Improved error message to something
10470         more meanfull.
10471
10472         * verify.c (check_is_valid_type_for_field_ops): Fix to work
10473         with primitive types.
10474
10475 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
10476
10477         * verify.c: Added tail prefix checking. Marked icall
10478         as unverifible.
10479
10480 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
10481
10482         * verify.c: Fix the detection of branches to the middle
10483         of an instruction.
10484
10485 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
10486
10487         * verify.c: Implemented verification of volatile. and
10488         unaligned. prefix. Check if a type is valid after retrieving it.
10489
10490 2008-04-01  Dick Porter  <dick@ximian.com>
10491
10492         * process.c (process_get_fileversion): If there's no string block,
10493         set the file language to en_US.  Fixes the other new part of bug
10494         374600.
10495
10496 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
10497
10498         * class.c: New functions mono_method_can_access_field_full and
10499         mono_method_can_access_method_full. They perform type visibility
10500         and type site check.
10501
10502         * class-internal.h: Added exported functions.
10503
10504         * verify.c: Use new functions to implement proper visibility checks.
10505
10506 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
10507
10508         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
10509
10510 2008-03-28  Dick Porter  <dick@ximian.com>
10511
10512         * process.c (process_get_fileversion): Use the first language ID
10513         we see, rather than insisting on an invariant language.  Fixes bug
10514         374600.
10515
10516 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
10517
10518         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
10519         the streams to fix reading of invalid memory later.
10520
10521         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
10522         to ease debugging.
10523
10524 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10525
10526         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
10527         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
10528
10529 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
10530         * threads.h: Added MonoThreadManageCallback type and
10531         mono_thread_set_manage_callback prototype
10532         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
10533         (used to store the mono_thread_manage callback).
10534         * threads.c: Added mono_thread_set_manage_callback, and handle
10535         "MonoThread->manage_callback" in build_wait_tids.
10536
10537 2008-03-26  Dick Porter  <dick@ximian.com>
10538
10539         * process.c (process_get_fileversion): Set FileVersionInfo strings
10540         to Empty when the resource doesn't have the particular info.
10541         Fixes bug 355717.
10542
10543 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
10544
10545         * verify.c (mono_method_verify): Proper prefix validation.
10546
10547 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10548
10549         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
10550         itself in a separate argument instead of throwing them. Fixes #373448.
10551
10552         * appdomain.c: Bump corlib version.
10553
10554 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
10555
10556         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
10557
10558 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
10559
10560         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
10561         version macros.
10562
10563 2008-03-20  Mark Probst  <mark.probst@gmail.com>
10564
10565         * generic-sharing.c, class-internals.h: Code for putting
10566         reflection types into the runtime generic context.
10567
10568 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
10569
10570         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
10571         Fixes #340662. 
10572
10573
10574 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
10575
10576         * verify.c (VerifyContext): Added instruction prefix data to the struct.
10577
10578         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
10579
10580         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
10581
10582         * verify.c (do_cast): Let the result value keep the boxed status.
10583
10584         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
10585
10586 2008-03-17  Jb Evain  <jbevain@novell.com>
10587
10588         * reflection.c: when running on a 2.0 runtime, emit
10589         unconditionally the #~ header version as 2.0, and the
10590         CLI header version as 2.5, for symmetry's sake with csc.
10591
10592 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
10593
10594         * class.c: Remove the unused cache_interface_offsets stuff.
10595
10596         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
10597         profiler.c: Fix warnings.
10598
10599 2008-03-16  Mark Probst  <mark.probst@gmail.com>
10600
10601         * generic-sharing.c, class-internals.h: Support for putting
10602         methods into the runtime generic context.
10603
10604 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
10605
10606         * class.c (mono_class_setup_fields): Ignore calls made to this function for
10607         classes which are generic instances of not-yet finished typebuilders. Fixes
10608         #351172.
10609
10610         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
10611
10612 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
10613
10614         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
10615
10616         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
10617         field, replace it with a hash table in MonoDynamicImage.
10618
10619         * reflection.c (inflate_mono_method): Access the generic definition object from
10620         image->generic_def_objects instead of imethod->reflection_info.
10621
10622         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
10623
10624         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
10625         
10626         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
10627         function in reflection.c so it is easier to keep in sync with the dynamic image
10628         creation code.
10629
10630         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
10631         mono_image_close ().
10632
10633 2008-03-15  Mark Probst  <mark.probst@gmail.com>
10634
10635         * class.c (mono_class_generic_sharing_enabled): Disable generic
10636         sharing for all architectures except AMD64 and x86 to fix build.
10637
10638 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
10639
10640         * verify.c: Use the generic definition MonoGenericContext when available.
10641         Remove code for checking generics instance compatibility in favor of
10642         mono_class_is_assignable_from.
10643
10644 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10645
10646         * marshal.c, marshal.h, metadata-internals.h, image.c,
10647         wrapper-types.h: New wrapper for invoking a shared static method
10648         without having to pass the runtime generic context argument.
10649
10650 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
10651
10652         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
10653
10654 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10655
10656         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
10657         
10658         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
10659         create a token from a FieldOnTypeBuilderInst.
10660         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
10661         (resolve_object): Ditto.
10662
10663         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
10664         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
10665
10666 2008-03-14  Martin Baulig  <martin@ximian.com>
10667
10668         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
10669
10670         * debug-mono-symfile.h
10671         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
10672         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
10673
10674 2008-03-10  Martin Baulig  <martin@ximian.com>
10675
10676         * debug-mono-symfile.h
10677         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
10678         `lexical_block_table_offset'.
10679         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
10680         `lexical_blocks'.
10681         (MonoSymbolFile): Added `version'.
10682
10683         * mono-debug.h
10684         (MonoDebugLexicalBlockEntry): Removed.
10685         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
10686         `lexical_blocks'.
10687
10688         * mono-debug.c (mono_debug_add_method): Don't compute lexical
10689         blocks here; the debugger now does this internally.
10690
10691 2008-02-27  Martin Baulig  <martin@ximian.com>
10692
10693         * object.c (mono_runtime_exec_main): Call
10694         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
10695         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
10696
10697 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
10698
10699         * verify.c (verify_type_compatibility_full): Allow native int to be converted
10700         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
10701
10702 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
10703
10704         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
10705         ldftn with a virtual method.
10706
10707 2008-03-13  Geoff Norton  <gnorton@novell.com>
10708
10709         * decimal.c:  Only include memory.h if the platform has it.
10710
10711 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
10712
10713         * assembly.c, class.c, metadata-internals.h: make sure public key
10714         tokesns are compared in a case-insensitive way. Also, all
10715         the lookups in the GAC use a lowercase public key token
10716         (gaacutil already does the lowercasing on install). Fixes
10717         bug #369541.
10718
10719 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
10720
10721         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
10722         and return value.
10723
10724 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
10725
10726         * image.c: when someone loads a mscorlib from a file, return the
10727         currently loaded mscorlib (fixes bug #369253).
10728
10729 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
10730
10731         * class.c: handle types with no parents by forcing them to have
10732         System.Object as a parent and marking them as broken (this currently
10733         allows the first part of bug #369173 to work as well, likely because
10734         we don't check for typeload exceptions everywhere yet).
10735
10736 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
10737
10738         * class.c: more complete check that types belong to corlib
10739         (fixes second part of bug #369173).
10740
10741 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
10742
10743         * generic-sharing.c:  Including glib.h for the MSVC builds to define
10744           "inline" to "__inline" before including mono-membar.h.
10745           
10746         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
10747           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
10748           MSVC builds.
10749
10750         Contributed under MIT/X11 license.
10751
10752 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
10753
10754         * verify.c (do_invoke_method): Remove return type validation.
10755
10756         * verify.c (do_ret): Do return type validation at return site instead of
10757         call site.
10758
10759 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
10760
10761         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
10762
10763         * verify.c: Some todos cleaned and improved a few error messages.
10764
10765 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
10766
10767         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
10768
10769 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10770
10771         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
10772         system types correctly.
10773
10774         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
10775         function.
10776
10777 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * assembly.c (build_assembly_name): Fix a warning.
10780
10781 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
10782
10783         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
10784         the called function takes an object type argument. Fixes storing or
10785         valuetypes across remoting as well as reducing memory usage.
10786         * image.c, metadata-internals.h: remove now unused ldfld_remote and
10787         stfld_remote wrapper caches.
10788
10789 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10790
10791         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
10792         is not found.
10793
10794         * reflection.c (mono_image_register_token): New helper function to save
10795         a token->object mapping.        
10796
10797         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
10798         managed code.
10799
10800         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
10801         one dimension arrays. Fixes #367670.
10802         (mono_reflection_get_type_internal): Ditto.
10803
10804 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
10805
10806         * marshal.c: mono_load_remote_field_new() always returns object.
10807         so use the proper signature (fixes bug #366445).
10808
10809 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10810         
10811         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
10812         add an 'inline_failure' flag instead.
10813
10814 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10815
10816         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
10817         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
10818         contains the location of "this", used for exception handling.
10819
10820 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10821
10822         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
10823         their size on all platforms for perf reasons.
10824
10825 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
10826
10827         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
10828         object-internal.h
10829
10830         * object-internal.h: Same.
10831
10832 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
10833
10834         * reflection.h: Fix the build I just broke.
10835
10836 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
10837
10838         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
10839         Test if a token is valid, this remove explicit usage of 
10840         MonoDynamicImage::tokens from the verifier code.
10841
10842         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
10843
10844         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
10845         instead of direct access to MonoDynamicImage::tokens.
10846
10847 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
10848
10849         * verify.c (token_bounds_check): Fix the build I just broke.
10850
10851 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
10852
10853         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
10854
10855         * verify.c (verifier_load_method): Fixed the errors message.
10856
10857         * verify.c (mono_method_verify): Fixed a debug message.
10858
10859 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
10860
10861         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
10862         mono-perfcounters.h, class-internals.h: support for predefined
10863         writable counters, query of categories and counters, bugfixes.
10864
10865 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
10866
10867         * verify.c (do_refanytype): Verify the refanytype opcode.
10868
10869         * verify.c (mono_method_verify): Use do_refanytype.
10870
10871 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
10872
10873         * verify.c (do_mkrefany): Verify the mkrefany opcode.
10874
10875         * verify.c (mono_method_verify): Use do_mkrefany.
10876
10877 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
10878
10879         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
10880         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
10881         implementation.
10882
10883 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10884
10885         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
10886         the type load exception.
10887
10888 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
10889
10890         * verify.c: Added a few FIXME for method signatures
10891
10892         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
10893         of mono_method_get_signature and get vararg call working. Removed unused
10894         checks for return value.
10895
10896         * verify.c (do_refanyval): Verify the refanyval opcode.
10897
10898         * verify.c (mono_method_verify): Implemented verification of arglist and
10899         use do_refanyval.
10900
10901 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10902
10903         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
10904         vtypes to marshal.c.
10905
10906         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
10907         it works for AOT as well.
10908
10909 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
10910
10911         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
10912         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
10913         the system time is adjusted.
10914
10915 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
10916
10917         * icall.c, icall-def.h: use the new time functions (fixes the
10918         non-monotonic behaviour of TickCount).
10919
10920 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
10923         it breaks the build.
10924         
10925         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
10926         cattr is not finished yet.
10927
10928 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
10929
10930         * verify.c: Proper token validation for field, method and type.
10931
10932 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
10933
10934         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
10935
10936         * loader.c (method_from_memberref): Generate type load error instead of method missing
10937         if the type is not found.
10938
10939 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
10940
10941         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
10942         some of the conversions caused the generation of a marshal directive exception.
10943
10944 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
10945
10946         verify.c: Report which exception should be thrown by the JIT.
10947         Added a lot of FIXME notes.
10948
10949 2008-02-22  Mark Probst  <mark.probst@gmail.com>
10950
10951         * generic-sharing.c: Runtime generic context slots are not
10952         instantiated on init anymore.  Instead, provide function to do the
10953         instantiating on demand.
10954
10955         * class-internals.h: Added vtable to runtime generic context.
10956         Macros for encoding direct and indirect slot offsets in one
10957         guint32.
10958
10959 2008-02-21  Mark Probst  <mark.probst@gmail.com>
10960
10961         * object.c, generic-sharing.c: Moved some generic sharing code
10962         from object.c to generic-sharing.c.
10963
10964         * generic-sharing.c: Added support for extensible runtime generic
10965         context.
10966
10967         * metadata-internals.h: Two new hash tables in MonoImage for
10968         extensible runtime generic context support.
10969
10970         * domain.c: Unregister generic vtables upon domain unloading.
10971
10972         * image.c: Destroy new hash tables upon image unloading.
10973
10974         * metadata.c: Unregister generic subclasses upon image unloading.
10975
10976         * class-internals.h: New data structure for runtime generic
10977         context template.  New fields in the runtime generic context for
10978         extensible part.
10979
10980         * Makefile.am: Added generic-sharing.c.
10981
10982 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
10983
10984         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
10985         there is a pending loader exception, raise it.
10986
10987         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
10988         same.
10989
10990         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
10991         same.
10992
10993         Fixes #363450.
10994
10995 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10996
10997         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
10998
10999         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
11000         
11001         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
11002         ref-only requests for compatibility with MS.
11003
11004 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
11005
11006         * reflection.c (mono_custom_attrs_from_method): Don't silently
11007         return an empty list for generic method instances.
11008         (mono_custom_attrs_from_param): Likewise.
11009
11010 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
11011             Raja R Harinath  <harinath@hurrynot.org>
11012
11013         Fix #354757
11014         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
11015         * class.c (mono_class_inflate_generic_method_full): Initialize it
11016         when a fully-open method is instantiated.
11017         * metadata.c (inflated_method_equal, inflated_method_hash): Update
11018         to new field.
11019         * reflection.c (inflate_mono_method): Don't create a temporary context.
11020
11021 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
11022
11023         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
11024         Compute correct value, to prepare for imethod->reflection_info going away.
11025
11026 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11027
11028         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
11029
11030 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
11031
11032         * verify.c: Implement skip visibility flag.
11033
11034 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
11035
11036         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
11037         which contains an extra field to tell the kind of exception that should be thrown.
11038
11039         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
11040
11041 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
11042
11043         * loader.c (mono_method_get_param_names): Initialize 'klass' after
11044         'method' is updated.
11045
11046 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
11047
11048         * class.c (mono_class_layout_fields): Set class->min_align for classes using
11049         explicit layout as well. Fixes #360375.
11050
11051 2008-02-11  Geoff Norton  <gnorton@novell.com>
11052
11053         * loader.c: Guard and dereference against inflated generic methods
11054
11055 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
11056
11057         * class.c: Include Retargetable spec in assembly name.
11058         * assembly.c: Always include PublicKeyToken spec in assembly name
11059         (with value "null" if assembly is not signed), and include
11060         Retargetable spec.
11061         * icall-def.h: Added icall for Assembly.get_fullname.
11062         * icall.c: Added icall returning the fullname of an assembly.
11063
11064 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11065
11066         * class.c (mono_class_setup_vtable_general): Add a missing call to
11067         mono_class_setup_methods () which is needed in the AOT case.
11068
11069 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
11070
11071         * verify.c (mono_type_get_stack_name): Added. Return the name for the
11072         stack type of the given MonoType.
11073
11074         * verify.c (verify_type_compatibility_full): Handle the void type.
11075
11076         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
11077         way stack merging works.
11078
11079         * verify.c (store_local): Improved verification message.
11080
11081         * verify.c (do_branch_op): If the merging is invalid, the method
11082         is unverifiable and not invalid. Improved error message.
11083
11084         * verify.c (merge_stacks): Properly merge a boxed valuetype and
11085         a reference type diferent than System.Object. Improved error
11086         message.
11087
11088 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
11089
11090         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
11091
11092         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
11093         type of an enum even if the argument is byref.
11094
11095         * verify.c: Replace all explicit uses of enumtype and enum_basetype
11096         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
11097
11098         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
11099
11100         *verify.c (verify_type_compatibility_full): Make enum types
11101         compatible with their base types.
11102
11103         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
11104         types are compatible for the special case of a boxed valuetype and
11105         System.Object.
11106
11107         * verify.c (verify_stack_type_compatibility): The function
11108         is_compatible_boxed_valuetype was extracted from here.
11109
11110         * verify.c (push_arg): Only set ctx->has_this_store if the method
11111         is not static.
11112
11113         * verify.c (do_ldelem): Fixed a typo in an error message and added
11114         strict check for mixing int32 and native int as the array type
11115         and ldelem type.
11116
11117         * verify.c (merge_stacks): Consider boxed valuetypes in the
11118         compatibility checks.
11119
11120 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
11121         * profiler.h: (MonoGCEvent): Added start-stop the world events.
11122
11123 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
11124         *class.c: use_new_interface_vtable_code: renamed the env var to have
11125         a "MONO_" prefix, and fix the logic to enable it by default.
11126
11127 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
11128         *class.c:
11129         mono_class_setup_vtable_general: rewrote the way in which interface
11130         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
11131         makes the code more maintainable.
11132         For now the old code is still there, and can be activated setting
11133         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
11134
11135 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
11136
11137         * verify.c: guarded some debug functions around and #ifdef.
11138
11139         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
11140
11141 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11142
11143         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
11144         changes for now since they seem to break too many things.
11145
11146 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11147
11148         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
11149         mono_marshal_find_nonzero_bit_offset): Added macro and function
11150         for finding the byte- and bit-offset of a bitfield within a
11151         struct.
11152
11153 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11154
11155         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
11156         (mono_marshal_get_struct_to_ptr): Ditto.
11157
11158         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
11159         cctor_signature.
11160
11161 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11162
11163         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
11164         between methods for non-corlib types.
11165
11166 2008-02-02  Geoff Norton  <gnorton@novell.com>
11167
11168         * loader.c (mono_method_get_param_names): Populate the parameter name for 
11169         generic parameters as well. (Fixes #342536)
11170
11171 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
11172
11173         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
11174
11175         * verify.c (do_invoke_method): Fix for calling with byref structs.
11176
11177         * verify.c (do_cast): push a boxed value type based on the type token and not
11178         the type of stack.
11179
11180 2008-01-31  William Holmes  <billholmes54@gmail.com>
11181
11182         * process.c (process_module_string_read): Check the size returned form 
11183           VerQueryValue to avoid out of memory exception. 
11184
11185 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11186
11187         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
11188         Handle properly modules which are not in the moduleref table. Fixes
11189         #356938.
11190
11191 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11192
11193         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
11194         the dynamic case which is now in managed code.
11195         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
11196
11197         * marshal.c (mono_string_to_bstr): Fix a warning.
11198         (init_com_provider_ms): Ditto.
11199
11200         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
11201
11202         * exception.c (mono_get_exception_out_of_memory): New helper function.
11203
11204 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
11205
11206         * marshal.c: Add support for BSTR marshalling
11207         using other COM systems.
11208
11209         Code is contributed under MIT/X11 license.
11210
11211 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
11212
11213         * object.c (mono_runtime_invoke_array): reverted previous
11214         commit as it breaks the build.
11215
11216 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
11217
11218         * object.c (mono_runtime_invoke_array): Verify arguments for
11219         invalid types. Fixes #348522.
11220
11221 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
11222
11223         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
11224         non-final virtual calls using call. 
11225
11226         * verify.c (do_invoke): fixed some TODOs.
11227
11228         * verify.c (push_arg): set has_this_store for "ldarga 0".
11229
11230 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11231
11232         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
11233         which belong to an inflated class. Fixes #356531.
11234
11235 2008-01-26  Robert Jordan  <robertj@gmx.net>
11236
11237         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
11238         which resort to FindFirstFile when a certain error condition
11239         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
11240         Code is contributed under MIT/X11 license.
11241
11242 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
11243
11244         * marshal.c (emit_marshal_string): Fix out string marshalling
11245         to use specified encoding. Fixes #323900.
11246
11247         Code is contributed under MIT/X11 license.
11248
11249 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
11250
11251         * class.c (mono_class_inflate_generic_method_full): Don't modify
11252         iresult->context after cache check.
11253
11254 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
11255
11256         * class.c (mono_class_inflate_generic_method_full): Change the
11257         struct assignments to memcpy for better visibility and add some comments.
11258
11259 2008-01-23  Dick Porter  <dick@ximian.com>
11260
11261         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
11262         procedure, and make it work on windows.
11263
11264 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
11267         a MonoReflectionTypeBuilder since it is always of that type.
11268
11269         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
11270
11271         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
11272
11273         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
11274         
11275         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
11276
11277         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
11278
11279         * reflection.c (mono_reflection_create_runtime_class): Remove already created
11280         instantiations from the type cache.
11281
11282 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
11283
11284         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
11285
11286         * verify.c (do_unbox_value): push a controled mutability managed pointer.
11287
11288 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
11289
11290         * verify.c (do_ldstr): added, verifies if the #US token is valid.
11291
11292         * verify.c (mono_method_verify): removed old TODO
11293
11294 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
11295
11296         * verify.c (do_newobj): add visibility check.
11297
11298 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
11299
11300         * verify.c (do_load_function_ptr): add visibility check.
11301
11302 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
11303         *class.c:
11304         mono_generic_class_get_class: hook profiler events.
11305         mono_field_get_offset: added to support heap-shot in the new profiler.
11306         *class.h: exported mono_field_get_offset.
11307         * reflection.c:
11308         mono_reflection_setup_internal_class: hook profiler events.
11309
11310 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11311
11312         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
11313         argument here too and use it to avoid checking for pending exceptions if 
11314         possible.
11315
11316 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
11317
11318         * assembly.c (build_assembly_name): add arg for passing the assembly
11319         flags. Do not consider a PublicKey with value "null" valid.
11320         (mono_assembly_name_parse_full): added boolean argument that will be
11321         set if the assembly name contains a PublicKeyToken spec. Added support
11322         for the Retargetable spec for which only Yes or No are allowed as valid
11323         value. Consider assembly name invalid if Retargetable spec is set, but
11324         either version, culture or public key (token) are not specified.
11325         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
11326         with implementation in assembly.c.
11327         * icall.c (fill_reflection_assembly_name): also copy assembly flags
11328         from MonoAssemblyName.
11329         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
11330         introduced argument for mono_assembly_name_parse_full to know if the
11331         assembly name has a PublicKeyToken spec, and if it has instruct
11332         fill_reflection_assembly_name to use default value for keyToken (if
11333         PublicKeyToken is null).
11334
11335 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
11336
11337         * verify.c (mono_method_verify): fixed ovf ops with
11338         float values. They are unverifiable now.
11339
11340 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
11341
11342         * class.c (set_failure_from_loader_error): add BadImageException to the
11343         list of exceptions that can cause a type to fail to load.
11344
11345         * class.c (mono_class_get_exception_for_failure): same.
11346
11347 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
11348
11349         * verify.c (in_any_exception_block): added, check if offset
11350         is part of any exception handling clause.
11351
11352         * verify.c (get_stack_type): added VAR and MVAR types.
11353
11354         * verify.c (do_stobj): better error messages.
11355
11356         * verify.c (do_cpobj): added, check cpobj.
11357
11358         * verify.c (do_initobj): added, check initobj.
11359
11360         * verify.c (do_sizeof): added, check sizeof.
11361
11362         * verify.c (do_localloc): added, check localloc.
11363
11364         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
11365
11366 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
11367
11368         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
11369         save_lmf/restore_lmf opcodes.
11370
11371         * threads.c (mono_threads_install_notify_pending_exc): New function to
11372         install a callback notifying the JIT there is a pending exception on a thread.
11373         (mono_thread_request_interruption): Call the new callback.
11374         (mono_thread_get_and_clear_pending_exception): New function to return the
11375         exception pending on a thread.
11376
11377         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
11378         to turn off checking for pending exceptions.
11379         (mono_marshal_get_native_wrapper): Ditto.
11380
11381 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11382
11383         * threads-types.h: Get rid of the unnecessary extern declarations.
11384
11385 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
11386
11387         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
11388         return field from parent class if not private.
11389         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
11390         returns fields from parent class if they are not private.
11391         (method_nonpublic): added function to determine if a given method
11392         should be considered non-public. Returns false for private methods
11393         on parent class, and internal methods from parent on the 1.0 profile.
11394         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
11395         use method_nonpublic function to determine whether method should be
11396         returned.
11397         (property_accessor_public): use newly introduced method_nonpublic
11398         function to determine whether accessor is non-public. 
11399         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
11400         event from parent class if not private. Only return static event if
11401         Static flag is set, and only return static event from parent class if
11402         FlattenHierarchy flag is set.
11403         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
11404         include non-private events from parent class.
11405
11406 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11407
11408         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
11409         warning.
11410
11411 2008-01-16  Wade Berrier <wberrier@novell.com>
11412
11413         * security.c: Add assembly.h header to appease some warnings
11414
11415 2008-01-16  Dick Porter  <dick@ximian.com>
11416
11417         * process.c (process_module_string_read): Remove trailing null
11418         when saving string.
11419
11420 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11421
11422         * class-internals.h: A new data structure describing the layout of
11423         a runtime generic context (MonoRuntimeGenericContextTemplate).
11424
11425         * metadata-internals.h: Added a hash table to MonoDomain that maps
11426         from open generic classes to their runtime generic context
11427         templates.
11428
11429         * object.c: Building of the runtime generic context, including
11430         proper handling of generic type arguments of superclasses.
11431         Building of the runtime generic context according to the template.
11432
11433 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11434
11435         * class.c (mono_class_setup_fields): Set field.count for generic instances.
11436         Fixes #350856.
11437
11438         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
11439         mono_portability_find_file (). Fixes #325466.
11440         (mono_image_get_public_key): Fix a warning.
11441
11442 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
11445         Fixes #353550.
11446         (mono_class_from_name_case): Ditto.
11447
11448 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
11449
11450         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
11451           common storage for the tables used in the System/NumberFormatter class.
11452
11453 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
11454
11455         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
11456
11457 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
11458
11459         * verify.c (get_boxable_mono_type): check if the token is valid.
11460
11461         * verify.c (set_stack_value): changed to add an error if an
11462         invalid type is set on stack. Changed all callers due to signature change.
11463
11464         * verify.c (do_stobj): implement stobj validation.
11465
11466 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
11467
11468         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
11469         set container->is_method, it was set earlier.
11470
11471         * metadata.c (type_in_image): Handle MVARs which belong to not finished
11472         generic methods.
11473
11474         * reflection.c (mono_reflection_initialize_generic_parameter): Set
11475         is_method of the generic container to TRUE for methods.
11476
11477 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11478
11479         * metadata.c (type_in_image): Handle type parameters properly.
11480
11481         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
11482         memory ownership of this structure.
11483
11484 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
11485
11486         * verify.c (get_boxable_mono_type): make typedref types been just
11487         unverifiable. check for void type.
11488
11489         * verify.c (do_unbox_any): added, verify opcode unbox.any.
11490
11491         * verify.c (do_load_function_ptr): accept method spec tokens.
11492
11493 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11494
11495         * marshal.c (mono_class_native_size): Always set *align even if this is called
11496         recursively.
11497
11498 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
11499
11500         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
11501         out-of-date.
11502
11503 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
11504
11505         * verify.c: removed some old unused tables. A huge bunch of small fixes
11506         to things found while testing the verifier with mono basic.
11507
11508         * verify.c (dump_stack_value): dump null literal flag to.
11509
11510         * verify.c (verify_type_compatibility_full): fix comparison
11511         for types that have a generic super type.
11512
11513         * verify.c (verify_stack_type_compatibility): fix compatibility
11514         between null literals and reference types. fix compatibility between
11515         boxed valuetypes and object. fix corner case test for enums.
11516
11517         * verify.c (do_cmp_op): proper verification of cgt.un in case
11518         of reference types.
11519
11520         * verify.c (do_invoke_method): fix error message.
11521
11522         * verify.c (do_store_indirect
11523
11524         * verify.c (check_is_valid_type_for_field_ops): proper verification
11525         of managed pointers to valuetypes and boxed valuetypes. proper verification
11526         of null literals.
11527
11528         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
11529         allow token to be a reference type.
11530
11531         * verify.c (do_cast): proper handling of boxes valuetypes.
11532
11533         * verify.c (do_stelem): proper handling of storing a boxed valuetype
11534         in object[].
11535
11536         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
11537         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
11538         fixed the decoding of unbox_any
11539
11540 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
11541
11542         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
11543
11544 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
11545
11546         * verify.c (do_newobj): do delegate verification.
11547
11548         * verify.c (verify_delegate_compatibility): perform delegate
11549         verification.
11550
11551         * verify.c (verify_ldftn_delegate): perform tests related to
11552         ldftn delegates.
11553
11554         * verify.c (mono_delegate_signature_equal): perform the
11555         slightly diferent signature comparison required by delegates.
11556
11557         * metadata.c (mono_metadata_type_equal_full): added and exported
11558         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
11559         allows signature only comparison.
11560
11561         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
11562         as MONO_INTERNAL.
11563
11564 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
11565
11566         * verify.c: added a bunch of stack_slot_* functions to
11567         make access to stack slot type easier. This is required to
11568         allow optional flags, like null literal, boxed value and
11569         this pointer.
11570         All access paths to IlStackDesc::stype have been changed 
11571         to use these new funcions.
11572         Removed a bunch of unused functions and cleared all warnings.
11573         This patch introduces the usage of the this pointer and 
11574         boxed value flags.
11575
11576 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
11577
11578         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
11579
11580 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
11581
11582         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
11583         match managed version.
11584
11585         * appdomain.c: Bump corlib version.
11586         
11587         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
11588         argument.
11589
11590 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
11591
11592         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
11593         Set public key token to zero-length byte array if assembly is not
11594         strongnamed.
11595
11596 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
11599         writing a vtype array elem.
11600
11601 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
11602
11603         * assembly.c (build_assembly_name): return FALSE if length of token is
11604         not 16 (if not "null").
11605         (mono_assembly_name_parse_full): return FALSE if value of version,
11606         culture, token or key is 0.
11607         * icall.c (fill_reflection_assembly_name): add boolean arguments to
11608         specify whether public key and public key token must be set to default
11609         value (zero-length byte array) if not available. Set versioncompat to
11610         SameMachine. If public key is available or the default is set, then
11611         set PublicKey flag.
11612         (ves_icall_System_Reflection_Assembly_FillName): if no public key
11613         is available, use empty byte array as default value. On the 2.0
11614         profile, use default value for public key token if not set.
11615         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
11616         profile, use default value for public key if not set. On the 2.0
11617         profile, use default value for public key token if not set.
11618         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
11619         default values for public key and public key token.
11620
11621 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11622
11623         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
11624         field to keep it in synch with the managed object.
11625
11626         * marshal.c (emit_marshal_object): Add support for byref marshalling of
11627         delegates. Fixes #351520.
11628
11629         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
11630         contains defined memory.
11631         
11632         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
11633
11634         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
11635         
11636         * sgen-gc.c (check_consistency): New helper function to do a consistency check
11637         of the GC data structures.
11638
11639         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
11640
11641         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
11642         
11643         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
11644         barrier.
11645         (mono_array_clone_in_domain): Ditto.
11646         (mono_array_clone_in_domain): Ditto.
11647
11648         * threads.c (start_wrapper): Register the thread start argument as a GC root.
11649         (cache_culture): Use a write barrier.
11650
11651         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
11652         (ves_icall_get_property_info): Ditto.
11653
11654         * object.h (MONO_STRUCT_SETREF): New macro.
11655
11656         * class-internals.h (MonoStats): Add some GC statistics.
11657
11658         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
11659
11660 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
11661
11662         * exception.c (mono_exception_from_name_two_strings):
11663         Break from loop after method is found.
11664
11665 2008-01-04  Dick Porter  <dick@ximian.com>
11666
11667         * process.c (process_module_string_read): Rename variable to
11668         reflect correct usage, after fixing bug 345972.
11669
11670 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
11671
11672         * verify.c (mono_type_create_fnptr_from_mono_method): 
11673         created a MonoType function pointer instance to be used during
11674         verification. The verifier releases this memory at end.
11675
11676         * verify.c (mono_method_is_constructor): extracted repeated
11677         checks for constructor into a single class.
11678
11679         * verify.c (do_push_field): use new extracted method
11680         for constructor check.
11681
11682         * verify.c (do_newobj): same.
11683
11684         * verify.c (do_ldftn): renamed to do_load_function_ptr
11685         and make it verify ldvirtftn too.
11686
11687         * verify.c (mono_method_verify: proper verification
11688         of ldvirtftn. release created MonoMethod instances.
11689
11690 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
11691
11692         * verify.c (token_bounds_check): added.
11693
11694         * verify.c (do_ldftn): added.
11695
11696         * verify.c (mono_method_verify): proper verificartion of ldftn.
11697
11698 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
11699
11700         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
11701         than the table row count. It's the resposibility of the caller to
11702         make the bounds check and raise the correct error.
11703
11704         * metadata.c (mono_metadata_decode_row_col): Same.
11705
11706         * loader.c (mono_get_method_from_token): perform bounds check
11707         on token for methoddef table.
11708
11709 2007-12-29  Miguel de Icaza  <miguel@novell.com>
11710
11711         * icall.c
11712         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
11713         assert into a negative result, the managed code already coped with
11714         that.
11715
11716         Some folks on Windows reported this error. 
11717
11718 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
11719
11720         * appdomain.c: Bump corlib version.
11721         * icall.c:
11722         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
11723         CultureInfo.CreateCulture to create CultureInfo for name.
11724         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
11725         create CultureInfo for name. Fixes bug #347174.
11726
11727 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
11728
11729         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
11730         flags.
11731
11732         * verify.c (is_valid_branch_instruction): allow branching to the
11733         first instruction of the protected block.
11734
11735         * verify.c (is_valid_cmp_branch_instruction): same.
11736
11737         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
11738         avoid double initialization.
11739
11740         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
11741         detect which cases the eval stack should just be copied.
11742
11743         * verify.c (mono_method_verify): check if the eval stack
11744         is empty when entering a protected block.
11745
11746 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
11747
11748         * verify.c: added is_clause_in_range, is_clause_inside_range,
11749         is_clause_nested and verify_clause_relationship. They perform
11750         the verifications stated in P1 12.4.2.7.
11751
11752         * verify.c (mono_method_verify): remove some unused variables,
11753         add the new exception clause checks, add instruction border
11754         checks for protected block start/end, improved some error 
11755         messages and fixed a bug in the way invalid instruction access
11756         is detected.
11757
11758 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
11759
11760         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
11761         from GC 7.0 if available.
11762
11763         * object.c: Remove an unused define.
11764         
11765         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
11766
11767         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
11768
11769         * null-gc.c (mono_gc_make_descr_for_array): Implement.
11770
11771         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
11772
11773         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
11774         to take the same arguments as the other make_descr functions.
11775
11776         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
11777
11778         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
11779         directly.
11780
11781         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
11782         mini.c.
11783
11784         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
11785         call to boehm-gc.c.
11786
11787         * boehm-gc.c (mono_gc_register_root): Fix a warning.
11788
11789         * null-gc.c (mono_gc_register_root): Fix a warning.
11790
11791         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
11792
11793         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
11794         (mono_gc_base_init): Call GC_init ().
11795
11796         * null-gc.c: Define mono_gc_register_root () as a no-op.
11797
11798         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
11799
11800 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
11801
11802         * verify.c: add prototype for merge_stacks at top
11803
11804         * verify.c (do_switch): added.
11805
11806         * verify.c (merge_stacks): on some cases the stack merging
11807         was not happening properly. Unequal stack sizes at merge
11808         points should be invalid.
11809
11810         * verify.c (mono_method_verify): added more debug info on stack state.
11811         verify switch properly.
11812
11813 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
11814
11815         * method-builder.h: New file, moved the mono_mb_ declarations here from 
11816         marshal.h.
11817
11818         * boehm-gc.c marshal.c: Include method-builder.h.
11819
11820         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
11821
11822         * marshal.c: Remove some code which is now in method-builder.c.
11823
11824 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
11825
11826         * method-builder.c: New file, extraction of the method builder functionality 
11827         from marshal.c.
11828
11829         * marshal.c: Move the mb functions into method-builder.c.
11830
11831         * marshal.h marshal.c: Export some mono_mb_... functions.
11832
11833         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
11834
11835         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
11836         the caller.
11837
11838         * class.c (mono_class_get_full): Check the token type in the dynamic case.
11839
11840         * loader.c (mono_field_from_token): Ditto.      
11841
11842         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
11843         type as well.
11844         
11845         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
11846         Fixes #342565.
11847
11848         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
11849         a helper function for setting it.
11850
11851         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
11852
11853         
11854         * assembly.c: Significally simplify code now that referenced assemblies are 
11855         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
11856
11857         * threads.h: Don't include  the internal threads-types.h header file. Fixes
11858         #349952.
11859
11860 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
11861
11862         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
11863         instructions that were target of branches or are at protected block boundaries.
11864
11865         * verify.c (in_same_block): handle filter clauses.
11866
11867         * verify.c (is_valid_branch_instruction): added. checks the target of
11868         instructions br or brtrue/false.
11869
11870         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
11871         binary branch instructions such as beq and bge.
11872
11873         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
11874         and made it pin the instruction as been part of the exception block.
11875
11876         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
11877         of in_same_block.
11878
11879         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
11880         of in_same_block.
11881
11882         * verify.c (do_ret): ret from a protected block is unverifiable and
11883         not invalid.
11884
11885         * verify.c (do_static_branch): verify br and br.s instructions.
11886
11887         * verify.c (merge_stacks): add extra param to support detection
11888         of branches in the middle of instructions.
11889         
11890         * verify.c (mono_method_verify): verify branches and exception blocks
11891         that target the middle of instructions. Proper verification of br and br.s.
11892
11893 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
11894
11895         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
11896         skip_visibility field.
11897         (reflection_methodbuilder_from_dynamic_method): Ditto.
11898
11899         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
11900         registrations. Fixes #348193.
11901
11902         * threads.h: Move the internal mono_thread_get_pending_exception () to
11903         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
11904
11905 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
11906
11907         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
11908         icall registration. Fixes #348193.
11909
11910         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
11911         for corlib classes into object. Fixes #349621.
11912
11913 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
11914
11915         * icall.c (property_accessor_nonpublic): new function to determine
11916         whether an accessor allows a property to be considered non-public.
11917         Returns false for private accessor(s) from parent class, and internal
11918         accessor(s) from parent on 2.0 profile (and higher).
11919         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
11920         to determine whether property should be included if NonPublic flag
11921         is set. Fixes bug #349078.
11922
11923 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
11924
11925         * verify.c (init_stack_with_value): added.
11926
11927         * verify.c (mono_method_verify): extracted common
11928         code for exception initialization into init_stack_with_value.
11929
11930         * verify.c (mono_method_verify): initialize the exception
11931         for handler clauses as well.
11932
11933         * verify.c (mono_method_verify): fix the exception clause
11934         ordering rules, it should use handler end offset and not
11935         start offset.
11936
11937 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
11938
11939         * rawbuffer.c: remove useless warning.
11940
11941 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
11942
11943         * threads.h, threads-types.h: move functions to the correct header
11944         (fixes bug#349952).
11945
11946 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
11947
11948         * verify.c (mono_method_verify): proper verification
11949         of exception handling clauses ranges and fallthru in
11950         and out of protected blocks.
11951
11952 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
11953
11954         * verify.c (mono_method_verify): fixed compilation issue.
11955
11956 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
11957
11958         * verify.c (mono_method_verify): a printf slipped in, changed
11959         to use verifier debug macro.
11960
11961 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
11962
11963         * verify.c (is_correct_leave): check for filter clauses.
11964
11965         * verify.c (do_filter): added.
11966
11967         * verify.c (mono_method_verify): property verification of leave.
11968
11969
11970 2007-12-18  Mark Probst  <mark.probst@gmail.com>
11971
11972         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
11973         Win32 build, until we figure out how to do the proper thing on
11974         Win32.
11975
11976 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
11977
11978         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
11979         by the previous patch.
11980         
11981         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
11982         the assembly resolve handler for refonly assemblies.
11983
11984 2007-12-17  Mark Probst  <mark.probst@gmail.com>
11985
11986         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
11987         Make sure only one thread is allowed to commence shutdown, and
11988         don't allow new threads to be started once shutdown is in
11989         progress.
11990
11991 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
11992
11993         * verify.c (is_correct_endfilter): added.
11994
11995         * verify.c (is_unverifiable_endfilter): added.
11996
11997         * verify.c (do_endfilter): added.
11998
11999         * verify.c (mono_method_verify): property verification of endfilter
12000         and fixed a corner case or endfinally.
12001
12002 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
12003
12004         * verify.h: new flags to support fail fast of unverifiable code and
12005         do non-strict verification. Non-strict verification is required to
12006         have MS runtime compatibility. There are a huge amount of unverifiable
12007         code that it accepts as verifiable. The strict mode verifies the code
12008         as the specs says.
12009         Non-strict mode will be required in cases where code needs to be
12010         accepted as verifiable but fails under strict mode.
12011
12012         * pedump.c: added support to fail fast and non-strict verification.
12013
12014         * verify.c: added support for both fail fast and non-strict verification.
12015
12016 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
12017
12018         * verify.c (is_correct_endfinally): added.
12019
12020         * verify.c (mono_method_verify): property verification of endfinally.
12021
12022 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12023
12024         * verify.c (in_any_block): check for filter clauses.
12025
12026         * verify.c (is_correct_rethrow): added.
12027
12028         * verify.c (mono_method_verify): property verification of rethrow.
12029
12030         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
12031
12032 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12033
12034         * verify.c (do_throw): added.
12035
12036         * verify.c (mono_method_verify): property verification of throw
12037
12038 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
12039
12040         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
12041         assemblies. Fixes #346425.
12042
12043 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
12044
12045         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
12046         FieldBuilders.
12047
12048         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
12049
12050         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
12051         prevent asserts when this is called with a token which might not be valid.
12052
12053         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
12054         lookup_dynamic_token_class with valid_token == FALSE.
12055
12056         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
12057
12058         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
12059
12060         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
12061         
12062 2007-12-10  Mark Probst  <mark.probst@gmail.com>
12063
12064         * gc.c: Don't delay threadpool thread finalization unless Mono is
12065         shutting down.
12066
12067 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12068
12069         * threads.c: turn an assert into a non-fatal warning.
12070
12071 2007-12-09  Robert Jordan  <robertj@gmx.net>
12072
12073         * icall.c (GetVirtualMethod): Add missing argument validation.
12074
12075 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
12076
12077         * verify.c (do_cast): added.
12078
12079         * verify.c (mono_method_verify): property verification of castclass and isinst.
12080
12081
12082 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
12083
12084         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
12085
12086         * verify.c (do_stelem): added.
12087
12088         * verify.c (mono_method_verify): property verification of stelem.X.
12089
12090 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12091
12092         * class.c, class-internals.h: Introduce an environment variable
12093         (MONO_GENERIC_SHARING) through which the extent of generic code
12094         sharing can be controlled (share all classes, share only corlib
12095         classes, or share nothing).
12096
12097         * object.c: Only create runtime generic context for classes for
12098         which sharing is enabled.
12099
12100 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
12101
12102         * verify.c (do_ldelem): refactor it to work with ldelem.any.
12103
12104         * verify.c (mono_method_verify): property verification of ldelem.any.
12105
12106 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
12107
12108         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
12109         added ldelem.X opcodes.
12110
12111         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
12112
12113         * verify.c: proper verification of ldelem.X 
12114
12115 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12116
12117         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
12118
12119 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
12120
12121         * verify.c (mono_method_verify): null literal requires special handling,
12122         the value pushed on stack need to be flagged as so.
12123
12124         * verify.c (do_ldelema): Verify ldelema properly.
12125
12126 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
12127
12128         * verify.c: Verify ldlen properly.
12129
12130 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
12131
12132         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
12133         to the target object's type. Fixes #346160.
12134
12135 2007-12-05  Dick Porter  <dick@ximian.com>
12136
12137         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
12138         Solaris needs the same workaround as BSD-derived systems.  Fixes
12139         bug 323524, patch by Burkhard Linke
12140         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
12141
12142 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
12143
12144         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
12145         handle to use when error dialog is shown; otherwise, update mask
12146         to show no error dialog when an error occurs.
12147
12148 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12149
12150         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
12151
12152         * class.c (mono_class_get_field_default_value): New helper function to initialize
12153         field->def_type and field->data.
12154
12155 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12156
12157         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
12158         the general one.
12159
12160         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
12161
12162         * marshal.c: Avoid depending on delegate->method_info being set.
12163
12164         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
12165         
12166         * object.c (mono_delegate_ctor): Set delegate->method.
12167
12168         * object-internals.h (struct _MonoDelegate): Add 'method' field.
12169
12170         * appdomain.c: Bump corlib version.
12171
12172 2007-11-27  Raja R Harinath  <harinath@gmail.com>
12173
12174         * metadata.c (mono_generic_inst_equal_full): Short-circuit
12175         equality check if we're comparing canonicalized MonoGenericInsts.
12176
12177 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12178
12179         * class.c (generic_array_methods): Call mono_class_setup_methods () before
12180         accessing class->methods.
12181
12182 2007-11-22  Dick Porter  <dick@ximian.com>
12183
12184         * threads.c: Ensure that the synch_cs is set before trying to use
12185         it.
12186
12187 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
12188
12189         * profiler.c: r89126 broke the statistial profiler, unbreak.
12190
12191 2007-11-22  Martin Baulig  <martin@ximian.com>
12192
12193         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
12194
12195         * mono-debug.c
12196         (mono_debug_debugger_version): Bump to 3.
12197         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
12198         -> mono_debugger_class_initialized().
12199
12200         * mono-debug-debugger.c
12201         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
12202
12203         * class.c
12204         (mono_debugger_start_class_init_func): Removed.
12205         (mono_debugger_class_loaded_methods_func): Added.
12206         (mono_class_setup_methods): Call it here.
12207
12208 2007-11-22  Martin Baulig  <martin@ximian.com>
12209
12210         * mono-debug.c
12211         (mono_debug_add_delegate_trampoline): New public method.
12212         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
12213
12214         * mono-debug.h
12215         (MonoSymbolTable): Added `global_data_table'.
12216         (MonoDebuggerTypeKind): Removed.
12217
12218 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
12221         these methods.
12222
12223         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12224         
12225 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
12226
12227         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
12228
12229 2007-11-20  Martin Baulig  <martin@ximian.com>
12230
12231         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
12232
12233         * mono-debug-debugger.c
12234         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
12235         (mono_debugger_remove_breakpoint): Likewise.
12236         (mono_debugger_check_breakpoints): Likewise.
12237         (mono_debugger_register_class_init_callback): New public method.
12238         (mono_debugger_remove_class_init_callback): Likewise.
12239         (mono_debugger_add_type): Likewise.
12240
12241         * mono-debug-debugger.h
12242         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
12243
12244 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
12245
12246         * class.c: more interface implementations needed for the
12247         array enumerator (fixes bug #341112).
12248
12249 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
12250
12251         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
12252         fix ParamName of ArgumentNullExceptions.
12253
12254 2007-11-17  Miguel de Icaza  <miguel@novell.com>
12255
12256         * reflection.c (mono_reflection_encode_sighelper): Generate the
12257         modopts and modreqs.   I have a useless test that crashes monodis,
12258         but that shows the code working.
12259
12260 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
12263         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
12264
12265 2007-11-15  Dick Porter  <dick@ximian.com>
12266
12267         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
12268         When joining a thread, it's the thread that's calling Join that
12269         gets WaitSleepJoin state not the target.  Fixes the standalone
12270         test case in bug 334740, and hopefully the whole bug too.
12271
12272 2007-11-15  Dick Porter  <dick@ximian.com>
12273
12274         * process.c: Read file version info from the files pointed at by
12275         process modules, not the current process.  Fixes bug 315969.
12276
12277         Use windows typedef names in some places to fix warnings on the
12278         windows build.
12279
12280 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12281
12282         * image.c, metadata-internals.h: Added a generic_class_cache hash
12283         to MonoImage for looking up generic classes when sharing generics.
12284
12285 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12286
12287         * sgen-gc.c: warning cleanups.
12288
12289 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
12292         inherited properties.
12293
12294 2007-11-14  Mark Probst  <mark.probst@gmail.com>
12295
12296         * object.c, class-internals.h: Added more information to the
12297         runtime generic context.
12298
12299 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
12302         instead of just the target method. Generalize the abstract method handling to
12303         handle any non-static method.
12304
12305         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
12306         mono_marshal_get_delegate_invoke () signature change.
12307
12308 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12309
12310         * class.c, class-internals.h: Made
12311         mono_type_get_basic_type_from_generic () public.  Fixed member
12312         access check for shared generics.
12313
12314         * loader.c: Don't insert field into field cache if it's part of a
12315         non-inflated generic class.
12316
12317         * domain.c, domain-internals.h: The generic sharing context is now
12318         part of the jit info data structure.  Added two accessor
12319         functions.
12320
12321 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12322
12323         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
12324         the array Get/Set/Address methods, since the JIT inlines them.
12325
12326         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
12327
12328         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
12329         (mono_image_init): Initialize runtime_invoke_direct_cache.      
12330
12331         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
12332         mono_marshal_get_delegate_invoke signature change.
12333
12334         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
12335         an additional argument. Add support for invoking abstract methods.
12336
12337         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
12338
12339         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
12340
12341 2007-11-09  Mark Probst  <mark.probst@gmail.com>
12342
12343         * class.c: Do field layout for open generic classes as well.
12344
12345 2007-11-09  Mark Probst  <mark.probst@gmail.com>
12346
12347         * gc.c, gc-internal.h: Don't finalize threadpool threads with
12348         other objects, because the threadpool is still around.  Put them
12349         in a list instead and after finalizing all other objects in the
12350         root domain shut down the thread pool and then finalize the
12351         threads.  Fixes bug #337383.
12352
12353         * threads.c, thread-types.h: New mono_thread_create_internal()
12354         function for marking a thread with the threadpool flag before it
12355         started.  Set synch_cs to NULL after freeing it.
12356
12357         * threadpool.c: Mark threadpool threads before they start.
12358
12359 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12360
12361         * reflection.h, reflection.c: don't export random functions
12362         and lazy load dbnull and missing objects.
12363
12364 2007-11-07  Jonathan Chambers <joncham@gmail.com>
12365
12366         * class.c: Initialize COM types if COM interfaces
12367         are present (not just COM classes).
12368         
12369         Code is contributed under MIT/X11 license.
12370
12371 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12372         * reflection.c:
12373         create_dynamic_mono_image: hook module profiler events (dynamic case).
12374         mono_image_basic_init: hook assembly profiler events (dynamic case).
12375
12376 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12377         * profiler.c:
12378         simple_appdomain_unload: completely terminate the profiler
12379         instead of only processing the statistical samples.
12380         simple_shutdown: make sure this is really called exactly once,
12381         even in multithreaded applications, and always listen to
12382         appdomain events.
12383         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
12384         here, the "[un]load" functions will do it.
12385         Fixes bugs #333791 and #325261.
12386
12387 2007-11-07  Geoff Norton  <gnorton@novell.com>
12388
12389         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
12390         rather than depend on __APPLE__.
12391
12392 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12393
12394         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
12395
12396 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
12397
12398         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
12399         UTF16 MonoString. Fix the crash from bug #335488
12400
12401 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
12402
12403         * marshal.c: Correct (for non-Win32 OS) length != size in 
12404         mono_string_from_bstr. Fix #339530.
12405
12406 2007-11-06  Geoff Norton  <gnorton@novell.com>
12407
12408         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
12409         to succeed
12410
12411 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
12412
12413         * process.c: Added run-time GetProcessId API detection for Windows.
12414
12415 2007-11-04  Miguel de Icaza  <miguel@novell.com>
12416
12417         * reflection.c  (mono_param_get_objects): If a parameter has the
12418         attribute [System.Runtime.InteropServices.Optional] we should
12419         set the DefaultValue of the ParameterInfo to be
12420         System.Reflection.Missing instead of DBNull.
12421
12422         See bug #339013.
12423
12424         (mono_get_reflection_missing_object): New method,
12425         returns the System.Reflection.Missing.Value singleton instance.
12426
12427 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
12428
12429         * culture-info-table.h : regenerated.
12430
12431 2007-11-02  Jonathan Chambers <joncham@gmail.com>
12432
12433         * icall.c: Use GetEnvironmentStrings on windows
12434         so we are using the same environment block as 
12435         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
12436         #333740.
12437         
12438         Code is contributed under MIT/X11 license.
12439
12440 2007-10-31  Martin Baulig  <martin@ximian.com>
12441
12442         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
12443
12444         * mono-debug-debugger.h
12445         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
12446
12447 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
12448
12449         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
12450         classes.
12451
12452 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
12453
12454         * culture-info-table.h : regenerated.
12455
12456 2007-10-30  Robert Jordan  <robertj@gmx.net>
12457
12458         * icall-def.h, icall.c:
12459         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
12460
12461         Code is contributed under MIT/X11 license.
12462
12463 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
12464
12465         * class.c (mono_class_setup_vtable): Find the inflated methods in the
12466         inflated class instead of inflating them again.
12467         
12468         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
12469         dynamic case.
12470
12471         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
12472         Call setup_supertypes () after klass->parent is set.
12473         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
12474
12475         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
12476         for inflated instances of not yet created dynamic generic classes.
12477         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
12478         times from inflated_method.
12479         (methodbuilder_to_mono_method): Ditto.
12480
12481 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
12482
12483         * gc.c: code cleanup and removed old untested option of not creating the
12484         finalizer thread.
12485
12486 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
12487
12488         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
12489         creating a jump trampoline for dynamic methods.
12490
12491 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
12492
12493         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
12494         generic TypeBuilders when called from another method of the same type (bug #335131).
12495
12496
12497 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
12498
12499         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
12500         doesn't seem to work perfectly.
12501         
12502         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
12503         called multiple times.
12504         (methodbuilder_to_mono_method): Ditto.
12505         (resolve_object): Inflate FieldBuilder's.
12506
12507 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12508
12509         * string-icalls.c, string-icalls.h, appdomain.c: patch from
12510         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
12511         RemoveEmptyEntries in the string.Split implementation (bug #322375).
12512
12513 2007-10-26  Dick Porter  <dick@ximian.com>
12514
12515         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
12516         Thread initialisation changes
12517
12518 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
12519
12520         * verify.c: fix compatibility check between arrays and System.Array
12521
12522 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
12523
12524         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
12525         too. Fixes #336999.
12526
12527 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12528
12529         * object.c (mono_value_box): Use typed allocation here.
12530
12531 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12532
12533         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
12534         trampoline instead of compiling the method right away.
12535
12536         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
12537
12538 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
12541         related fields for dynamic classes. Fixes #334493.
12542
12543 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
12544
12545         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
12546         
12547         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
12548
12549         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
12550         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
12551
12552         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
12553
12554         * reflection.c (create_generic_typespec): Initialize klass->generic_container
12555         if needed.
12556         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
12557
12558 2007-10-18  Jonathan Chambers <joncham@gmail.com>
12559
12560         * marshal.c: Use correct key when removing item
12561         from ccw_hash.
12562         
12563         Code is contributed under MIT/X11 license.
12564
12565 2007-10-17  William Holmes  <billholmes54@gmail.com>
12566
12567         *marshal.c: Adding a case to marshal booleans to U1
12568
12569         Code is contributed under MIT/X11 license.
12570
12571 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
12572
12573         * class.c (mono_class_from_name): Search the modules compromising dynamic
12574         assemblies. Fixes #331601.
12575
12576 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
12579         exception if the type name contains an assembly component. Fixes #334203.
12580
12581         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
12582         modules inside dynamic assemblies. Fixes #334200.
12583         
12584         * reflection.c: Set image->public_key and image->public_key_length;
12585
12586         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
12587         fields.
12588
12589         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
12590         
12591 2007-10-16  Mark Probst  <mark.probst@gmail.com>
12592
12593         * metadata.c: Implemented correct comparing of generic classes.
12594         An inflated generic class can be equal to a non-inflated one if it
12595         is inflated with generic type variables as type arguments.  Fixes
12596         bug #333798.
12597
12598 2007-10-15  Dick Porter  <dick@ximian.com>
12599
12600         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
12601         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
12602         81646.
12603
12604         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
12605         instead of a monitor lock.  This means that monitor_try_enter and
12606         co can set the thread state safely.
12607         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
12608         thread_interrupt_requested, so interrupt actually works.
12609
12610         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
12611         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
12612         state accessor function
12613
12614 2007-10-15  Martin Baulig  <martin@ximian.com>
12615
12616         * mono-debug.h
12617         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
12618         the debugger with the current runtime.
12619
12620 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12621
12622         * object.c, object-internals.h: added the ability to set a single
12623         trampoline for all the slots in a vtable.
12624
12625 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12626
12627         * marshal.c: deal with a possible race condition during multicast
12628         delegate invocation.
12629
12630 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12631
12632         * class.c: ensure value type methods don't have the synchronized
12633         flag set.
12634
12635 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12636
12637         * string-icalls.c, string-icalls.h: reverted unapproved patch that
12638         breaks the build.
12639
12640 2007-10-11  Joel Reed  <joelwreed@comcast.com>
12641
12642         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
12643         to take an options parameter so that empty entries can be removed during
12644         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
12645
12646 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12647
12648         * marshal.c: make sure we don't store the signature from a dynamic
12649         method into the runtime invoke cache (bug #327189).
12650
12651 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
12652
12653         * marshal.c: make sure the wrapper methods are properly initialized.
12654
12655 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12656
12657         * metadata.c, metadata-internals.h: Generalized
12658         mono_type_stack_size() to mono_type_stack_size_internal() which
12659         takes an additional argument specifying whether it allows open
12660         types.
12661
12662 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
12663
12664         * verify.c (do_invoke_method): handle typedbyref params
12665         correctly and check for unverifiable return values.
12666
12667         * verify.c (do_newobj): fix a warning.
12668
12669 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
12670
12671         * verify.c: don't tread typedbyref as allways unverifable,
12672         so uses, like (ld/st)loc.0 are valid. verify for the cases
12673         that it matters, like boxing related operations.
12674
12675 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
12676
12677         * verify.c: add verification of the newobj opcode. verification
12678         of delegate instantation still missing due ldftn and virldftn not
12679         pushing the function type on stack
12680
12681 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12682
12683         * class-internals.h: Runtime generic context data structure
12684         definition.
12685
12686         * object.c: Initialization of runtime generic context at runtime
12687         vtable creation time.
12688
12689 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
12690         * class.c (mono_class_create_from_typedef,
12691         mono_class_from_generic_parameter, mono_ptr_class_get,
12692         mono_fnptr_class_get, mono_bounded_array_class_get)
12693         * domain.c (mono_domain_create, mono_domain_free)
12694         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
12695         * image.c (do_mono_image_load, mono_image_close):
12696         Hooked up load-unload profiler events.
12697
12698 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12699
12700         * domain.c: track statistics about the actual amount of native code
12701         allocated.
12702
12703 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12704
12705         * class.c: the valuetype enumerators don't have the additional
12706         supertypes interfaces.
12707
12708 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
12709
12710         * class.c: need more interfaces setup for the IEnumerator<T>
12711         object created for arrays (tests/ienumerator-interfaces.2.cs).
12712
12713 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
12714
12715         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
12716
12717 2007-10-05  Alp Toker  <alp@atoker.com>
12718
12719         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
12720         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
12721         #315863.
12722
12723 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
12724
12725         * verify.c (verify_type_compatibility_full): verification of
12726         compatibility improved, validates correctly non-strict checks between
12727         native int and I4 types different than (unsigned)int32.
12728
12729         * verify.c (do_store_indirect): added, do all verification of
12730         ldind.X opcodes. 
12731
12732         * verify.c (get_load_indirect_mono_type): renamed to
12733         get_indirect_op_mono_type, as it now returns the MonoType for 
12734         ldind.X and stind.X opcodes.
12735
12736 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
12737
12738         * reflection.c: Fix the encoding of generic type definition for
12739         TypeBuilders.
12740
12741         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
12742         mono_image_typedef_or_ref but allows to specify if typespec lookups should
12743         be made. Typespec check is done prior to typeref cache lookup.
12744
12745         * reflection.c (mono_image_typedef_or_ref): now just delegate to
12746         mono_image_typedef_or_ref_full.
12747
12748         * reflection.c (encode_generic_class): encode the generic class
12749         directly instead of calling encode_type.
12750
12751         * reflection.c (encode_type): encode the generic type definition
12752         MonoClass as a generic instantiation.
12753
12754         * reflection.c (create_typespec): cache typespec tokens in
12755         the assembly->typespec cache. Don't create typespec for a generic
12756         instance MonoClass. Create typespec for the generic type defintion.
12757
12758         * reflection.c (create_generic_typespec): encode the generic
12759         class directly instead of calling encode_type.
12760
12761         * reflection.c (mono_image_create_token): encode the generic
12762         type definition not using a typespec for MonoType instances.
12763
12764
12765 2007-10-04  Raja R Harinath  <rharinath@novell.com>
12766
12767         Fix #328812
12768         * class.c (mono_image_init_name_cache): Don't return nested
12769         'protected internal' classes.
12770         (mono_class_from_name_case): Likewise.
12771
12772 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
12773
12774         * icall-def.h, icall.c : get_bundled_machine_config() is now the
12775           common function used by both DefaultConfig in System.dll and
12776           InternalConfigurationHost in System.Configuration.dll.
12777
12778 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12779
12780         * class.c: automatically add to vectors only a few essential explicit
12781         generic interfaces. The rest of the interfaces that arrays should
12782         provide are currently implicitly added (but still not lazily, see the
12783         design in the discussion of bug#325495 for the details of what is
12784         needed for that). Additionally, implicit interfaces are assigned the
12785         same vtable slot as the explicit interfaces (as they are compatible):
12786         this enables huge memory savings since we don't need to instantiate
12787         as many memthods and as large vtables anymore. Also, Since
12788         GetEnumerator<T> returns an instance of a type that is required to
12789         support a similarly large set of interfaces as arrays, we add
12790         implicit interfaces and interface offset sharing support to those
12791         types, too. This change adds all the required interfaces so that
12792         the anonarray.cs test case in the bug report works (we don't add
12793         all the interfaces to arrays of arrays 3-level deep and more because
12794         of the memory requirements explained in the bug and since they are much
12795         less common: the lazy-loading support will enabled them to work, too).
12796
12797 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
12798
12799         * verify.c (merge_stacks): major clean up, all type compatibility
12800         checks are done by verify_type_compatibility. This fix my earlier lack
12801         of understanding of the CLR type system and merge_stacks no longer looks
12802         scary.
12803
12804         * verify.c: fixed some bad spelling.
12805
12806 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
12807
12808         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
12809         a given stack slock.
12810         
12811         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
12812         verify_type_compatibility_full. This removed a near indentical function and fixed
12813         handling of Int32 and IntPtr across all opcodes.
12814
12815 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12816
12817         * class.c: only vectors have the additional generic interfaces.
12818
12819 2007-10-01  Jonathan Chambers <joncham@gmail.com>
12820
12821         * mono-config.c: Use g_strcasecmp instead of
12822         strcasecmp like everywhere else to fix
12823         compilation with MSVC.
12824         
12825         Code is contributed under MIT/X11 license.
12826
12827 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12828
12829         * object.c, object-internals.h: refactored the IMT code to enable
12830         building a single slot at a time and lazily creating the IMT trampolines
12831         and thunks.
12832
12833 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
12834
12835         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
12836
12837         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
12838         Fixes #328501.
12839         
12840 2007-09-29  Raja R Harinath  <harinath@gmail.com>
12841
12842         * loader.c (method_from_methodspec): Rearrange to avoid
12843         un-necessary exposition.  Don't assert out if the method's
12844         declaring type is a generic type definition.
12845
12846 2007-09-28  Martin Baulig  <martin@ximian.com>
12847
12848         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
12849
12850 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
12851
12852         * class-internals.h: optimize field layout of MonoClass to
12853         requires less cachelines at runtime and save a few bytes on 64 bit
12854         systems.
12855
12856 2007-09-28  Jb Evain  <jbevain@novell.com>
12857
12858         * reflection.c: when encoding type names in custom attributes,
12859         if the type is a closed generic type, its generic arguments
12860         have to be serialized as AssemblyQualifiedName, so that when
12861         they are deserialized, it's possible to re-create them properly.
12862         Fixes #329450.
12863
12864
12865 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12866
12867         * object.c, class-internals.h: added delegate-creation counter.
12868
12869 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12870
12871         * class.c: cleanup of the code that synthetizes interfaces for
12872         arrays in 2.0: saves quit a bit of corlib mempool memory.
12873         Code to fix bug #325495 ifdeffed out for now until the issues
12874         with memory usage and O(n^2) behaviour are fixed.
12875
12876 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12877
12878         * marshal.c: when possible, do not duplicate the name of the methods
12879         in the method builder and in the generated MonoMethod.
12880
12881 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
12882         * verify.c: added support for type checking ldind_* opcodes.
12883
12884 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
12885
12886         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
12887         which is used to distinguish the fully open instantiation of a TypeBuilder
12888         with the rest. This temporary hack is required to restore the property that
12889         the fully open instantiation is the same type of the generic type definition.
12890
12891         * class-internals.h (mono_generic_class_is_generic_type_definition):
12892         new function as part of the internal API.
12893
12894         * class.c (inflate_generic_type): return NULL when the generic inst is
12895         fully open. The fully open generic type is now the same as the generic type
12896         definition for non TypeBuilder types.
12897
12898         * class.c (mono_generic_class_get_class): removed assert since it is
12899         no longer valid, gklass->cached_class can point to the generic type definition.
12900
12901         * class.c (mono_generic_class_is_generic_type_definition): new.
12902
12903         * metadata.c (mono_generic_class_hash): added is_tb_open field
12904         to the hash calculation.
12905
12906         * metadata.c (free_generic_class): if the generic class is associated
12907         with the generic type definition, its field will come from the mempool and
12908         must not be freed.
12909
12910         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
12911         new, this function identifies the corner case of a TypeBuilder fully open
12912         instantiation.
12913
12914         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
12915         for lookup. Set gclass->cached_class to be the container class in case of
12916         the fully open instantiation of non TypeBuilder types.
12917
12918         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
12919         to compare generic classes.
12920
12921         * reflection.c (method_encode_methodspec): remove assert that
12922         no longer is valid.
12923
12924         * reflection.c (mono_reflection_generic_class_initialize): add
12925         an aditional assert to ensure the proper type is used.
12926
12927 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
12928
12929         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
12930         to enjoy it.
12931
12932 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
12933
12934         * verify.c (push_arg): Fixed support for ldarga
12935         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
12936         MonoType used as first arg in case of instance calls.
12937
12938 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
12939
12940         * verify.c: Support for verifying VAR and MVAR types, 
12941
12942 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
12943
12944         * icall.c (ves_icall_get_property_info): Set the reflected type of the
12945         accessors correctly.
12946
12947 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12948
12949         * threads.c: support OSX and other systems in
12950         mono_thread_get_stack_bounds (bug #328026).
12951
12952 2007-09-25  Martin Baulig  <martin@ximian.com>
12953
12954         * mono-debug.h
12955         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
12956
12957 2007-09-24  Martin Baulig  <martin@ximian.com>
12958
12959         * mono-debug.h
12960         (MonoDebugClassEntry): Moved the definition of this struct into
12961         mono-debug.c to make it private.
12962
12963         * mono-debug.c
12964         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
12965         type table per symbol file, we don't need to store the symfile id
12966         any longer.
12967
12968 2007-09-24  Martin Baulig  <martin@ximian.com>
12969
12970         Create one type table per symbol file, since a `MonoClass *' gets
12971         invalid when its image is unloaded.
12972
12973         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
12974         (MonoDebugHandle): Added `type_table'.
12975
12976 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12977
12978         * mempool.c, mempool.h: added mono_mempool_new_size () API
12979         to be able to specify a smaller initial size for the pool.
12980         Adjusted the code to slowly increase pool size before using
12981         the previous default size.
12982         * image.c: use a small initial size for image mempools.
12983
12984 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
12985
12986         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
12987         Fixes ##320990.
12988
12989         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
12990         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
12991
12992 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
12993
12994         * metadata.c (mono_type_create_from_typespec): Remove an invalid
12995         free. Fixes #327438.
12996
12997 2007-09-21  Raja R Harinath  <harinath@gmail.com>
12998
12999         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
13000         generic instantiations, etc.
13001         <MONO_TYPE_ARRAY>: Likewise.
13002
13003 2007-09-21  Martin Baulig  <martin@ximian.com>
13004
13005         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
13006         these structs were never defined.
13007         (MonoDebugHandle): Removed the `_priv' field, it was never used.
13008
13009 2007-09-21  Martin Baulig  <martin@ximian.com>
13010
13011         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
13012
13013 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
13014
13015         * image.c: removed the guid hash tables: we can get the same info
13016         without the additional memory usage hit (partially fixes also bug #327052).
13017
13018 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
13019
13020         * profiler.h, profiler-private.h, profiler.c: add a new profiler
13021         event to handle unloading methods. After the event is called, the
13022         corresponding MonoMethod* must be considered invalid.
13023         * loader.c (mono_free_method): call the new mono_profiler_method_free
13024         event.
13025
13026 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13027
13028         * domain-internals.h: New flag in MonoJitInfo which marks shared
13029         generic methods.  New hash table (shared_generics_hash) in
13030         MonoDomain to keep track of shared generic methods.  Prototypes
13031         for functions to register and lookup shared generic methods.
13032
13033         * domain.c: Support for registering and looking up shared generic
13034         methods via a hash table (shared_generics_hash) in MonoDomain.
13035
13036         * class-internals.h: New exception to signal failure of shared
13037         compilation of a generic method.  New counters for generics
13038         sharing in MonoStats.
13039
13040 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13041
13042         * image.c, metadata-internals.h: don't keep a file descriptor open
13043         for loaded assemblies (bug#325988).
13044
13045 2007-09-19  Raja R Harinath  <rharinath@novell.com>
13046
13047         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
13048         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
13049         use the corresponding datatypes.
13050         (type_in_image): Update to changes.
13051         (CleanForImageUserData): Simplify.
13052         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
13053         Avoid quadratic behaviour in handling the "stolen" list by
13054         separating the filter predicate out, and by prepending the stolen
13055         items rather than appending them.
13056         (steal_ginst_in_image): Likewise.
13057         (mono_metadata_clean_for_image): Update to changes.
13058
13059 2007-09-19  Martin Baulig  <martin@ximian.com>
13060
13061         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
13062
13063 2007-09-19  Martin Baulig  <martin@ximian.com>
13064
13065         * mono-debug.c (mono_debug_cleanup): Don't call
13066         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
13067
13068 2007-09-19  Raja R Harinath  <harinath@gmail.com>
13069
13070         Fix crash on 'make run-test' in mcs/errors
13071         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
13072         Avoid more potential allocations in mono_class_from_mono_type.
13073         (ginst_in_image): Update to changes.
13074         (gclass_in_image): Rearrange slightly.
13075
13076 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13077
13078         * class.c (mono_class_init): Move the code that sets up class->methods to 
13079         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
13080
13081         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
13082         canonical instance of an inflated generic signature.
13083         (mono_type_create_from_typespec): Remove an invalid free.
13084
13085         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
13086
13087 2007-09-18  Marek Habersack  <mhabersack@novell.com>
13088
13089         * domain-internals.h: added a declaration of the
13090         mono_assembly_load_full_nosearch internal function.
13091
13092         * assembly.c (mono_assembly_load_with_partial_name): use
13093         mono_try_assembly_resolve return value properly.
13094         (mono_assembly_load_full_nosearch): copied the function body from
13095         mono_assembly_load_full, without the code to invoke assembly
13096         search hooks.
13097         (mono_assembly_load_full): calls the above new function and if the
13098         assembly is not resolved, invokes the search hooks.
13099
13100         * appdomain.c (mono_runtime_init): restore the global postload
13101         assembly search handlers.
13102
13103 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13104
13105         * class.c (mono_class_init): Make sure class->methods and class->properties
13106         are never NULL in the generics case.
13107
13108         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
13109
13110 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13111
13112         * metadata.c (free_generic_class): Disable some code to fix the build.
13113
13114         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
13115
13116         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
13117         from the image mempool.
13118
13119         * metadata.c (free_generic_class): Free more data from the inflated class.
13120
13121         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
13122
13123         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
13124         mempool.
13125         (mono_type_create_from_typespec): Ditto.
13126
13127         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
13128         MonoImage to the caller.
13129         (mono_init_internal): Save the opened image in a global variable.
13130         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
13131
13132         * reflection.c (resolve_object): Fix a leak.
13133
13134         * metadata.c: Fix the freeing of data in the generics caches.
13135         
13136         * metadata.c (free_generic_inst): Comment this out to fix the build.
13137         (free_generic_class): Ditto.
13138
13139         * metadata.c: Free cached generic methods, instantinations and classes when
13140         they are removed from the caches.
13141         (mono_metadata_free_type): Free the type itself.
13142
13143         * class.c: Free the result of mono_class_inflate_generic_type () in a few
13144         places.
13145
13146 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
13147
13148         * boehm-gc.c: restrict managed allocs to __thread supporting
13149         architectures.
13150
13151 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
13152
13153         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
13154         (mono_generic_class_get_class): Fix a leak.
13155
13156         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
13157         mono_metadata_free_type ().
13158         (mono_metadata_inflate_generic_inst): Fix a leak.
13159
13160 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13161
13162         * mono-debug.c (free_header_data): Fix a leak missed earlier.
13163
13164         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
13165         mempool.
13166
13167         * mono-debug.c (mono_debug_close_image): Fix call to 
13168         g_hash_table_remove ().
13169
13170 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
13171
13172         * icall-def.h: redirect all the string ctor to the managed
13173         CreateString () methods.
13174         * string-icalls.c, string-icalls.h: removed dead code for string
13175         ctors and icalls.
13176
13177 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13178
13179         * mono-debug.c: Fix memory leaks.
13180
13181 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13182
13183         * threads-types.h: Implement mono_hazard_pointer_set and 
13184         mono_hazard_pointer_clear macros using do/while(0) to fix
13185         compilation with MSVC.
13186         
13187         Code is contributed under MIT/X11 license.
13188
13189 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
13192         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
13193
13194 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
13195
13196         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
13197         icalls.
13198
13199 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
13200
13201         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
13202         managed-code allocated as well.
13203
13204 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13205
13206         * class.c (mono_class_is_assignable_from): Add support for generic variance.
13207
13208 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
13209
13210         * boehm-gc.c: fixed the build after the AOT changes.
13211
13212 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13213
13214         * wrapper-types.h: Add an ALLOC wrapper type.
13215
13216         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
13217         reference managed allocator methods.
13218
13219 2007-09-12  Marek Safar  <marek.safar@gmail.com>
13220
13221         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
13222         of Type array and not MonoType, a fix suggested by Hari.
13223         
13224 2007-09-12  Jonathan Chambers <joncham@gmail.com>
13225
13226         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
13227         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
13228         
13229         Code is contributed under MIT/X11 license.
13230
13231 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
13232
13233         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
13234
13235 2007-09-12  Marek Habersack  <mhabersack@novell.com>
13236
13237         * image.c (do_mono_image_open): if assembly file fails to open and
13238         MONO_IOMAP is in effect, try to find the path in a
13239         case-insensitive way.
13240
13241         * appdomain.c (mono_runtime_init): do not install postload hooks -
13242         tests show that MS.NET doesn't use anything of that sort to
13243         trigger the AppDomain.AssemblyResolve event.
13244         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
13245         made non-static.
13246         (mono_runtime_init): init portability helpers here.
13247
13248         * assembly.c (mono_assembly_load_with_partial_name): if other   
13249         attempts fail, trigger the AppDomain.AssemblyResolve event handler
13250         to resolve the assembly.
13251
13252         * domain-internals.h: added mono_try_assembly_resolve and marked
13253         it as internal.
13254
13255 2007-09-11  Jb Evain  <jbevain@novell.com>
13256
13257         * object-internals.h (MonoReflectionDynamicMethod): add
13258         a `MonoReflectionType *owner` field. The owner is used
13259         * reflection.c:
13260         (mono_reflection_create_dynamic_method): use the owner of the dynamic
13261         method as the class declaring the dynamic method.
13262         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
13263         dynamic method to the declaring type of the methodbuilder.
13264
13265 2007-09-11  Mark Probst  <mark.probst@gmail.com>
13266
13267         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
13268         rules for calling methods via reflection.
13269
13270 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
13271
13272         * reflection.c (resolve_object): Add support for MonoGenericClass. 
13273         Inflate MonoType's.
13274
13275 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13276
13277         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
13278         provide a managed method that does fast allocations without needing
13279         a managed->unmanaged transition. Boehm GC implementation currently
13280         enabled for ptrfree objects on sane architectures.
13281
13282 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
13283
13284         * marshal.c, marshal.h: exported a couple of useful functions and
13285         added mono_mb_get_label () to easily handle backward branches.
13286
13287 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
13288
13289         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
13290
13291 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
13292
13293         * loader.c (find_method): Fixed the regression introduced while
13294         fixing bug #81466.
13295
13296 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
13297
13298         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
13299         well.
13300         
13301         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
13302         icall.c reflection.c: Pass a MonoGenericContext argument to 
13303         mono_lookup_dynamic_token ().
13304
13305         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
13306         #82744.
13307         
13308 2007-09-09  Robert Jordan  <robertj@gmx.net>
13309
13310         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
13311         for generic methods.
13312
13313         * object.c (mono_object_get_virtual_method): Handle generic methods.
13314         Fixes bug #78882.
13315
13316         Code is contributed under MIT/X11 license.
13317
13318 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
13319
13320         * image.c: fix locking in mono_image_load_file_for_image ().
13321
13322 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
13323
13324         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
13325         used only as a cache: added an icall to fill it.
13326
13327 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
13328
13329         * reflection.h: exposed mono_reflection_free_type_info
13330         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
13331         since mono_reflection_bind_generic_parameters makes a copy of it.
13332         * reflection.c (free_type_info): subinfos should be freed.
13333         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
13334         made non static.
13335         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
13336         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
13337         this fixes #82695 and #81726.
13338    
13339
13340 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
13341
13342         * process.h, process.c:  added support for user profile/info in
13343           ProcessStartInfo. For now only Windows works.
13344
13345 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13346
13347         * metadata.c: consider the generic arguments when comparing
13348         signatures (bug #82614).
13349
13350 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13351
13352         * cil-coff.h, image.c: updated assembly loader to cope with the
13353         PE32+ 64 bit file format.
13354
13355 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13356
13357         * assembly.c, class.c, domain.c, loader.c: remove useless
13358         inclusion of cil-coff.h.
13359
13360 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
13361
13362         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
13363         if interface is marked with CoClassAttribute. 
13364    
13365         Code is contributed under MIT/X11 license.
13366
13367 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
13368
13369         * sgen-gc.c: ensure no object from the to space is copied again or finalized
13370         if it's seen twice in major collections.
13371
13372 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13373
13374         * sgen-gc.c: big objects are not copied to the gray area, but they
13375         need to be considered for scanning, too, if they are brought alive
13376         by an object ready for finalizations or a survived one.
13377
13378 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
13379
13380         * sgen-gc.c: properly account the number of disappearing links when
13381         they are nullified.
13382
13383 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
13384
13385         * sgen-gc.c: share the code to scan the registered roots between the
13386         different types of collections.
13387
13388 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13389
13390         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
13391
13392 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
13393
13394         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
13395         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
13396
13397 2007-08-28  Mark Probst  <mark.probst@gmail.com>
13398
13399         * security-manager.c (mono_security_manager_get_methods):
13400         LinkDemandSecurityException now has 2 arguments instead of 3.
13401
13402 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
13403
13404         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
13405         platforms which need it.
13406
13407 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13408
13409         * sgen-gc.c: unregister thread data structures with a pthread_key_t
13410         dtor.
13411
13412 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
13413
13414         * threads.c: free the thread static data on thread exit.
13415
13416 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
13417
13418         * class.c: walk the hierarchy to find the generic definition for
13419         a class (fixes runtime part of bug #82498).
13420
13421 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
13422
13423         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
13424         ...
13425
13426         * image.c (mono_image_close): Here. Hopefully fixes #82510.
13427
13428 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13429
13430         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
13431
13432 2007-08-24  Robert Jordan  <robertj@gmx.net>
13433
13434         * appdomain.c: don't perform the ':'->';' substitution on Win32.
13435
13436 2007-08-24  Jb Evain  <jbevain@novell.com>
13437
13438         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
13439         for byref types.
13440
13441 2007-08-24  Mark Probst  <mark.probst@gmail.com>
13442
13443         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
13444         #82286.
13445
13446 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
13447
13448         * assembly.c: Fix a warning.
13449         
13450 2007-08-23  Marek Habersack  <mhabersack@novell.com>
13451
13452         * appdomain.c: parse the <runtime> section looking for the probing
13453         element with the 'privatePath' attribute, which sets additional
13454         directories in which the runtime should look for assemblies.
13455
13456 2007-08-23  Robert Jordan  <robertj@gmx.net>
13457
13458         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
13459         Fixes #82499.
13460
13461 2007-08-23  Martin Baulig  <martin@ximian.com>
13462
13463         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
13464         _mono_debug_init_corlib() and remove it from the header file.
13465
13466 2007-08-23  Martin Baulig  <martin@ximian.com>
13467
13468         * mono-debug-debugger.c
13469         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
13470         don't notify the debugger about it.
13471
13472         * mono-debug-debugger.h
13473         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
13474
13475 2007-08-23  Robert Jordan  <robertj@gmx.net>
13476
13477         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
13478         Code is contributed under MIT/X11 license.
13479
13480 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13481
13482         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
13483
13484 2007-08-22  Martin Baulig  <martin@ximian.com>
13485
13486         * mono-debug.c: Store debugging info on a per-domain basis and
13487         free it on domain unload.  Add support for unloading symbol files.
13488
13489         * mono-debug.h
13490         (MonoDebugList): New typedef.
13491         (MonoSymbolTable):
13492         - add `data_tables and `type_table'.
13493         - replace 'symbol_files' and `num_symbol_files' with a
13494           `MonoDebugList *'.
13495         (mono_debug_data_table): Removed.
13496         (mono_debug_list_add): New public function.
13497         (mono_debug_list_remove): New public function.
13498         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
13499         (mono_debug_init_2_memory): Renamed into
13500         mono_debug_open_image_from_memory().
13501         (mono_debug_close_image): New public function.
13502         (mono_debug_domain_create): Likewise.
13503         (mono_debug_domain_unload): Likewise.
13504         (MONO_DEBUGGER_VERSION): Bump to 60.
13505
13506         * mono-debug-debugger.h
13507         (MonoDebuggerEvent):
13508         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
13509         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
13510         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
13511         - rename `THREAD_CREATED' and `THREAD_EXITED' into
13512           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
13513         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
13514           meaning.
13515         (mono_debugger_add_symbol_file): Removed.
13516         (mono_debugger_add_type): Removed.
13517         (mono_debugger_lookup_type): Removed.
13518         (mono_debugger_lookup_assembly): Removed.
13519
13520         * domain.c
13521         (mono_domain_create): Call mono_debug_domain_create().
13522         (mono_init_internal): Call mono_debug_init_corlib().
13523
13524         * assembly.c
13525         (mono_assembly_close): Call mono_debug_close_image().
13526
13527 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13528
13529         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
13530         mmap call.
13531
13532 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
13533
13534         * sgen-gc.c: ensure section->pin_queue_end is initialized
13535         correctly when non pinning objects in the section have been found.
13536
13537 2007-08-22  Marek Habersack  <mhabersack@novell.com>
13538
13539         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
13540         containing a list of directories separated by ':'. MSDN docs say
13541         the directories should be separated with ';'. Part of a bugfix for
13542         bug #81446
13543
13544 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
13545
13546         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
13547         it should MonoType and not MonoClass.
13548
13549 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
13550
13551         * culture-info-table.h : regenerated.
13552
13553 2007-08-20  William Holmes  <billholmes54@gmail.com>
13554
13555         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
13556          to call ReplaceFile Kernel32 on windows or in io-layer.
13557         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
13558         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
13559          as an internal call.
13560
13561         Code is contributed under MIT/X11 license.
13562
13563 2007-08-20  Jb Evain  <jbevain@novell.com>
13564
13565         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
13566         and MONO_EXCEPTION_FIELD_ACCESS.
13567
13568         * debug-helpers.[c|h]: new mono_field_full_name function.
13569
13570 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13571
13572         * class.c: Removed class_security_level() and moved it to
13573         security-core-clr.c.
13574
13575         * security-core-clr.c, security-core-clr.h: class_security_level()
13576         is now public and renamed to mono_security_core_clr_class_level().
13577         It also looks for security attributes in the classes a class is
13578         nested in.
13579
13580 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13581
13582         * security-core-clr.c, security-core-clr.h: CoreCLR security
13583         utility functions.
13584
13585         * Makefile.am: Added security-core-clr.[ch].
13586
13587         * security-manager.c, security-manager.h: Functions and enum for
13588         setting and getting the security mode.
13589
13590         * class.c: CoreCLR security checks.
13591
13592 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13593
13594         * icall-def.h, process.c, process.h: implemented icall to get
13595         user/system processor times.
13596
13597 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13598
13599         * domain.c, threads.c, class-internals.h, domain-internals.h: New
13600         reader-lock-free jit_info_table.
13601
13602 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
13603
13604         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
13605
13606         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
13607
13608         * object-internals.h (MonoException): Add missing _data member.
13609
13610 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
13611
13612         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
13613         checking that only methods with matching qname or fqname are picked
13614         from implemented interfaces.
13615
13616 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
13617
13618         * verify.c (do_newarr):added, do type verification of
13619         newarr ops, push the right value on the eval stack.
13620         * verify.c (mono_method_verify): use do_newarr
13621
13622
13623 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
13624
13625         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
13626         factored the common code into get_boxable_mono_type, which
13627         is now using mono_type_get_full, this fixed byref related tests.
13628
13629 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
13630
13631         * class.c: added mono_type_get_full, this function has the same
13632         behavior of mono_class_get_full but the returned MonoType has
13633         all metadata of the associated token in case of a typespec token.
13634         * class.c: added mono_type_retrieve_from_typespec, used by 
13635         mono_type_get_full to retrieve the token type.
13636         * class.c (mono_class_create_from_typespec): changed to use
13637         mono_type_retrieve_from_typespec.
13638         * class.c (mono_ldtoken): changed to use mono_type_get_full
13639         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
13640         * class-internals.h: exported mono_type_get_full for internal use.
13641
13642 2007-08-16  Jb Evain  <jbevain@novell.com>
13643
13644         * domain.c (supported_runtimes): add entry for
13645         the 'moonlight' runtime version.
13646
13647 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
13648
13649         * verify.c (mono_method_verify): small typo sliped in.  
13650
13651 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
13652
13653         * verify.c (do_unbox_value): added, do type verification of
13654         unboxing ops
13655         * verify.c (mono_method_verify): use do_unbox_value
13656
13657
13658 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
13659
13660         * verify.c (dump_stack_value): fixed typo, was printing string
13661         instead of object on stack.
13662         * verify.c (do_box_value): moved the byref check up as it leads
13663         to invalid code and should be done earlier.
13664         * verify.c: improved error messages for and ldobj
13665
13666 2007-08-15  William Holmes  <billholmes54@gmail.com>
13667
13668         * marshal.c (emit_marshal_custom): Omit the call to 
13669           marshal_native_to_managed when calling native to managed 
13670           and the argument is specified as an out argument.
13671
13672         Code is contributed under MIT/X11 license.
13673
13674 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
13675
13676         * verify.c: fixed the type checks for generics, function pointers and vectors.
13677         Added type verification for ldobj and ldtoken. The verifier
13678         would segfault if header or signature of a method contained references
13679         to non-existant types.
13680
13681 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
13682
13683         * marshal.c (cominterop_get_ccw): Patch from
13684         Bill Holmes to no walk up interface hierarchy. 
13685         All parent methods should be present in the interface for COM.
13686    
13687         Code is contributed under MIT/X11 license.
13688
13689 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
13690
13691         * marshal.c (emit_marshal_com_interface): Patch from
13692         Bill Holmes to handle COM Interfaces as return values
13693         for native->managed calls.
13694    
13695         Code is contributed under MIT/X11 license.
13696
13697 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
13698
13699         * marshal.c (cominterop_get_idispatch_for_object): Implement
13700         for runtime callable wrappers.
13701    
13702         Code is contributed under MIT/X11 license.
13703
13704 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
13705
13706         * pedump.c (main): changed from mono_init to mono_init_from_assembly
13707         so 2.0 types are accessible
13708
13709
13710 2007-08-13  Miguel de Icaza  <miguel@novell.com>
13711
13712         * domain.c (mono_init_internal): Call mono_assembly_load_friends
13713         once we load mscorlib.   Due to the order in which we initialize,
13714         the mono_assembly_load_full routine that loads mscorlib did not
13715         load friends.   We now load it once we load the
13716         mono_defaults.internals_visible_class class. 
13717
13718         * assembly.c: Expose the mono_load_friend_assemblies method.
13719
13720 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
13721
13722         * verify.c: improved the handling of boxing, better
13723         type checking for unary ops and conversion. Fix bug
13724         regarding managed pointer compatibility checking
13725
13726 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13727
13728         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
13729
13730         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
13731
13732 2007-08-09  Raja R Harinath  <rharinath@novell.com>
13733
13734         * reflection.c (dup_type): Remove.
13735         * class.c (dup_type): Remove.
13736         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
13737         instead of the dodgy 'dup_type'.
13738         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
13739         handle the case where 'dup_type' needed the second argument.
13740
13741 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * domain.c: Fix a warning.
13744
13745 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
13746
13747         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
13748         checking that methods with the same fqname are not overridden
13749         with a method from an ancestor.
13750
13751 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
13752
13753         * threads.c (free_thread_static_data_helper): Avoid a crash if
13754         thread->static_data is not yet set.
13755
13756 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
13757
13758         * marshal.c: Use correct image when emitting
13759         native wrapper for COM calls.
13760    
13761         Code is contributed under MIT/X11 license.
13762
13763 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
13764
13765         * icall-def.h, security.c, security.h :
13766           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
13767
13768 2007-08-07  Martin Baulig  <martin@ximian.com>
13769
13770         * mono-debug-debugger.h
13771         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
13772
13773         * domain.c (mono_domain_free): Call
13774         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
13775
13776 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
13777
13778         * verify.c (check_underflow, check_overflow): error message now returns IL offset
13779         * verify.c (in_same_block): code should test if either offset is inside the clauses
13780         * verify.c (mono_method_verify): push the exception into the eval stack of exception
13781         and filter blocks
13782
13783 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
13784
13785         * image.c (mono_image_close): Fix a leak.
13786
13787         * object.c (mono_runtime_invoke_array): Avoid using alloca.
13788
13789         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
13790
13791 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13792
13793         * domain.c, threads.c, threads-types.h: fix memory retention issue
13794         with thread static variables not being cleared on domain unload.
13795         Reuse thread static slots after domain unload.
13796
13797 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
13798
13799         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
13800         nullable type.
13801
13802         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
13803         now done in mono_runtime_invoke_array.
13804
13805         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
13806         receiver is a nullable type.
13807
13808         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
13809         generic parameter.
13810
13811 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
13812
13813         * marshal.c: Implement COM Objects as return type for 
13814         managed->unmanaged calls. Added Release calls for COM Object
13815         out/return values in managed->unmanaged calls.
13816
13817         Code is contributed under MIT/X11 license.
13818
13819 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
13820
13821         * threads.h, threads-type.h: move the hazard pointer declarations
13822         to the private header.
13823
13824 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13825
13826         * file-io.c, appdomain.c: memory leak fixes.
13827
13828 2007-08-02  Dick Porter  <dick@ximian.com>
13829
13830         * socket-io.c
13831         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
13832         SO_REUSEADDR setting into io-layer/sockets.c.
13833
13834 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13835
13836         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
13837         from Object when called on a generic parameter. Fixes #82211.
13838
13839 2007-08-01  Dick Porter  <dick@ximian.com>
13840
13841         * file-io.c (convert_share): Test FileShare values bit-by-bit.
13842         Fixes bug 79250 yet again.
13843
13844 2007-07-30  Martin Baulig  <martin@ximian.com>
13845
13846         Merged the `debugger-dublin' branch.
13847
13848         * mono-debug.h
13849         (MonoDebugDataTable): New typedef.
13850         (MonoDebugMethodAddressList): New typedef.
13851         (MonoDebugWrapperData): Removed.
13852         (MonoDebugSymbolTable): Removed `current_data_table',
13853         `current_data_table_size', `current_data_table_offset'.
13854         (MonoDebugDataItemType): Moved into mono-debug.c.
13855         (MonoDebugMethodJitInfo): Remove `address'.
13856         (mono_debug_data_table): New global variable.
13857         (mono_debug_lookup_method_addresses): New public function.
13858         (mono_debug_find_method): Take a `MonoMethod *', not a
13859         `MonoDebugMethodInfo *'.
13860
13861         * mono-debug.c: Drop support for the old symbol tables.
13862
13863 2007-06-28  Martin Baulig  <martin@ximian.com>
13864
13865         * mono-debug.c (mono_debug_debugger_version): New public variable.
13866
13867 2007-07-31  William Holmes  <billholmes54@gmail.com>
13868
13869         * metadata.c Changed mono_type_create_from_typespec to not insert
13870           the type into the hash map until after
13871           do_mono_metadata_parse_type has completed.
13872         Fixes Bug #82194
13873         Code is contributed under MIT/X11 license.
13874
13875 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13876
13877         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
13878         generic parameter. Fixes #82211.
13879
13880 2007-07-27  Jb Evain  <jbevain@novell.com>
13881
13882         * pedump.c (dump_metadata, dump_metadata_header): dump
13883         versions contained in the metadata header.
13884
13885 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
13886
13887         * threads.c: register small_id_table with the GC.
13888
13889 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13890
13891         * threads.c, threads.h, class-internals.h, object-internals.h:
13892         Hazard pointers, to be used by lock-free parallel algorithms.
13893
13894 2007-07-26  Dick Porter  <dick@ximian.com>
13895
13896         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
13897         routine on non-windows platforms, as I've not managed to think of
13898         a non-kludgy way of doing this.  Finishes off bug 78739.
13899
13900 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
13901
13902         * object.c: properly setup interface_bitmap in proxy vtables.
13903
13904 2007-07-25  Marek Habersack  <mhabersack@novell.com>
13905
13906         * appdomain.c (get_shadow_assembly_location): do not use TickCount
13907         to create unique shadow copy target directories, use the domain's
13908         serial number instead. Each domain gets a unique target directory
13909         that way.
13910
13911         * domain.c (mono_domain_create): added code to increment domain
13912         shadow copy serial number and cache the value in the current
13913         domain structure.
13914
13915         * domain-internals.h (struct _MonoDomain): added a new field -
13916         shadow_serial to hold the serial number used in generation of
13917         shadow-copy directories. This is to make sure that the directory
13918         name is unique for each and every domain created. We avoid a race
13919         condition with overriding assemblies already in use by other app
13920         domains.
13921
13922 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
13923
13924         * class.c (mono_bounded_array_class_get): fixed memory leak when 
13925         binding generic parameters.
13926
13927 2007-07-24  Raja R Harinath  <rharinath@novell.com>
13928
13929         * metadata.c (do_mono_metadata_parse_generic_class): Use
13930         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
13931         error.
13932
13933 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13934
13935         * loader.c, class-internals.h, reflection.c: removed the per-method
13936         generics hashtable: we use the global one through the call of
13937         mono_class_inflate_generic_method ().
13938
13939 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13940
13941         * class.c, metadata.c, class-internals.h: introduce yet another
13942         generics global cache for inflated methods (fixes 98% of the perf
13943         issue in bug #81806).
13944
13945 2007-07-23  Raja R Harinath  <rharinath@novell.com>
13946
13947         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
13948         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
13949         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
13950         return a MonoGenericInst containing (a copy) of those types.
13951         (mono_metadata_inflate_generic_inst): Update to changes.
13952         (mono_metadata_parse_generic_inst): Likewise.
13953         (mono_get_shared_generic_inst): Likewise.
13954         * reflection.c (mono_class_bind_generic_parameters): Likewise.
13955         (mono_reflection_bind_generic_method_parameters): Likewise.
13956         * metadata-internals.h: Likewise.
13957         * icall.c (free_generic_context): Kill.
13958         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
13959
13960         * reflection.c (reflection_methodbuilder_to_mono_method): Use
13961         mono_metadata_type_dup.
13962         * marshal.c (mono_mb_create_method): Likewise.
13963
13964         * metadata.c (mono_metadata_type_dup): Rename from
13965         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
13966         MonoImage.  Handle a few more cases, esp. when no mempool is given.
13967         * marshal.c, metadata-internals.h: Update to changes.
13968
13969 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
13970
13971         * class.c: fixed a small leak for array classes and removed warning.
13972
13973 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13974
13975         * loader.c (mono_method_get_param_token): Make this work on generic methods.
13976         Return 0x8000000 for return parameters. Fixes #82161.
13977
13978 2007-07-21  Marek Habersack  <grendello@gmail.com>
13979
13980         * appdomain.c (get_shadow_assembly_location): append the current
13981         ticks value to the path. Avoids overwriting the same assemblies by
13982         several threads at the same time.
13983
13984 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
13985         and Raja R Harinath  <rharinath@novell.com>
13986
13987         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
13988         Simplify slightly.
13989         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
13990         property for testing if a method is a generic method definition.
13991
13992 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
13993
13994         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
13995
13996 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
13997
13998         * verify.c: used function from private branch, reverted to the one in class.h 
13999
14000 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
14001
14002         * verify.c: a typo slipped in and the code wont compile
14003
14004 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
14005
14006         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
14007         disabled box instruction as it is doing the wrong thing
14008         improved stack dump messages, now it is easier to debug type related issues
14009
14010
14011 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
14012
14013         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
14014
14015 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
14016
14017         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
14018         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
14019         grouped with class and valuetype. This change will simply 
14020         the code as it should be handled just like unmanaged pointers.
14021
14022 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14023
14024         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
14025
14026 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
14027
14028         * verify.c: several stack merge issues fixed, reference comparisons now
14029         check the type size. strict type check now works correctly.
14030         added more uses of IS_MANAGED_POINTER macro.
14031         fixed issues pointed by running the test suite against .net.
14032         
14033
14034 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14035
14036         * class.c, loader.c, class-internals.h: Removed the
14037         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
14038         defines.
14039
14040         * icall.c: Better error checking in some internal reflection
14041         methods.
14042
14043 2007-07-18  William Holmes  <billholmes54@gmail.com>
14044
14045         * filewatcher.c : removed unused variable 'filename' in 
14046           ves_icall_System_IO_FSW_SupportsFSW
14047
14048 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14049
14050         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
14051         obsolete, removed.
14052
14053 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14054
14055         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
14056         
14057         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
14058
14059 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14060
14061         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
14062         Implement generics support.
14063         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14064
14065         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
14066         type_args and method_args arguments.
14067         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
14068         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
14069         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
14070
14071 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
14072
14073         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
14074           It adds a rootimage parameter to mono_reflection_get_type_internal,
14075           adds new function mono_reflection_get_type_with_rootimage and use
14076           the rootimage to resolve the types instead of the current image
14077
14078 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
14079
14080         * culture-info-table.h: Forgot to update after r78304.
14081
14082 2007-07-13  Raja R Harinath  <rharinath@novell.com>
14083
14084         * class.c (mono_class_is_open_constructed_type)
14085         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
14086
14087 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
14088
14089         * class.c (mono_bounded_array_class_get):  method fails if used with
14090         an incomplete TypeBuilder enum (no basetype field), fixed it by 
14091         avoiding calculating the size for such array as it cannot be instantiated.
14092         Fix bug #82015
14093
14094 2007-07-12  Raja R Harinath  <rharinath@novell.com>
14095
14096         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
14097         field.
14098         * metadata.c, reflection.c: Update to changes.
14099
14100 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
14101
14102         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
14103         mono_class_is_valid_enum, they are used to valide a enum when loading.
14104         * reflection.c: used new functions to throw TypeLoadException when and
14105         invalid enum is build with TypeBuilder. Fixes #82018
14106   
14107 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
14108
14109         * object.c: forgot commit of mono_class_setup_methods () to access
14110         iface->methods.
14111         * object-internals.h: added a few more handy fields to
14112         MonoIMTCheckItem.
14113
14114 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14115
14116         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
14117         iface->methods.
14118
14119 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
14120
14121         * class-internals.h, object-internals.h, object.c: IMT-based
14122         interface invocation core from Massimiliano Mantione
14123         (massi@ximian.com) with a reworked arch-specific interface,
14124         bsearch implementation and a few bugfixes and memory savings by me.
14125
14126 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
14127
14128         * class.c (mono_class_create_from_typedef): mono would segfault if 
14129         an enum did not have a __value field. It now throws a TypeLoadException
14130         for such cases. Fix bug #82022
14131
14132 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14133
14134         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
14135
14136 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14137
14138         * class.c (mono_class_init): If a class is already inited but has
14139         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
14140
14141 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14142
14143         * class.c: Properly handle the case of an unimplemented interface
14144         method.  Fixes: 81673.
14145
14146 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14147
14148         * class-internals.h, object.c: cleanup patch from massi: use
14149         MonoVTable->interface_bitmap since the vtable interfaces offset array
14150         is going away.
14151
14152 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14153
14154         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
14155         GetMDStreamVersion icall instead.
14156
14157 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14158
14159         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
14160         not use mono_dl_build_path() with a full library name: makes
14161         fallbacks to libgaim and libfam work.
14162
14163 2007-07-06  William Holmes  <billholmes54@gmail.com>
14164
14165         * assembly.c: Added a continue statement in probe_for_partial_name when
14166          parse_assembly_directory_name fails.  Fixes : 82002
14167
14168 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
14169
14170         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
14171         and added a verification  for TYPEDBYREF.
14172         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
14173         make native int interchangeable with int32 and some small cleanup and formating.
14174         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
14175         handle byref of byref.
14176         * verify.c (push_local): handle byref of byref.
14177         * verify.c (do_binop): invalid mix of values is unverifiable
14178         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
14179         added visibility checks
14180         * verify.c (field related method): added visibility checks
14181         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
14182
14183 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
14186         string.
14187
14188 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14189
14190         * profiler.c (mono_profiler_load): Fix an off-by-one error.
14191
14192         * marshal.c (emit_marshal_string): When returning a string from managed code,
14193         allways make a copy even for unicode strings. Fixes #81990.
14194
14195 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
14196
14197         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
14198         of byref generic inst types (bug #81997).
14199
14200 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14201
14202         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
14203         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
14204
14205 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
14206
14207         * marshal.c (emit_marshal_string): Add support for unicode strings in
14208         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
14209
14210 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
14211
14212         * verify.c: field load/store are now verified, missing only access checks now
14213
14214 2007-06-28  Martin Baulig  <martin@ximian.com>
14215
14216         * mono-debug.c (mono_debug_debugger_version): New public variable.
14217
14218 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
14219
14220         * locales.c: When constructing DateTimeFormat or NumberFormat for
14221         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
14222         MonoCultureInfo contructed from the current locale is always
14223         read-only and has UseUserOverride set to true. All MonoCultureInfo
14224         instances returned for GetCultures have both IsReadOnly and
14225         UseUserOverride set to true. Fixes part of bug #81930.
14226
14227 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
14228
14229        * icall-def.h: Update System.__ComObject icalls
14230        * marshal.c: Avoid managed transition (and object creation)
14231        when looking up COM interface in RCW.
14232        * marshal.h: Ditto.
14233        
14234        Code is contributed under MIT/X11 license.
14235
14236 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
14237
14238         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
14239         to avoid crashes during assembly unloading.
14240
14241 2007-06-22  Raja R Harinath  <rharinath@novell.com>
14242
14243         Fix MethodInfo.IsGenericMethodDefinition
14244         * reflection.c (mono_reflection_bind_generic_method_parameters):
14245         Rearrange code to ensure we always uses a generic method definition.
14246         * class.c (mono_class_inflate_generic_method_full): Set
14247         'generic_container' field only for generic method definitions.
14248         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
14249         Use presense of 'generic_container' field as indication of being a
14250         generic method definition.
14251
14252 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
14253
14254         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14255
14256         * object-internals.h: Reflect changes in the layout of the managed Delegate
14257         class.
14258         
14259         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
14260         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
14261         runtime memory used by the dynamic method. Fixes #77146.
14262
14263 2007-06-21  Dick Porter  <dick@ximian.com>
14264
14265         * file-io.h: 
14266         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
14267         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
14268         81767.
14269
14270 2007-06-21  Raja R Harinath  <rharinath@novell.com>
14271
14272         * reflection.c (method_encode_methodspec): Add a tripwire.
14273         * class.c (inflate_generic_type): The fully open generic type is
14274         not the same as the generic type definition.
14275
14276 2007-06-21  Martin Baulig  <martin@ximian.com>
14277
14278         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
14279
14280         * mono-debug-debugger.h
14281         (MonoDebuggerBreakpointInfo): Removed.
14282         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
14283         (mono_debugger_remove_breakpoint): Likewise.
14284         (mono_debugger_breakpoint_callback): Likewise.
14285         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
14286
14287 2007-06-21  Raja R Harinath  <rharinath@novell.com>
14288
14289         * metadata.c (mono_metadata_lookup_generic_class): The fully open
14290         generic type is not the same as the generic type definition.
14291         * class.c (mono_generic_class_get_class): Likewise.
14292
14293 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
14294
14295         * icall.c: The second argument to 
14296         System.Reflection.MethodBase.GetMethodFromHandleInternalType
14297         is a MonoType not a MonoClass.
14298
14299 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
14300
14301         * verify.c: support for function pointers in the verifier
14302
14303 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
14304
14305         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
14306
14307 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14308
14309         * assembly.c: removed Mono.Data.SqliteClient from the list of
14310         forward-compatible assemblies as it breaks the ABI (bug #81899).
14311
14312 2007-06-19  Raja R Harinath  <rharinath@novell.com>
14313
14314         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
14315         lookup/update with the loader lock.
14316         * reflection.c (mono_class_bind_generic_parameters): No need to
14317         protect mono_metadata_lookup_* with the loader lock.
14318         * class.c (inflate_generic_type): Likewise.
14319         
14320         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
14321         on a generic instantiated type.
14322
14323 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
14324
14325         *verify.c: produce meanfull error messages on verification error
14326         *verify.c: fixed some cases of verification errors reported as validation errors
14327         *pedump.c: fixed the error name array, now it shows validation errors properly
14328         *verify.h: fixed the contant that should be used for verification errors
14329
14330 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14331
14332         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
14333         for bug #77596, 81858 and 80743 (generics data structures on domain
14334         unload).
14335
14336 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14337
14338         Avoid allocating 'MonoGenericContext' on the heap.
14339         * class-internals (_MonoMethodInflated::context): Make field
14340         inline, not a pointer.
14341         * loader.c (method_from_methodspec): Allocate 'new_context' on the
14342         stack.  Use the context embedded within the inflated method as the
14343         hash key, rather than 'new_context'.
14344         * class.c (inflate_generic_context): Simplify.  Return a struct
14345         rather than allocating on the heap.
14346         (mono_class_inflate_generic_method_full): Update to changes.  Now,
14347         doesn't salt away a copy of the context -- simplifying the
14348         lifetime rules of a 'MonoGenericContext *'.
14349         (mono_method_get_context): Return pointer to embedded context.
14350         (setup_generic_array_ifaces): Allocate temporary context on stack.
14351         * reflection.c (inflate_mono_method): Likewise.
14352         (mono_reflection_bind_generic_method_parameters): Likewise.
14353         Use the context embedded within the inflated method as the hash key.
14354
14355         Avoid a source of allocation of 'MonoGenericContext'.
14356         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
14357         and 'cached_context' fields into embedded 'MonoGenericContext' field.
14358         * class.c: Update to changes.
14359         (mono_generic_class_get_context): Simplify drastically.  Now just
14360         returns a pointer to the field.
14361         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
14362         argument as a const pointer.
14363         (mono_metadata_generic_context_equal): Likewise.
14364         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
14365         Update to changes.
14366
14367 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
14368
14369         * verify.c improved the handling of brtrue/brfalse, factored out common code
14370
14371 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14372
14373         Kill MonoGenericMethod.
14374         * class-internals.h (MonoGenericContext::method_inst): Rename from
14375         'gmethod' and convert to a MonoGenericInst.
14376         (MonoGenericMethod): Remove.
14377         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
14378         * loader.c (method_from_methodspec): Update to changes.  Use a
14379         MonoGenericContext as the key to the hashtable.
14380         * metadata.c (mono_metadata_generic_context_equal): Rename from 
14381         'mono_metadata_generic_method_equal' and take MonoGenericContext.
14382         (mono_metadata_generic_context_hash): Likewise from
14383         'mono_metadata_generic_method_hash'.  Change hash function.
14384         (mono_metadata_load_generic_params): Update to changes.
14385         (mono_get_shared_generic_method): Remove.
14386         * metadata-internals.h (mono_get_shared_generic_method): Remove.
14387         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
14388         (inflate_generic_context): Likewise.
14389         (mono_class_inflate_generic_method_full): Likewise.
14390         (setup_generic_array_ifaces): Likewise.
14391         (mono_class_create_from_typespec): Likewise.
14392         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
14393         (method_encode_methodspec): Update callsite.
14394         (reflection_methodbuilder_to_mono_method): Update to changes.
14395         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
14396         MonoGenericContext as the key to the hashtable.
14397         (inflate_mono_method): Update to changes.
14398
14399         * class-internals.h (MonoGenericMethod::container): Remove.
14400         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
14401
14402 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14403
14404         * profiler-private.h, profiler.c, profiler.h: added API to profile
14405         exception events.
14406
14407 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
14408
14409         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
14410
14411 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
14412
14413         * verify.c: method invocation is now validated, now we verify parameter types on stack.
14414         Fixed overflow and underflow not aborting the verification process.
14415
14416 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14417
14418         * class-internals.h (MonoStats): Added stats entries for dynamic
14419         code allocations.
14420
14421 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
14422
14423         * loader.c (mono_free_method): Free header->locals and header->clauses.
14424
14425         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
14426         dynamic case.
14427
14428         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
14429
14430         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
14431
14432 2007-06-12  Raja R Harinath  <rharinath@novell.com>
14433
14434         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
14435         the tables.
14436
14437 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
14438
14439         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
14440
14441 2007-06-11  Raja R Harinath  <harinath@gmail.com>
14442
14443         MonoGenericMethod on a diet
14444         * class-internals.h (_MonoMethodInflated::reflection_info): Move
14445         here ...
14446         (_MonoGenericMethod::reflection_info): ... from here.
14447         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
14448         Update to changes.
14449         * reflection.c (inflate_mono_method): Likewise.
14450         (mono_reflection_bind_generic_method_parameters): Likewise.
14451
14452 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
14453
14454         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
14455         *verify.c: factored long ldarg forms to share code with short forms
14456
14457 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
14458
14459         *verify.c: fixed code formating factored some duplicate code
14460         into a new function
14461
14462         *verify.h: fixed binary incompatibility introduced earlier
14463
14464         *pedump.c: fixed formating
14465
14466 2007-06-11  Raja R Harinath  <harinath@gmail.com>
14467
14468         Fix assertion when disassembling Mono.C5.dll
14469         * loader.c (method_from_methodspec): Avoid inflating a method
14470         twice with the same context.  If the methodref is inflated, use
14471         the declaring method instead.
14472
14473         * class.c (mono_class_from_generic_parameter): Fix case similar to
14474         bug #81830 handled below, but for method containers.
14475
14476 2007-06-10  Raja R Harinath  <harinath@gmail.com>
14477
14478         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
14479         get_shared_generic_class.  Directly inflate the instance.
14480         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
14481         (inflate_generic_class): Delete.
14482         (get_shared_generic_class): Delete.  Move setting of
14483         'cached_class' and 'cached_context' ...
14484         * metadata.c (mono_metadata_lookup_generic_class): ... here.
14485
14486         * metadata.c (mono_metadata_lookup_generic_class): Change
14487         signature to take the components of a MonoGenericClass rather than
14488         an allocated MonoGenericClass.  Change semantics to be intern-like.
14489         * reflection.c (mono_class_bind_generic_parameters): Update to
14490         changes.  Make locking region tighter.
14491         * class.c (inflate_generic_class): Update to changes.
14492         (get_shared_generic_class): Likewise.
14493         * metadata-internals.h: Likewise.
14494
14495         * reflection.c (mono_class_bind_generic_parameters): Take and
14496         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
14497         (mono_reflection_bind_generic_parameters): Use
14498         'mono_class_bind_generic_parameters' rather than duplicate the code.
14499         * class.c (mono_bounded_array_class_get): Update to changes.
14500         * object-internals.h: Likewise.
14501
14502         * reflection.c (mono_class_bind_generic_parameters): Only support
14503         parameterizing generic type definitions.  Remove support for other
14504         open types.
14505
14506 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
14507
14508         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
14509
14510         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
14511         in the dynamic case.
14512
14513 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
14514
14515         * threads.c: When cleaning up thread, reset the Background bit.
14516         Fixes bug #81720.
14517
14518 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
14519
14520        * metadata.c: Move variable declarations to top of scope.
14521        * verify.c: Move variable declarations to top of scope.
14522
14523        Code is contributed under MIT/X11 license.
14524
14525 2007-06-08  Raja R Harinath  <rharinath@novell.com>
14526
14527         * reflection.c (mono_class_bind_generic_parameters): Replace
14528         open-coded loop with mono_metadata_inflate_generic_inst.
14529
14530         * class.c (get_shared_generic_class): Don't call
14531         mono_get_shared_generic_inst.  Use the container's own
14532         'class_inst'.
14533
14534         * metadata.c (mono_metadata_load_generic_params): Move
14535         initialization of 'context' field here from ...
14536         * class.c (mono_class_create_from_typedef): ... here, and ...
14537         * loader.c (mono_get_method_from_token): ... here.
14538
14539         * class.c (get_shared_generic_class): Rename from
14540         mono_get_shared_generic_class and make static.
14541         (mono_get_shared_generic_inst): Move to metadata.c.
14542         * loader.c (mono_get_shared_generic_method): Likewise.
14543         * class-internals.h, metadata-internals.h: Update to changes.
14544
14545         Fix #81830
14546         * class.c (mono_class_from_generic_parameter): Don't assume a
14547         generic container owner exists.  Generic containers from monodis
14548         don't have any.
14549
14550 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
14551
14552         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
14553         * verify.h: new typedefs to returns the non-verifiable status
14554         * verify.c: initial implementation of generics, stack merging and object compatibility check
14555
14556 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14557
14558         * class.c, image.c, class-internals.h (MonoImage): class_cache is
14559         a MonoInternalHashTable again (fixed bug in internal hash table
14560         code).
14561
14562 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14563
14564         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
14565         MonoInternalHashTable again (fixed bug in internal hash table
14566         code).
14567
14568 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14569
14570         * class.c, image.c, class-internals.h, domain.c,
14571         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
14572         changes.  Have to figure out what makes them break the SWF
14573         regression.
14574
14575 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14576
14577         * class.c, image.c, class-internals.h (MonoImage): class_cache is
14578         a MonoInternalHashTable now.
14579
14580 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14581
14582         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
14583         MonoInternalHashTable now.
14584
14585 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14586
14587         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
14588         invoke_impl code.
14589
14590         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
14591
14592         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
14593         dependent trampoline.
14594
14595         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14596
14597         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
14598
14599 2007-05-29  Robert Jordan  <robertj@gmx.net>
14600
14601         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
14602
14603 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
14604
14605         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
14606
14607 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
14608
14609        * marshal.c: Fix interface lookup loops for
14610        cominterop_get_com_slot_for_method and 
14611        cominterop_get_method_interface. Only need to lookup
14612        if type is a class, else use interface type method is on.
14613
14614        Code is contributed under MIT/X11 license.
14615
14616 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
14617
14618         * reflection.c: HasSecurity can be present even if no specially 
14619         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
14620         SecurityAttribute). Fix CAS regression tests on buildbot.
14621
14622 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14623
14624        * appdomain.c: Add configure checks for header files.
14625        * image.c: Add configure checks for header files.
14626        * file-io.c: Add configure checks for header files.
14627        * debug-mono-symfile.c: Add configure checks for header files.
14628        * threadpool.c: Add configure checks for header files.
14629        * console-io.c: Add configure checks for header files.
14630        * profiler.c: Add configure checks for header files.
14631        * rawbuffer.c: Add configure checks for header files.
14632        * icall.c: Add configure checks for header files.
14633        * rand.c: Add configure checks for header files.
14634        * socket-io.c: Add configure checks for header files.
14635
14636        Code is contributed under MIT/X11 license.
14637
14638 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
14639
14640         * reflection.c (mono_custom_attrs_from_builders): Remove the 
14641         assertion as it breaks the build.
14642         
14643         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
14644
14645         * reflection.c (lookup_custom_attr): Make a copy here too.
14646
14647         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
14648         dynamic images.
14649
14650         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
14651         images.
14652
14653         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
14654         info.
14655
14656 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14657
14658         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
14659         (load_cattr_value): Ditto.
14660
14661 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
14662
14663         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
14664
14665 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
14666
14667         * threads.c: In "start_wrapper", set apartment_state to MTA if
14668         apartment_state is Unknown and we're running on 2.0 profile or
14669         higher.
14670         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
14671         to main method, then set apartment_state to Unknown on 1.0 profile,
14672         and MTA on 2.0 profile.
14673
14674 2007-05-16  Jb Evain  <jb@nurv.fr>
14675
14676         * class-internals.h (MonoDefaults): Add an attribute_class and
14677           customattribute_data_class.
14678         * domain.c (mono_init_internal): Populate them.
14679         * reflection.c: Use them to remove duplicates. Make a vew
14680         MonoClass variables `static'.
14681
14682 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14683
14684         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
14685         step in implementing IMT, so that all isinst checks now can go
14686         through the bitmap.
14687         This was needed because vtables for TransparentProxy need to look
14688         like the vtable of the "target" class, so they need to point to
14689         its interface bitmap directly.
14690
14691         * object.c: inside "mono_class_create_runtime_vtable" and
14692         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
14693
14694 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
14695
14696         * object-internals.h
14697           culture-info.h : added territory field in MonoCulture and
14698           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
14699         * locales.c : fill territory field above too.
14700         * culture-info-table.h : regenerated.
14701
14702 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14703
14704         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
14705         Fixes #81599.
14706
14707 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
14708
14709         * object.c: Always initialize apartment, even if 
14710         there is no custom attributes on entry point.
14711         
14712         Code is contributed under MIT/X11 license.
14713
14714 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
14715
14716         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
14717         * metadata.c: If no encoding is set, check for unicode
14718         on class.
14719         
14720         Code is contributed under MIT/X11 license.
14721
14722 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
14723
14724         * threads.c: Handle if mono_thread_current returns NULL 
14725         
14726         Code is contributed under MIT/X11 license.
14727
14728 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
14729
14730         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
14731         in start_wrapper. Added mono_thread_init_apartment_state and
14732         mono_thread_cleanup_apartment_state.
14733         * object.c: Initialize thread apartment state on main thread
14734         by checking for STAThreadAttribute on entry point.
14735         * object-internals.h: Add apartment_state field to MonoThread.
14736         * threads-types.h: Add unmanaged definition of 
14737         System.Threading.ApartmentState, MonoThreadApartmentState.
14738         
14739         Code is contributed under MIT/X11 license.
14740         
14741 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
14742
14743         * class.c: Fix windows build.
14744         * class-internals.h: Fix windows build.
14745         
14746         Code is contributed under MIT/X11 license.
14747
14748 2007-05-08  Robert Jordan  <robertj@gmx.net>
14749
14750         * process.c (CreateProcess_internal):
14751         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
14752         .CreateNoWindow was specified. Fixes #81496.
14753
14754 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14755
14756         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
14757         step in implementing IMT, replaced it with two compact arrays
14758         (interfaces_packed and interface_offsets_packed) and a bitmap that
14759         is used for isinst checks (interface_bitmap).
14760
14761         * class.c: (compare_interface_ids): compare function to pass to
14762         bsearch when looking for an interface with a given id.
14763         (mono_class_interface_offset): reimplemented using bsearch on
14764         interfaces_packed, getting the offset from interface_offsets_packed.
14765         (print_implemented_interfaces): utility debugging function.
14766         (setup_interface_offsets): reworked to initialize interfaces_packed,
14767         interface_offsets_packed and interface_bitmap.
14768
14769         * object.c: replaced all accesses to "MonoClass.interface_offsets"
14770         with uses of interfaces_packed and interface_offsets_packed.
14771
14772 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14773
14774         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
14775         mono_class_interface_offset prototype to wrap all accesses to
14776         "MonoClass.interface_offsets".
14777
14778         * class.c: Implemented mono_class_interface_offset, and wrapped all
14779         accesses to "MonoClass.interface_offsets".
14780
14781         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
14782         "MonoClass.interface_offsets".
14783
14784 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
14785
14786         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
14787         GetMethodFromHandle overloads (bug #78637).
14788
14789 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14790
14791         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
14792         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
14793
14794 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
14795
14796         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
14797         #81498.
14798
14799         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
14800         gracefully.
14801         (mono_custom_attrs_from_index): Ditto.
14802
14803         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
14804         Fixes #81501.
14805
14806 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
14807
14808         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
14809         is now allocated from a mempool.
14810
14811 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
14812
14813         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
14814         caller holds threads_lock, leading to deadlocks. Fixes #81476.
14815
14816 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
14817
14818         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
14819         mono_loader_clear_error () too late. Fixes #81463.
14820
14821 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
14822
14823         * culture-info-table.h : regenerated.
14824
14825 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
14826
14827         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
14828         is missing.
14829
14830 2007-04-25  Dick Porter  <dick@ximian.com>
14831
14832         * Makefile.am: Put the mingw enforced-optimisation back into the
14833         PLATFORM_WIN32 section.
14834
14835 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14836
14837         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
14838         patch.
14839
14840         * image.c (mono_image_load_module): New API function to load a module reference.
14841
14842         * image.c (load_modules): Load modules lazily. Fixes #80812.
14843
14844         * class.c (mono_class_from_typeref): Use mono_image_load_module.
14845         
14846         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
14847
14848         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
14849         to mono_image_load_module_dynamic.
14850
14851 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
14852
14853         * marshal.c: Fix calling convention for CCW on non-windows
14854         platforms. STDCALL on windows, CDECL everywhere else to work 
14855         with XPCOM and MainWin COM.
14856         
14857         Code is contributed under MIT/X11 license.
14858
14859 2007-04-23  Martin Baulig  <martin@ximian.com>
14860
14861         Fix #80969.
14862
14863         * loader.c
14864         (method_from_memberref): Added `gboolean *used_context' argument.
14865         (mono_get_method_from_token): Likewise.
14866         (mono_get_method_full): Don't insert the method in the cache when
14867         `used_context' is true.
14868
14869 2007-04-23  Raja R Harinath  <rharinath@novell.com>
14870
14871         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
14872
14873         * reflection.c (mono_reflection_bind_generic_parameters): Don't
14874         create new MonoTypes for returned types.
14875         * class.c (mono_generic_class_get_class): Export mono-internal.
14876         * class-internals.h: Update to changes.
14877
14878 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
14879
14880         * threadpool.c, threadpool.h, icall-def.h: patch from
14881         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
14882
14883 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
14884
14885         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
14886         
14887         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
14888
14889         * threads.c (mono_thread_get_stack_bounds): New helper function.
14890
14891         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
14892         Correctly compute stack bounds when attaching. Fixes #81394.
14893
14894 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
14895
14896         * reflection.c: fix handling of doubles in custom attributes
14897         for the arm-fpa format (bug #81368).
14898
14899 2007-04-18  Raja R Harinath  <rharinath@novell.com>
14900
14901         * reflection.c (assembly_add_win32_resources): Mildly relax an
14902         bounds check to let the end pointer point just past the end of the
14903         allocated buffer.  (may fix #81384)
14904
14905 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
14906
14907         * culture-info-table.h : regenerated.
14908
14909 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
14910
14911         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
14912         the thread is aborted early.
14913
14914 2007-04-05  Dick Porter  <dick@ximian.com>
14915
14916         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
14917         FindFirstFile()/FindNextFile() to find entries.  This lets the
14918         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
14919         81038.
14920
14921         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
14922         the parameters of
14923         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
14924
14925 2007-04-04  Martin Baulig  <martin@ximian.com>
14926
14927         * debug-helpers.c
14928         (mono_method_desc_full_match): Add support for nested classes.
14929
14930 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
14931
14932         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
14933
14934 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
14935
14936         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
14937         waiting for too many threads.
14938
14939 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
14940
14941         * environment.c: Fix return value check on uname so we can get the 
14942         executing version on Solaris operating systems.
14943
14944 2007-03-28  Jb Evain  <jbevain@gmail.com>
14945
14946         * class.c (mono_type_get_name_recurse): Complete the
14947         fix for the creation of assembly qualified names for
14948         pointer types. Fixes #81208.
14949
14950 2007-03-27  Dick Porter  <dick@ximian.com>
14951
14952         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
14953         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
14954         changed.
14955
14956         * threads.c
14957         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
14958         the value of ReleaseMutex().
14959
14960 2007-03-27  Dick Porter  <dick@ximian.com>
14961
14962         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
14963         in little-endian order, not network endian, so must be converted
14964         to host endian here.  Fixes bug 80593.
14965
14966 2007-03-22  Jb Evain  <jbevain@gmail.com>
14967
14968         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
14969         qualified names for pointer types. Fixes #81208.
14970
14971 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
14972
14973         * marshal.c: Add support for PreserveSigAttribute. 
14974         
14975         Code is contributed under MIT/X11 license.
14976
14977 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
14978
14979         * process.c: Fix endianness issues. Fixes #81126.
14980
14981         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
14982         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
14983
14984         * image.c (mono_image_lookup_resource): Make this work on big-endian
14985         machines.Change API contract so the caller needs to free the return value.
14986         
14987         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
14988         API change.
14989         
14990 2007-03-14  Martin Baulig  <martin@ximian.com>
14991
14992         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
14993         mono_type_get_desc() as well.
14994
14995 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
14996
14997         * icall.c:  Fix environ access in VS.  
14998         
14999 2007-03-13  Alp Toker  <alp@atoker.com>
15000
15001         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
15002         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
15003         #63841.
15004
15005 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
15006
15007         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
15008         circular references among dynamic methods. Fixes #81091.
15009
15010         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
15011
15012 2007-03-09  Martin Baulig  <martin@ximian.com>
15013
15014         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
15015
15016 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
15017
15018         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
15019         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
15020         
15021         Code is contributed under MIT/X11 license.
15022         
15023 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
15024
15025         * loader.c: Reapply patch for bug #79424.
15026
15027 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15028
15029         * metadata.c (mono_type_to_unmanaged): Only convert object to
15030         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
15031
15032 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
15033
15034         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
15035         (and incorrectly set) is_reference field from MonoGenericInst.
15036
15037 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15038
15039         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
15040         a little earlier.
15041
15042         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
15043
15044         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
15045
15046 2007-03-05  Miguel de Icaza  <miguel@novell.com>
15047
15048         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
15049         FileOptions.1 value to mean "temporary", map that to
15050         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
15051
15052         Fixes 80688
15053
15054 2007-03-03  Marek Habersack  <mhabersack@novell.com>
15055
15056         * appdomain.c: implement MS .Net style shadow copying. Copies of
15057         the assemblies are made in a subdirectory of the dynamic base
15058         directory, the assembly names are preserved.
15059         Copy .mdb and .config files along with the assemblies being shadowed.
15060
15061 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
15062
15063         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
15064         (emit_marshal_handleref): Ditto.
15065
15066         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
15067         on Visual C++. Fixes #80671.
15068
15069 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15070
15071         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
15072         for clone operations.
15073
15074 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
15075
15076         * marshal.c: Fix warnings.
15077
15078 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
15079
15080         * loader.c: allow case-insensitive matching of the dll name
15081         in dllmap handling when prefixed with "i:".
15082
15083 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
15084
15085         * threads.c: Fix #ifdef for dummy_apc function for VS.
15086
15087 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15088
15089         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
15090
15091 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
15092         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
15093         giving precedence to the methods with a fully qualified name
15094         (InterfaceName.MethodName) when building the interface sections
15095         of the vtable.
15096
15097 2007-02-16  Dick Porter  <dick@ximian.com>
15098
15099         * threadpool.c (append_job): Fix fast-path array handling, so it's
15100         less likely the array will grow exponentially when the load is
15101         heavy.
15102
15103 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
15104
15105         * metadata-internals.h, loader.c: fix dllmap lookup order
15106         for non-function maps, too, and prepare for fallback code.
15107
15108 2007-02-12  Robert Jordan  <robertj@gmx.net>
15109
15110         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
15111         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
15112         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
15113         GlobalFree. Fixes a part of bug #77075.
15114
15115 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
15116
15117         * loader.c: implemented typedef parent in field memberref.
15118
15119 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
15120
15121         * marshal.c: Fix warnings and remember to call Release on
15122         IUnknown of RCW.
15123         
15124         Code is contributed under MIT/X11 license.
15125
15126 2007-02-10  Miguel de Icaza  <miguel@novell.com>
15127
15128         * class-internals.h: Add MonoHandleRef definition, and
15129         handleref_class to mono_defaults. 
15130
15131         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
15132         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
15133
15134         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
15135         (do nothing on this stage)
15136         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
15137         (emit_marshal_handleref): New method, used for argument handling
15138         of HandleRefs. 
15139
15140 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
15141
15142         * class.c (mono_class_setup_parent): Lazily init com types.
15143         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
15144         init com types.
15145         * object.c (mono_remote_class_vtable): Lazily init com types.
15146         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
15147         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
15148         * domain-internals.h: Expose mono_init_com_types.
15149         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
15150         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
15151         Add support for COM Callable Wrapper marshalling.
15152         * marshal.h: Add icall definitions.
15153         * gc.c: Handle freeing of CCWs in finalizer code.
15154         
15155         Code is contributed under MIT/X11 license.
15156
15157 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
15158
15159         * reflection.c: changed all the signature encoding code to use
15160         a variable-sized buffer.
15161
15162 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15163
15164         * marshal.c: locking fixes: never take the loader lock
15165         or other runtime locks when holding the marshal lock
15166         (fixes bug#80664).
15167
15168 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
15169
15170         * marshal.c: make the delegate function pointer mapping
15171         work for the moving GC.
15172
15173 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
15174
15175         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
15176         for bug #80618.
15177
15178 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15179
15180         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
15181         gmodule.
15182
15183 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15184
15185         * threadpool.c: made the code moving-GC safe.
15186
15187 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
15188
15189         * assembly.c, boehm-gc.c, class-internals.h, class.c,
15190         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
15191         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
15192         warning cleanup.
15193         * reflection.c: warning cleanup, some threading and moving GC fixes.
15194
15195 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
15196
15197         * class.c, loader.c: create the needed Set/Get/Address array methods
15198         as well as the .ctors in mono_class_init (), fixes bug #80567.
15199
15200 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15201
15202         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
15203         we doesn't decrease its alignment. Should fix the sparc build.
15204
15205 2007-01-24  Dick Porter  <dick@ximian.com>
15206
15207         * socket-io.c
15208         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
15209         Create the returned object if we need to ignore an unsupported
15210         socket option.  Fixes a segfault reported by Atsushi.
15211
15212 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
15213
15214         * class.c, object.c: restrict GC-tracked fields to
15215         UIntPtr fields used inside corlib, so we provide better
15216         type info to the GC and also allow broken packing as in
15217         bug #80580.
15218
15219 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
15220
15221         * sgen-gc.c: removed duplicated function.
15222
15223 2007-01-19  Miguel de Icaza  <miguel@novell.com>
15224
15225         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
15226         value that means that the value is not supported, but that we
15227         should not return a failure, but instead report this as a
15228         successful operation.
15229
15230 2007-01-19  Raja R Harinath  <rharinath@novell.com>
15231
15232         Fix tests/bug79956.2.il
15233         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
15234         (mono_generic_class_get_class): If the generic definition in an
15235         enum, copy over other fields related to it.
15236
15237 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15238
15239         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
15240         genericinst enums (bug #79215).
15241
15242 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
15243         * class.c: Fix bug 80307.
15244
15245 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
15246
15247         * image.c: if the file table is not present, try to load
15248         all the modules, since we don't have info about them
15249         having or not metadata (bug #80517).
15250         * assembly.c: allow mono_assembly_load_references () to
15251         work for netmodules.
15252
15253 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
15254
15255         * image.c, metadata-internals.h, object.c: execute module
15256         cctors when running on the 2 runtime if present (bug #80487).
15257
15258 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
15259
15260         * icall.c: optimized InitializeArray() on bigendian.
15261
15262 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
15263
15264         * icall.c: fix for the broken ARM FPA double format.
15265
15266 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15267
15268         * icall.c: handle endian issues for r4 and r8 types, too, in
15269         the InitializeArray() icall.
15270
15271 2007-01-15  Miguel de Icaza  <miguel@novell.com>
15272
15273         * loader.c (mono_loader_error_prepare_exception): Clear the error
15274         once we have extracted the information from it, do this before we
15275         call into the JIT's class loading mechanisms.
15276
15277         * object.c (mono_class_create_runtime_vtable): Do not clear the
15278         loader error before calling mono_class_get_exception_for_failure
15279         as the loader error is needed inside
15280         mono_class_get_exception_for_failure to throw the error (thinko).
15281
15282         Fixes #80521
15283         
15284 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15285
15286         * reflection.c: align fields rva data so it's faster to load at
15287         runtime.
15288
15289 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15290
15291         Prepare to simplify GenericMethod handling.
15292         * class-internals.h (mono_method_get_context): New accessor function.
15293         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
15294         rather than directly accessing '->context' field.
15295
15296         * class-internals.h (_MonoGenericParam.method): Move ...
15297         (_MonoGenericContainer): ... here.  Add into union with klass field.
15298         * class.c, icall.c, loader.c, metadata.c, reflection.c:
15299         Update to changes.
15300
15301 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
15302
15303         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
15304         the wrapper type enum and reduce relocations.
15305
15306 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15307
15308         * reflection.c (inflate_mono_method): Reuse method instantiation
15309         from the generic method, if available.
15310
15311 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
15312
15313         * marshal.c (emit_marshal_variant): Fix conv_arg
15314         type in last commit, based on whether parameter is byref.
15315         
15316 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
15317
15318         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
15319         marshalling.
15320         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
15321         MONO_TYPE_OBJECT back for VARIANT support.
15322
15323 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
15324
15325         * marshal.c, marshal.h, icall-def.h: Implement 
15326         Marshal.ReAllocCoTaskMem.
15327
15328 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
15329
15330         * marshal.c: memory retention fixes: use the proper
15331         image cache for runtime_invoke method lookups.
15332
15333 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15334
15335         * mempool.c: added code to help debug mempool allocations.
15336
15337 2007-01-11  Dick Porter  <dick@ximian.com>
15338
15339         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
15340         support (experimenting with faking it with IP_MTU_DISCOVER for
15341         systems that don't have IP_DONTFRAGMENT.)
15342         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
15343         icall.
15344
15345         * icall-def.h: new System.Net.Sockets.Disconnect icall.
15346
15347         * socket-io.h: Add new fields to MonoSocketAsyncResult
15348         corresponding to the new ones in Socket.cs.
15349
15350 2007-01-11  Raja R Harinath  <rharinath@novell.com>
15351
15352         Fix IronPython regression mentioned in #80249
15353         * metadata.c (do_mono_metadata_parse_generic_class): Clear
15354         'cached_context' field, since it may have been initialized as a
15355         side-effect of metadata parsing.
15356
15357         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
15358         (_MonoGenericClass.cached_class): Move here and rename from lone
15359         remaining field of ...
15360         (_MonoInflatedGenericClass): ... this.  Remove.
15361         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
15362         to changes.
15363
15364         Fix mcs/tests/test-128.cs regression.
15365         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
15366         2007-01-10 change below.
15367         [MONO_TYPE_OBJECT]: Recurse into array case.
15368
15369 2007-01-11  Raja R Harinath  <harinath@gmail.com>
15370
15371         * class-internals.h (mono_get_inflated_generic_class): Remove.
15372         * class.c (mono_get_inflated_generic_class): Remove.
15373         (mono_generic_class_get_class): Rename from
15374         mono_class_create_generic.
15375         (mono_class_from_mono_type) [GENERICINST]: Use it.
15376         * reflection.c, metadata.c: Update to changes.  Use
15377         'mono_class_from_mono_type'.
15378
15379 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15380
15381         * reflection.c: use passed type when encoding an array element
15382         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
15383
15384 2007-01-09  Robert Jordan  <robertj@gmx.net>
15385
15386         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
15387         result arguments (someDelegate.EndInvoke (unrelatedAres)).
15388         Fixes bug #80392.
15389
15390 2007-01-09  Raja R Harinath  <rharinath@novell.com>
15391
15392         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
15393
15394         * object.c (set_value): Avoid aliasing between type->data.klass
15395         and type->data.generic_class.
15396
15397         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
15398
15399 2007-01-08  Raja R Harinath  <rharinath@novell.com>
15400
15401         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
15402         between type->data.klass and type->data.generic_class.
15403
15404 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
15405
15406         * marshal.c: In MS.NET, StringBuilder objects are not copied by
15407         value in out parameters.
15408
15409 2007-01-08  Raja R Harinath  <rharinath@novell.com>
15410
15411         Simplify invariant for MonoGenericClass::klass field.
15412         * class.c (mono_class_create_generic): Verify 'klass' is null.
15413         * metadata.c (do_mono_metadata_parse_generic_class): Don't
15414         initialize 'klass' field.
15415
15416 2007-01-05  Raja R Harinath  <rharinath@novell.com>
15417
15418         Ongoing work to avoid redundant data and simplify invariants.
15419         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
15420         'generic_class', and change type to a GenericInst.
15421         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
15422         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
15423
15424 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
15425
15426         * class.c : skip io-layer under PLATFORM_WIN32.
15427
15428 2007-01-03  Tor Lillqvist  <tml@novell.com>
15429
15430         Fix #80305: In a bundled executable, look in the bundled exe
15431         assembly to determine the runtime version. Add the possibility to
15432         bundle also the machine.config file.
15433         
15434         * assembly.c (mono_assembly_open_from_bundle): Make
15435         non-static. Allow being called even if we have no bundled
15436         assemblies, and return NULL right away in that case.
15437
15438         * domain-internals.h: Declare mono_assembly_open_from_bundle()
15439         here.
15440
15441         * domain.c (app_config_parse): Take an assembly exe file name as
15442         parameter instead of a config file name. Check for a bundled
15443         config file for that assembly by calling
15444         mono_config_string_for_assembly_file() (see below) before looking
15445         for one in the file system.
15446         (get_runtimes_from_exe): Corrsponding change to call of
15447         app_config_parse().
15448         (get_runtimes_from_exe): Check for bundled assembly exe file first
15449         by calling mono_assembly_open_from_bundle(). If no bundled
15450         assembly exe file is found, call mono_image_open() as before to
15451         look it up in the file system.
15452
15453         * mono-config.c: Add variable bundled_machinec_onfig.
15454         (mono_config_string_for_assembly_file): New function.
15455         (mono_config_for_assembly): Move code snippet that looks for a
15456         bundled assembly .config file into the above new function. Call
15457         it.
15458         (mono_register_machine_config, mono_get_machine_config): New
15459         functions to set and retrieve
15460
15461         * assembly.h: Declare mono_register_machine_config().
15462
15463         * mono-config.h: Declare mono_get_machine_config() and
15464         mono_config_string_for_assembly_file().
15465
15466         * icall.c: No declaration of environ necessary on Win32. It is
15467         declared (as a macro expanding to a function call) in stdlib.h.
15468         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
15469         New internal mono function. Returns the value of
15470         mono_get_machine_config() as a Mono string.
15471
15472         * icall-def.h: Add get_bundled_machine_config().
15473
15474 2007-01-04  Raja R Harinath  <rharinath@novell.com>
15475
15476         Remove redundant field
15477         * class-internals.h (_MonoGenericContext.container): Remove field.
15478         * loader.c (mono_method_get_signature_full): Don't parse a
15479         "container" for a signature parse when the signature is inflated
15480         immediately.
15481         (method_from_methodspec): Likewise, for a generic_inst.
15482         * class.c, metadata.c, reflection.c: Update to changes.
15483
15484 2006-01-04  Raja R Harinath  <rharinath@novell.com>
15485
15486         * class-internals.h (_MonoGenericClass): Rename 'context' field to
15487         'cached_context', and change semantics -- it starts off NULL, and
15488         is initialized on demand.
15489         * class.c (mono_generic_class_get_context): New accessor to
15490         replace 'context' field accesses.
15491         (mono_class_get_context): New helper.
15492         (*): Update to changes.
15493         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
15494
15495 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15496
15497         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
15498         before the memcpy.   Fixes Marshal2 regression.
15499
15500 2007-01-02  Jb Evain  <jbevain@gmail.com>
15501
15502         * blob.h: add a MONO_TYPE_ENUM definition
15503         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
15504         fix the encoding of arrays of enums in custom attributes.
15505
15506         Fixes #79666.
15507
15508 2007-01-01  Miguel de Icaza  <miguel@novell.com>
15509
15510         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
15511         string is null terminated, but only cut the string short if it
15512         overflows the buffer.   
15513         
15514         (mono_string_to_byvalstr): Also fix this routine.   The code here
15515         was not properly terminating a string (it was only terminated
15516         because of the previous catch-all memset). 
15517
15518         I left the memset, because I do not know if applications expect
15519         the runtime to clear this region. 
15520
15521         Fixes #79944.
15522
15523         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
15524         Clear the error before returning to unmanaged code to prevent the
15525         runtime from being confused later on (fixes  80420).
15526         (ves_icall_type_from_name): Always call mono_loader_clear_error
15527         after parsing a type that could have failed.
15528         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
15529
15530         * loader.c (mono_loader_clear_error): Fix indentation.
15531
15532 2006-12-28  Martin Baulig  <martin@ximian.com>
15533
15534         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
15535
15536 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15537
15538         * reflection.c: patch from Rolf Bjarne Kvinge to fix
15539         getting a token for an EnumBuilder.
15540
15541 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
15542
15543         * reflection.c: be more careful in case resource generation
15544         fails to create the data array.
15545
15546 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
15547
15548         * sgen-gc.c: write barrier for clone and fix unregister handles.
15549
15550 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15551
15552         * reflection.c: some fixes needed in the generics code for the moving GC.
15553
15554 2006-12-22  Robert Jordan  <robertj@gmx.net>
15555
15556         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
15557         account. Fixes bug #80299.
15558
15559 2006-12-21  Raja R Harinath  <rharinath@novell.com>
15560
15561         Fix WaitHandle usage in delegates.
15562         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
15563         * object.c (mono_wait_handle_new): Use the property set method to
15564         initialize the handle.
15565         (mono_wait_handle_get_handle): New.
15566         * threadpool.c (mono_async_invoke): Use it.
15567         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
15568         Likewise.
15569         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
15570
15571 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
15572
15573         * marshal.c (emit_marshal): Call emit_marshal_variant and
15574         emit_marshal_com_interface when applicable.
15575         (emit_marshal_variant, emit_marshal_com_interface): Add
15576         methods for this case and remove if's from emit_marshal_object.
15577         
15578 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
15579
15580         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
15581
15582 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
15583
15584         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
15585         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
15586         and GlobalFree on Windows. Remove FIXME.
15587
15588 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15589
15590         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
15591         implementation for managed objects.
15592
15593 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15594
15595         * object.c: implemented code to be used for checking
15596         that no reference field overlaps with non-references.
15597
15598 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15599
15600         * threadpool.c: fix queue code to be compatible with the
15601         moving GC.
15602
15603 2006-12-18  Miguel de Icaza  <miguel@novell.com>
15604
15605         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
15606         in structures by throwing ArgumentNullException.
15607
15608         (emit_marshal_safehandle): Also when they are null parameters.
15609
15610         (emit_marshal_safehandle): Add support for ref
15611         SafeHandles parameters
15612
15613 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15614
15615         * profiler.c: updated to use the mono-dl API instead of
15616         gmodule.
15617
15618 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15619
15620         * profiler.c: updated to use the mono-dl dynamic loading
15621         API instead of gmodule.
15622
15623 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15624
15625         * profiler.c: use readlink, older versions of glib don't have
15626         g_file_read_link ().
15627
15628 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
15629
15630         * profiler.c: try to detect the path to mono if libc fails to provide
15631         a useful name (bug #80286).
15632
15633 2006-12-16  Raja R Harinath  <rharinath@novell.com>
15634
15635         Fix #80242
15636         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
15637         instance, use the generic type definition instead.
15638         (ves_icall_Type_GetNestedTypes): Likewise.
15639         * class.c (mono_class_create_generic): Always set the
15640         nested_classes of a generic instance to NULL, even if the generic
15641         type definition has nested types.
15642
15643 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
15644
15645         * marshal.c (mono_string_from_bstr): Revert previous Windows change
15646         and fix on Linux.
15647         
15648 2006-12-15  Miguel de Icaza  <miguel@novell.com>
15649
15650         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
15651         my arguments were in the wrong order.   I also fixed the Windows
15652         version which seems to have had the same issue.
15653
15654         (mono_free_bstr): On Unix, this is g_free.
15655         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
15656         conversions (for the tests in corlib to pass).
15657
15658 2006-12-14  Miguel de Icaza  <miguel@novell.com>
15659
15660         * marshal.c (emit_ptr_to_object_conv): For now, ignore
15661         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
15662         exception if a ref SafeHandle in a struct has changed).
15663         
15664         (emit_struct_conv): Do not perform layout checks for classes
15665         derived from SafeHandle, as those are specially handled. 
15666
15667         (emit_object_to_ptr_conv): Add support for
15668         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
15669
15670         (emit_marshal_safehandle): Implement conversion of return values
15671         of safehandles (MARSHAL_ACTION_CONV_RESULT).
15672         
15673         * threads.c: WaitHandle now is compiled with two different handles
15674         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
15675         for 2.0.
15676         
15677         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
15678         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
15679         these routines to cope with both kinds of fields.
15680
15681 2006-12-12  Miguel de Icaza  <miguel@novell.com>
15682
15683         * metadata.c (mono_type_to_unmanaged): Handle the case where
15684         type->data.klass is a SafeHandle, and in that case, return the
15685         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
15686         MONO_MARSHAL_CONV_SAFEHANDLE. 
15687
15688 2006-12-11  Miguel de Icaza  <miguel@novell.com>
15689
15690         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
15691         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
15692         calling emit_marshal_object.
15693
15694         (emit_marshal_safehandle): Implement marshalling of
15695         SafeHandle parameters (no ref support yet).
15696
15697         (MarshalAction): Document the defines as I implement
15698         them for SafeHandle.
15699
15700         (emit_marshal_object): indentation police.
15701
15702         * class-internals.h: Define MonoSafeHandle.
15703         Add safehandle_class to MonoDefaults type.
15704
15705         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
15706         list of classes to check for fields. 
15707
15708         * domain.c (mono_init_internal): Add SafeHandle to the list of
15709         mono_defaults loaded.
15710
15711 2006-12-15  Raja R Harinath  <rharinath@novell.com>
15712
15713         Fix #80253
15714         * reflection.c (mono_reflection_bind_generic_parameters): If the
15715         generic type definition is a type builder, ensure that it is fully
15716         initialized before instantiating it.  Kill some dead code.
15717
15718 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15719
15720         * object.c: clear the loader_error () before loading
15721         more metadata stuff (bug #80258).
15722
15723 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
15724
15725         * icall.c, icall-defs.h: type modifiers icalls for
15726         parameters and properties.
15727
15728 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15729
15730         * object.c, icall.c: fixed warnings.
15731
15732 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15733
15734         * marshal.c: fixed a couple of leaks and coding style in a few places.
15735
15736 2006-12-08  Dick Porter  <dick@ximian.com>
15737
15738         * process.c: Cope with NULL ProcessStartInfo arguments on windows
15739         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
15740         80173.
15741
15742 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15743
15744         * process.c: ProcessStartInfo may have only filename set and
15745         arguments can be NULL.
15746
15747 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
15748
15749         * icall.c: fix leak found by Robert Jordan.
15750
15751 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15752
15753         * marshal.c, marshal.h: generate managed method to access an element
15754         of a multi-dimensional array.
15755
15756 2006-11-30  Paolo Molaro (lupus@ximian.com)
15757
15758         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
15759
15760 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15761
15762         * icall.c: back out GetFields () fix until the serialization code is
15763         fixed to not depend on the incorrect behaviour.
15764
15765 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
15766
15767         * profiler.c: provide defaults if none are set.
15768
15769 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15770
15771         * Makefile.am, attrdefs.h: new public header file with
15772         constants for attributes for use by embedders.
15773
15774 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15775
15776         * icall.c: GetFields () fix for bug #80064.
15777
15778 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
15779
15780         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
15781         removed long unused icalls.
15782
15783 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
15784   
15785         * marshal.c: 
15786                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
15787                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
15788                 can be generated without a delegate class.
15789                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
15790         
15791         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
15792
15793 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15794
15795         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
15796         #80069.
15797
15798 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15799
15800         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
15801         icall-def.h: added icalls needed by System.GC.
15802
15803 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
15804
15805         * loader.c: ensure the class in catch clauses is handled
15806         correctly for generics methods (fixes bug#79980).
15807
15808 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15809
15810         * monitor.h, monitor.c: added mono_locks_dump () function
15811         to help debug deadlocks involving managed locks.
15812
15813 2006-11-13  Dick Porter  <dick@ximian.com>
15814
15815         * file-io.c (get_file_attributes): If the file is a symlink try
15816         and get the stat data for the target, but also add the
15817         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
15818         the specs for the windows symlink support, but will probably have
15819         to be reworked when I have test data from a vista machine.  Fixes
15820         bug 79887.
15821
15822 2006-11-13  Dick Porter  <dick@ximian.com>
15823
15824         * gc.c (mono_domain_finalize): 
15825         * marshal.c (mono_delegate_begin_invoke): 
15826         * threadpool.c (socket_io_init, mono_thread_pool_init)
15827         (mono_thread_pool_finish): 
15828         * monitor.c (mono_monitor_try_enter_internal): 
15829         * threads.c (mono_thread_resume, mono_thread_init)
15830         (mono_thread_suspend_all_other_threads)
15831         (mono_thread_execute_interruption): 
15832         * appdomain.c (mono_domain_unload): Check for NULL error returns
15833         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
15834         75733.
15835
15836 2006-11-11  Miguel de Icaza  <miguel@novell.com>
15837
15838         * process.c
15839         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
15840         Only close the handle if the value of the handle is not
15841         INVALID_HANDLE_VALUE.  This just makes the process a bit more
15842         robust.
15843
15844         Improvement for #75733, so that we do not run into this problem. 
15845
15846         
15847         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
15848         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
15849         internal variables.  Fixes #79462 
15850         
15851
15852 2006-11-09  Dick Porter  <dick@ximian.com>
15853
15854         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
15855         Use poll() not select().  Fixes bug 79397.
15856
15857 2006-11-09  Raja R Harinath  <rharinath@novell.com>
15858
15859         Fix #79872
15860         * assembly.c (mono_assembly_load_from_full): Check that the given
15861         image has an assembly manifest.
15862
15863 2006-11-09  Ankit Jain  <jankit@novell.com>
15864
15865         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
15866         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
15867         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
15868
15869 2006-11-07  Dick Porter  <dick@ximian.com>
15870
15871         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
15872         Put the old resolver behaviour back for pre-2.0 profiles.
15873
15874 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
15875
15876         * threadpool.c: precise GC and locking fixes.
15877
15878 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
15879
15880         * class.c: don't load types that have an explicit unaligned
15881         managed reference. Provide better info in the TypeLoad exception.
15882         Part of the fix for bug #79744.
15883         * object.c: use the correct check for class type load issues.
15884
15885 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15886
15887         * class.c: enforce alignment of fields with managed references
15888         even when Pack=1 is forced by the user (bug #77788).
15889
15890 2006-11-03  Dick Porter  <dick@ximian.com>
15891
15892         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
15893         If the address reverse lookup fails, return it as the hostname
15894         anyway.  Fixes bug 79721.
15895
15896 2006-11-03  Dick Porter  <dick@ximian.com>
15897
15898         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
15899         Fix build on Windows.
15900
15901 2006-11-02  Dick Porter  <dick@ximian.com>
15902
15903         * icall-def.h: 
15904         * object-internals.h: 
15905         * exception.c (mono_get_exception_thread_interrupted): 
15906         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
15907         Fixes bug 74525.
15908
15909         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
15910         Check for pending Thread.Interrupt.
15911
15912 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
15913         * loader.c: Fixed bug 79684.
15914
15915 2006-10-27  Dick Porter  <dick@ximian.com>
15916
15917         * file-io.c (get_file_attributes): Force symlinks to directories
15918         to be returned as a regular file.  Fixes bug 79733.
15919 2006-10-26  Dick Porter  <dick@ximian.com>
15920
15921         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
15922         CreateFile to open a directory then we need to set the
15923         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
15924
15925 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15926
15927         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
15928         friends.
15929
15930 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
15931
15932         * sgengc.c: small cleanup of timer code.
15933
15934 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15935
15936         * sgen-gc.c: fix some warnings and start adding support for
15937         complete object removal on domain unload.
15938
15939 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
15940
15941         * assembly.c: build_assembly_name should not consider a version
15942         number without build or revision number invalid. Fixes bug #79715.
15943
15944 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
15945
15946         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
15947         call kernel32 function OutputDebugString directly.
15948         
15949         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
15950         
15951 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
15952
15953         * reflection.c: small cleanup, using a function to insert a MonoString
15954         in the string heap.
15955
15956 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
15957
15958         * reflection.c: moving GC fixes.
15959
15960 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15961
15962         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
15963         all the objects with finalizers belonging to an unloading appdomain.
15964
15965 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15966
15967         * sgen-gc.c: added ability to allocate even when the nursery is fully
15968         pinned and fixed a couple of bugs.
15969
15970 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15971
15972         * threads.h: Revert the last change for now.
15973
15974         * threads.h (mono_thread_get_pending_exception): Rename this to
15975         mono_thread_get_undeniable_exception ().
15976
15977 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
15978
15979         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
15980         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
15981         when fname does not refer to valid assembly. This result in a more
15982         meaningful error message.
15983         * exception.c: added mono_get_exception_bad_image_format2 which 
15984         constructs a BadImageFormatException using the ctor taking a custom
15985         message and the file name. Passing in a NULL msg results in a default
15986         message.
15987         * exception.h: define mono_get_exception_bad_image_format2 function.
15988         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
15989         when file name pointed to an invalid IL image. Use 
15990         mono_get_exception_file_not_found2 to construct FileNotFoundException,
15991         as this results in a more meaningful error message.
15992
15993 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15994
15995         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
15996         #79465.
15997
15998 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15999
16000         * metadata.c (mono_type_size): Change the align parameter to guint32 for
16001         consistency with the other _size functions.
16002         (mono_type_stack_size): Ditto.
16003
16004         * class.c object.c icall.c: Fix warnings caused by the above change.
16005
16006         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
16007
16008         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
16009
16010         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
16011
16012 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
16013
16014         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
16015         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
16016         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
16017         threadpool.h, threads-types.h: mark more internal functions.
16018
16019 2006-10-11  Dick Porter  <dick@ximian.com>
16020
16021         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
16022         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
16023         reproduce the bug even before applying the fix.)
16024
16025 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
16026
16027         * reflection.c: allow retrieving attributes for arguments in generic
16028         methods (bug #79241).
16029
16030 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
16031
16032         * debug-mono-symfile.c: properly check fopen () result (found by
16033         coverity).
16034
16035 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
16036
16037         * reflection.c: make error message clearer and fixed two
16038         issuelets found by Coverity.
16039
16040 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
16041
16042         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
16043
16044 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
16045
16046         * object-internals.h, gc-internal.h, profiler-private.h:
16047         mark internal functions.
16048
16049 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16050
16051         * reflection.c: put data in the text section.
16052         * icall.c: recognize more types in type_from_typename ().
16053         * process.c, marshal.c: added some GC FIXMEs.
16054
16055 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16056
16057         * loader.c: check for NULL before initializing.
16058
16059 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
16060
16061         * gc.c (finalizer_thread): Use a non-alertable wait here.
16062
16063         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
16064         until the correct solution is found.
16065
16066 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
16067
16068         * reflection.c (mono_module_get_object): Avoid an assert when operating on
16069         modules with no metadata. Fixes #79596.
16070
16071         * image.c (load_metadata_ptrs): Put back the error message when
16072         the #- heap is encountered since the support is not complete yet.
16073
16074 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16075
16076         * gc.c: do not allow the user to SuppressFinalize () a
16077         delegate because it would leak the trampoline if present.
16078
16079 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
16080
16081         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
16082         PropertyPtr table.
16083
16084 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16085
16086         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
16087
16088         * metadata.c (mono_metadata_get_param_attrs): Ditto.
16089
16090         * row-indexes.h: Add definitions for *Ptr tables.
16091
16092         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
16093
16094         * metadata.c (mono_metadata_translate_token_index): New helper function to
16095         translate table indexes used in uncompressed metadata.
16096         (mono_metadata_decode_table_row): Ditto.
16097         (mono_metadata_decode_table_row_col): Ditto.
16098
16099         * metadata.c: Add table schema for *Ptr tables.
16100
16101         * class.c loader.c: Use the new helper function to access the affected metadata
16102         tables.
16103         
16104         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
16105         #38532.
16106         
16107 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
16108
16109         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
16110         sequences which can be unbounded in size. Fixes #79583.
16111
16112 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16113
16114         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
16115         static initialization.
16116
16117         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
16118
16119         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
16120
16121         * domain.c (mono_domain_free): Free up type_init_exception_hash.
16122
16123         * object.c (mono_runtime_class_init): Implement correct semantics when a static
16124         ctor fails, i.e. throw the same exception on subsequent accesses.
16125         
16126 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
16127
16128         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
16129         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
16130         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
16131         Handle marshalling of interfaces and VARIANTs contained in structs.
16132         
16133         Code is contributed under MIT/X11 license.
16134         
16135 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16136
16137         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
16138         
16139         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
16140         mempool.
16141
16142 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16143
16144         * console-io.c: ignore previous SIGINT handler.
16145
16146 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16147
16148         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
16149         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
16150         #79460, #79461, #79485.
16151
16152         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
16153
16154         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
16155         #79217.
16156
16157 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16158
16159         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
16160         could be generated from it.
16161
16162 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
16163
16164         * rand.c: fix read loop to correctly handle EINTR.
16165
16166 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
16167
16168         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
16169         internal calls are defined to keep methods closer to the declaring
16170         type and allow a significant reduction in runtime relocations and
16171         memory usage.
16172
16173 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
16174
16175         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
16176         exception message to have FileNotFoundException use the default
16177         assembly load error message. Fixes bug #79426.
16178         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
16179
16180 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16181
16182         * threadpool.c: (start_thread_or_queue) use the root domain when
16183         creating the thread instead of the async object one.
16184
16185 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
16186
16187         * class.c, object.c, class-internals.h, reflection.c:
16188         for arrays, store element_size inside MonoClass (speedup
16189         for array object creation).
16190
16191 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
16192
16193         * icall.c: fixed CodeBase to use the file name and not the module
16194         name (bug #79365).
16195
16196 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
16197
16198         * mono-debug.c, mono-debug.h: export find_method as
16199         mono_debug_find_method ().
16200
16201 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
16202
16203         * debug-helpers.c, class-internals.h: added a few functions useful
16204         when debugging under gdb.
16205
16206 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16207
16208         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
16209         characters that need special handling.
16210
16211 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16212
16213         * mono-config.c: make the os/cpu specification more flexible,
16214         allowing lists and negation.
16215
16216 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
16217
16218         * marshal.c: COM Interop fixes. Handle case where method->klass.
16219         is interface. Handle BSTR/MonoString when null. Use CDECL as 
16220         calling convention on non-windows platforms. This is for
16221         compatibility with XPCOM and MainWin COM.
16222         
16223         Code is contributed under MIT/X11 license.
16224         
16225
16226 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
16227
16228         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
16229         correctly. Fixes #79217.
16230
16231         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
16232
16233 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
16234
16235         * mono-config.c: allow both an os and cpu attribute for dllmap
16236         and dllentry elemnets to enable a single config file to be used
16237         for multiple architectures.
16238
16239 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
16240
16241         * loader.c: MonoLoaderError was cleared too soon on load failure.
16242         Fixes bug #79424.
16243
16244 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
16245
16246         * icall.c: use the defining class vtable when accessing a
16247         static field, not a pobblibly derived class.
16248
16249 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16250
16251         * icall.c string-icalls.c: Remove references to unicode.h.
16252
16253         * unicode.h unicode.c Makefile.am: Remove these unused source files.
16254
16255         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
16256
16257         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
16258         indicating the image where custom marshaller types should be looked up.
16259         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
16260         custom marshallers, instead of corlib. Fixes #79425.
16261
16262 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
16263
16264         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
16265
16266 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
16267
16268         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
16269         Implement Environment.ProcessorCount.
16270         
16271         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
16272         Implement Environment.ProcessorCount.
16273         
16274         * icall.c: 
16275         Add Environment.ProcessorCount icall.
16276         
16277         Patch by Jason McFall.
16278
16279 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16280
16281         * assembly.c: don't append .exe/.dll when the filename already contains
16282         one of those extensions.
16283
16284 2006-09-12  Martin Baulig  <martin@ximian.com>
16285
16286         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
16287         to array interfaces.
16288
16289 2006-09-11  Martin Baulig  <martin@ximian.com>
16290
16291         * reflection.c (mono_image_build_metadata): Create the
16292         MethodImpl's after emitting all types and methods, so we don't
16293         need another fixup pass for them.
16294
16295 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16296
16297         * class.c (mono_class_from_name_case): Fix regression introduced by the last
16298         change.
16299
16300 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
16301
16302         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
16303         unload.
16304
16305 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
16306
16307         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
16308         args is not set. Fixes #78926.
16309
16310 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16311
16312         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
16313
16314         * image.c (load_class_names): Move this to class.c, and rename it to 
16315         'mono_image_init_name_cache'.
16316         (load_modules): Fix a warning.
16317
16318         * class.c icall.c image.c: Initialize image->name_cache lazily.
16319
16320         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
16321         on its name using information in the AOT file.
16322
16323         * class.c (mono_class_from_name): Use the new hook function.
16324
16325 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
16326
16327         * reflection.c (mono_param_get_objects): Handle enum default parameter values
16328         correctly.
16329
16330         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
16331         Fixes #79289.
16332         
16333 2006-09-06  Martin Baulig  <martin@ximian.com>
16334
16335         * icall.c (mono_lookup_internal_call): Small fix.
16336
16337 2006-09-05  Raja R Harinath  <rharinath@novell.com>
16338
16339         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
16340         double g_free.
16341
16342 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
16343
16344         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
16345         when --debug is specified.
16346
16347 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16348
16349         * class.c (setup_generic_array_ifaces): Fix a warning.
16350
16351 2006-09-04  Miguel de Icaza  <miguel@novell.com>
16352
16353         * Temporarily remove the patch to assemly.c that checks the
16354         assembly versions as it breaks our gacutil.
16355
16356 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16357
16358         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
16359
16360         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
16361         a net 1.0 runtime.
16362
16363         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
16364         created using the default ctor. Fixes #79152.
16365         (mono_string_builder_to_utf16): Ditto.
16366
16367 2006-09-01  Martin Baulig  <martin@ximian.com>
16368
16369         Fix handling of the generic array interfaces.
16370
16371         * class-internals.h
16372         (MonoDefaults): Removed `generic_array_class' and added
16373         `generic_ilist' class.
16374
16375         * class.c
16376         (mono_bounded_array_class_get): Add the new generic array interfaces.
16377         (setup_generic_array_ifaces): New static method; create vtable
16378         entries for each method in the generic array interfaces.
16379
16380         * metadata.c
16381         (select_container): Allow "parent-less" generic methods.
16382
16383         * marshal.c
16384         (mono_marshal_get_generic_array_helper): New public method.
16385
16386         * icall.c
16387         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
16388         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
16389         moved the interncall into System.Array.
16390
16391 2006-09-01  Raja R Harinath  <rharinath@novell.com>
16392
16393         A few more cases of avoiding work on types with ->byref set.
16394         Has the real fix for #79238
16395         * icall.c (is_generic_parameter): New helper.
16396         (ves_icall_Type_GetGenericParameterPosition): Use it.
16397         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
16398         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
16399         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
16400         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
16401         reference types.
16402         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
16403         reference types.
16404         (ves_icall_Type_get_IsGenericInstance): Likewise.
16405         (ves_icall_Type_get_IsGenericType): Likewise.
16406
16407 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16408
16409         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
16410         class if possible.
16411
16412         * mempool.h (mono_mempool_get_allocated): New helper function.
16413
16414         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
16415         change.
16416
16417         * mempool.c: Fix warnings and the calculation of stats.
16418
16419         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
16420
16421         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
16422
16423         * loader.c (mono_get_method_from_token): Update method_count stat.
16424
16425         * class-internals.h (MonoStats): Add some stats.
16426
16427 2006-08-31 Robert Jordan  <robertj@gmx.net>
16428
16429         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
16430         with managed variants.
16431         All code is contributed under the MIT/X11 license.
16432         
16433 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16434
16435         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
16436         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
16437
16438         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
16439
16440         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
16441         with cycles in classes.
16442
16443         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
16444
16445         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
16446         missing a [MarshalAs] directive. Fixes #79203.
16447
16448         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
16449         klass->marshal_info. Fixes #79217.
16450
16451 2006-08-30  Martin Baulig  <martin@ximian.com>
16452
16453         Committing a patch from Joachim Ante <joe@otee.dk>:
16454         Add support for binary data symbol stores.
16455
16456         * debug-mono-symfile.c
16457         (mono_debug_open_mono_symbol_file): Renamed into
16458         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
16459         arguments.
16460
16461         * mono-debug.c
16462         (mono_debug_open_image): Added `raw_contents' and `size' args.
16463         (mono_debug_init_2_memory): New public function.
16464
16465 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
16466
16467         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
16468
16469 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16470
16471         * appdomain.c: implement support for ShadowCopyFiles.
16472
16473 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
16474
16475         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
16476         when value is NULL (and should remove CID #51).
16477
16478 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16479
16480         * image.c: moved 2 functions to ../utils.
16481
16482 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16483
16484         * gc.c: cope with the target object of a GC handle being NULL
16485         (bug #78877).
16486
16487 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16488
16489         * class.c: recursively check parent's explicit implementations
16490         of interface methods (fixes bug #79125).
16491
16492 2006-08-19  Miguel de Icaza  <miguel@novell.com>
16493
16494         * filewatcher.c: Avoid warnings when building, do not redefine
16495         constants that are defined.
16496
16497         Remove warnings.
16498
16499 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16500
16501         * image.c: don't fail when the link points to an absolute path.
16502
16503 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
16504
16505         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
16506         Fix CID #3.
16507
16508 2006-08-17  Miguel de Icaza  <miguel@novell.com>
16509
16510         * image.c (full_path): A new method used to obtain the actual path
16511         of an assembly even in the presence of symbolic links.  
16512
16513         This is necessary for the case where we are running a binary that
16514         has been GACed, but we are using the "published" path name
16515         ($prefix/mono/1.0/blah.exe) which happens to point to the real
16516         file in the GAC.
16517
16518         This was the source of the failure for the `xsp' command with the
16519         recent AppDomain changes, as far as the runtime was concerned,
16520         there were two different assemblies: $prefix/mono/1.0/blah.exe and
16521         $prefix/mono/gac/blah/version/blah.exe.
16522
16523         (do_mono_image_open): use full path
16524
16525 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16526
16527         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
16528
16529 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
16530
16531         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
16532         domain_id is supplied. Fix CID #241 and corlib's unit tests.
16533
16534 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16535
16536         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
16537         small structures. Fixes #78990.
16538
16539 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16540
16541         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
16542
16543         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
16544
16545 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16546
16547         * appdomain.c:
16548         * marshal.c: don't load all the assemblies from a domain into newly
16549         created ones. The new domains might have different rules and load
16550         assemblies from different locations. Fixes bug #76757.
16551
16552         Patch by Lluis. Conflicts resolved by Brian Crowell.
16553
16554 2006-08-16  Alp Toker  <alp@atoker.com>
16555
16556         * socket-io.c: First half of the fix for #79084.
16557         Set sa_size to the length of the content, not that of the struct.
16558         Don't add NULL suffix to the content, this should be done in
16559         managed code if needed.
16560
16561 2006-08-14  Raja R Harinath  <rharinath@novell.com>
16562
16563         Fix part of #79012
16564         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
16565         mono_metadata_parse_type returns NULL.
16566
16567 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
16568
16569         * normalization-tables.h : new file for string normalization data.
16570         * locales.c, locales.h, icall.c :
16571           added load_normalization_resource() for string normalization,
16572           and icall as well.
16573         * Makefile.am : added normalization-tables.h to the sources.
16574
16575 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
16576
16577         * marshal.c: Add more helper functions to reduce code duplication and use them
16578         everywhere.
16579
16580 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
16581
16582         * marshal.c: Fix non-x86 stdcall warnings.
16583         
16584         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
16585         them everywhere.
16586
16587 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
16588
16589         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
16590         type check on multi-dimensional arrays. Fixes #79000.
16591
16592 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16593
16594         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
16595         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
16596         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
16597         * class-internals.h: add is_com_object to class structure.
16598         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
16599         null checks to COM object marshalling. Fix .ctor call on RCW.
16600         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
16601         
16602         All code is contributed under the MIT/X11 license.
16603
16604 2006-08-09  Dick Porter  <dick@ximian.com>
16605
16606         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
16607         racing mono_monitor_allocator_lock() somewhere, so don't delete
16608         the critical section for now.  Found by running and exiting
16609         monodevelop.
16610
16611 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
16612
16613         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
16614         (ves_icall_System_ComObject_FindInterface): Ditto.
16615         (ves_icall_System_ComObject_CacheInterface): Ditto.
16616
16617         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
16618         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
16619
16620 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16621
16622         * threadpool.c: treat pipes from process asynchronous reads as sockets
16623         when reading from them, so we get select/poll or epoll to wait for
16624         data.
16625
16626 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
16627
16628         * loader.c: Fix a typo (CID #233) in the null check.
16629
16630 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
16631
16632         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
16633         Hopefully fixes #78949.
16634         
16635         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
16636         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
16637         bytes. Fixes #78972.
16638
16639 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16640
16641         * filewatcher.c: we need to set errno here.
16642
16643 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16644
16645         * filewatcher.c: let Win32Exception get the error value.
16646
16647 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16648
16649         * filewatcher.c: translate errno into win32 errors for Win32Exception
16650         to know what happened.
16651
16652 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16653
16654         * threadpool.c: Fix more warnings.
16655
16656         * assembly.c (search_loaded): Fix warnings.
16657
16658         * threadpool.c (mono_thread_pool_finish): Fix warnings.
16659         (mono_async_invoke): Ditto.
16660
16661 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
16662
16663         * object.c (mono_remote_class_vtable): Need to create proxy vtable
16664         entries for __ComObject type in addition to ComImport types.
16665         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
16666         about hash table.
16667         
16668         All code is contributed under the MIT/X11 license.
16669
16670 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
16671
16672         * image.c: avoid tentative loading of modulerefs that contain
16673         no metadata (P/Invoke library names).
16674
16675 2006-07-28  Dick Porter  <dick@ximian.com>
16676
16677         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
16678         mono_loader_lock() somewhere, so don't delete the critical section
16679         for now.  Found by running and exiting monodevelop.
16680
16681 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16682
16683         * filewatcher.c: define the inotify syscalls when we're building on
16684         linux and have sys/syscall.h. The build system might not have support
16685         for inotify but the target system might have it.
16686
16687 2006-07-26  Miguel de Icaza  <miguel@novell.com>
16688
16689         * domain.c: Documentation updates.
16690
16691         * loader.c (mono_free_method): Do not release the method
16692         information if we are being profiled, as profilers will use this
16693         information at shut down to present some data to the user.
16694
16695         This is needed so that the profiler does not crash, as the
16696         profiler tends to keep MonoMethods around, and they might become
16697         invalid if we free these.
16698
16699         (mono_get_method_constrained): Return the original CIL stream
16700         method as well, so verification can be performed against it.
16701
16702 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16703
16704         * filewatcher.[ch]: support for inotify file system watcher.
16705         * icall.c: add new internal calls for the inotify file system watcher.
16706
16707 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16708
16709         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
16710         #78888.
16711
16712 2006-07-20  Dick Porter  <dick@ximian.com>
16713
16714         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
16715         warning.
16716
16717 2006-07-20  Dick Porter  <dick@ximian.com>
16718
16719         * threads.c (start_wrapper): Do the thread cleanup while we still
16720         hold a reference to its object.  Fixes bug 78123.
16721
16722 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
16723
16724         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
16725         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
16726           "managed-to-managed".
16727         * icall.c: Redirect string constructors that take sbyte* to
16728           ves_icall_System_String_ctor_RedirectToCreateString.
16729         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
16730           to CreateString () methods with matching signature.
16731         * reflection.c: Use original security informations for
16732           MONO_WRAPPER_MANAGED_TO_MANAGED.
16733         * security-manager.c: Use original security informations for
16734           MONO_WRAPPER_MANAGED_TO_MANAGED.
16735         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
16736           that is a placeholder and only its address should be used.
16737         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
16738           that is a placeholder and only its address should be used.
16739
16740 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16741
16742         Begin implementing COM Interop.
16743         * appdomain.c: Increment corlib version.
16744         * class.c: Set ComImport classes' parent to __ComObject.
16745         * loader.c: Mark cominterop methods as such.
16746         * domain.c: Add __ComObject class to MonoDefaults structure.
16747         * image.c: Add 2 hashtables to the image for COM Interop related methods
16748         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
16749         using the mempool allocator
16750         
16751         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
16752         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
16753         declaration for mono_metadata_type_dup_mp.
16754         
16755         * debug-helpers.c: Added strings for two additional wrapper types
16756         * object.c: Create proxy objects for ComImport classes
16757         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
16758         and added __ComObject class to MonoDefaults structure.
16759         
16760         * object-internals.h: Finish MonoRealProxy definition, and add definition of
16761         MonoComInteropProxy and MonoComObject.
16762         
16763         * marshal.c: Added support for COM Interop
16764         (signature_cominterop): Converts managed signature to corresponding
16765         unmanaged COM signature.
16766         (cominterop_get_function_pointer): gets unmanaged function pointer via
16767         COM object vtable
16768         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
16769         (cominterop_get_method_interface): returns interface type that method is defined on
16770         (mono_mb_emit_cominterop_call): emits native call to function pointer
16771         gotten from vtable
16772         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
16773         that matches signature of unmanaged function.
16774         (cominterop_get_native_wrapper): wrapper around adjusted method call.
16775         (cominterop_get_invoke): forwards call from proxy to __ComObject
16776         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
16777         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
16778         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
16779         
16780         * marshal.h: Added Marshal icall declarations.
16781         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
16782         so we can access them in finalizer
16783         
16784 2006-07-14  Dick Porter  <dick@ximian.com>
16785
16786         * object.c (mono_type_initialization_cleanup): Fix a race
16787         condition by temporarily commenting out the critical section
16788         deletion.
16789
16790 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
16791
16792         * reflection.c (create_custom_attr): Fix some warnings.
16793         (create_custom_attr_data): Ditto.
16794         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
16795         types. Fixes #78855.
16796
16797 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
16798
16799         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
16800
16801         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
16802
16803 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16804
16805         * reflection.c (resolve_object): Add support for DynamicMethod.
16806
16807         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
16808         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
16809
16810 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
16811
16812         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
16813         don't leak GPtrArray's pdata has we have no use (nor free) for it.
16814
16815 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
16816
16817         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
16818         Fixes #77888.
16819
16820 2006-06-30  Raja R Harinath  <rharinath@novell.com>
16821
16822         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
16823         slightly: remove a shadow local variable.
16824
16825 2006-06-29  Raja R Harinath  <rharinath@novell.com>
16826
16827         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
16828         definition that introduces the virtual function slot.
16829         Also fix Coverity #105.
16830
16831 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
16832
16833         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
16834         for dynamic assemblies. Fixes #78724.
16835
16836 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
16837
16838         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
16839         Fixes #78722.
16840
16841 2006-06-21  Martin Baulig  <martin@ximian.com>
16842
16843         * reflection.c
16844         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
16845         fixes #76484.
16846
16847 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16848
16849         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
16850
16851 2006-06-20  Raja R Harinath  <rharinath@novell.com>
16852
16853         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
16854         nor TYPEREFs.
16855         * class.c (mono_class_create_from_typespec): Add 'context' argument.
16856         Inflate result if necessary.
16857         (mono_class_get_full): Remove old version.  Rename from
16858         'mono_class_get' and add 'context' argument.  Pass it to
16859         ..._create_from_typespec.
16860         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
16861         (mono_ldtoken): Revert change below.
16862
16863 2006-06-20  Martin Baulig  <martin@ximian.com>
16864
16865         * class.c (mono_ldtoken): Don't pass the generic context to
16866         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
16867
16868 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
16869
16870         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
16871         and later freeing it. Fixes #78638.
16872
16873 2006-06-15  Miguel de Icaza  <miguel@novell.com>
16874
16875         * icall.c (mono_class_get_throw): Revert over-zealous error
16876         throwing, the caller for mono_class_get_throw will cope with
16877         errors when classes are not properly initialized already.
16878
16879         The code still copes with loader exceptions though.
16880
16881         Fixes the regression in reftype1 and reftype3 from the CAS tests.
16882         
16883 2006-06-14  Miguel de Icaza  <miguel@novell.com>
16884
16885         Fixes the `make run1' version of RuntimeAbort (to be commited,
16886         source is in Bugzilla).
16887         
16888         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
16889         FALSE on class loading failure instead of returning true.
16890
16891         * class.c (mono_class_create_from_typedef): It is possible for
16892         mono_metadata_interfaces_from_typedef_full to fail if a class is
16893         not found, cope with this.
16894         
16895
16896 2006-06-14  Dick Porter  <dick@ximian.com>
16897
16898         * socket-io.c: 
16899         * process.c: Fix a bunch of signed/unsigned warnings from gcc
16900         4.1.1
16901
16902 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
16903
16904         * culture-info-table.h : oops, forgot to make it nsync with r61548.
16905
16906 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16907
16908         * icall.c: Another fix for building mono in Visual Studio.
16909
16910 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16911
16912         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
16913         
16914 2006-06-09  Martin Baulig  <martin@ximian.com>
16915
16916         * debug-mono-symfile.c: Put this back and really fix it this
16917         time. Sorry for all the trouble.
16918
16919 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16920
16921         * icall.c (mono_class_get_throw): Fix a warning.
16922         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
16923         ReflectionTypeLoadException if needed. Fixes #78606.
16924
16925         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
16926         (mono_class_init): Ditto.
16927
16928         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
16929         ref_only exceptions.
16930         (mono_loader_clear_error): Make this work even if there is no error.
16931
16932 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
16933
16934         * object-internals.h marshal.c marshal.h icall.c: Implement method 
16935         Marshal.GetComSlotForMethodInfo using internal call.
16936
16937 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
16938
16939         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
16940         a function for signalling it.
16941
16942         * class.c (mono_class_from_typeref): Use the new kind of loader error when
16943         a referenced assembly is not found.
16944
16945         * loader.c (mono_loader_error_prepare_exception): Add support for 
16946         LOADER_ERROR_ASSEMBLY. Fix formatting.
16947
16948 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
16949
16950         * domain.c appdomain.c class-internals.h marshal.c: Add support 
16951         for VARIANT marshalling on windows and increment corlib version
16952         since Variant struct was added.
16953
16954 2006-06-03  Miguel de Icaza  <miguel@novell.com>
16955
16956         * debug-mono-symfile.c: Revert Martin's previous patch which broke
16957         stack trace line information:
16958
16959         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
16960         (Martin) when looking up B which is between A and C, return A not C.
16961
16962         Bug is #78573.
16963
16964         Thanks to Alexander Olk for tracking this down.
16965
16966 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16967
16968         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
16969         
16970         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
16971         avoid clobbering its value.
16972         (mono_string_to_lpstr): Fix a warning on windows.
16973
16974 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
16975
16976         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
16977
16978         * reflection.c loader.c: Removed references to 'dummy' flag.
16979
16980         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
16981
16982         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
16983         it gets GC tracking.
16984
16985         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
16986         GC tracking.
16987         
16988         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
16989
16990         * marshal.c threadpool.c: Update callers of mono_async_result_new.
16991
16992         * appdomain.c: Bump corlib version.
16993
16994 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
16995
16996         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
16997         CEE_STIND_REF when working with object references.
16998
16999 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
17002         Fixes #78539.
17003
17004 2006-05-30  Miguel de Icaza  <miguel@novell.com>
17005
17006         * loader.c (method_from_memberref): Fix argument value for
17007         mono_loader_set_error_method_load (I was passing the MonoClass
17008         instead of the class name char *).
17009
17010 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
17011
17012         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
17013         CEE_STIND_REF when working with object references.
17014
17015 2006-05-30  Martin Baulig  <martin@ximian.com>
17016
17017         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
17018         mono_method_full_name() change and replace the ':' with a '.'
17019         here.
17020
17021 2006-05-30  Martin Baulig  <martin@ximian.com>
17022
17023         * debug-mono-symfile.c
17024         (mono_debug_symfile_lookup_location): Fix the algorithm:
17025         when looking up B which is between A and C, return A not C.
17026
17027 2006-05-29  Martin Baulig  <martin@ximian.com>
17028
17029         * mono-debug.h
17030         (MonoDebugMethodInfo): Make the typedef public.
17031         (MonoDebugSourceLocation): New public struct.
17032
17033         * mono-debug.c
17034         (mono_debug_source_location_from_address): Removed.
17035         (mono_debug_source_location_from_il_offset): Removed.
17036         (mono_debug_il_offset_from_address): Removed.
17037         (mono_debug_address_from_il_offset): Removed.
17038         (mono_debug_lookup_method): New public function.
17039         (mono_debug_lookup_source_location): New public function; replaces
17040         the old mono_debug_source_location_from_*() functions; see the
17041         inline documentation.
17042         (mono_debug_free_source_location): New public function.
17043         (mono_debug_print_stack_frame): New public function; see the
17044         inline documentation.
17045
17046         * debug-mono-symfile.c
17047         (mono_debug_find_source_location): Renamed into
17048         mono_debug_symfile_lookup_location(); only take a
17049         `MonoDebugMethodInfo *' and an `offset' argument; added inline
17050         documentation.
17051         (mono_debug_find_method): Renamed into
17052         mono_debug_symfile_lookup_method().
17053
17054 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17055
17056         * assembly.c (mono_assembly_open_full): Dont overwrite the status
17057         returned by mono_image_open_full ().
17058
17059         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
17060         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
17061         #78517.
17062
17063         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
17064         #78518.
17065
17066 2006-05-27  Miguel de Icaza  <miguel@novell.com>
17067
17068         * class.c (mono_class_from_typeref): handle missing images
17069         earlier, deals with bug #78418.   Refactor code; 
17070
17071         Fix a warning introduced in my previous commit (some stale code
17072         from before I revisited my patch).
17073
17074         * class.c (mono_class_create_from_typedef): On failure, remove the
17075         class from the MonoImage->class_cache as the class is not
17076         initialized;   Fixes the leak pointed out by Paolo.
17077
17078 2006-05-25  Dick Porter  <dick@ximian.com>
17079
17080         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
17081         DeleteCriticalSections until I figure out which one may still be
17082         sometimes locked when mono_thread_cleanup is called.
17083
17084 2006-05-24  Dick Porter  <dick@ximian.com>
17085
17086         * threads.c (mono_thread_cleanup): Move the threading cleanup out
17087         of mono_thread_manage and back into its own function, so it can be
17088         called after the finalizer thread has finished.
17089
17090         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
17091
17092 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
17093
17094         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
17095         Fixes #78495.
17096
17097         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
17098         with non-blittable elements.
17099         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
17100
17101 2006-05-24  Martin Baulig  <martin@ximian.com>
17102
17103         * mono-debug-debugger.h (MonoDebuggerEvent): Added
17104         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
17105
17106         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
17107         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
17108         `mono_debugger_event_handler' to NULL.
17109
17110 2006-05-24  Martin Baulig  <martin@ximian.com>
17111
17112         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
17113
17114 2006-05-24  Martin Baulig  <martin@ximian.com>
17115
17116         * mono-debug-debugger.h
17117         (mono_debugger_create_notification_function): Added
17118         `MonoCodeManager *' argument.
17119
17120 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
17121
17122         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
17123
17124 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
17125
17126         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
17127         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
17128         implementation.
17129
17130 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
17131
17132         * icall.c: precise GC support: objects can't be stored in unmanaged
17133         memory anymore, even if they are kept alive by other references: since
17134         they can move the GC needs to be able to always find them.
17135
17136 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
17137
17138         * object.c: precise GC support for static fields. Support
17139         for moving GCs: write barriers and pinned allocation for interned
17140         strings.
17141
17142 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
17143
17144         * domain.c, domain-internals.h: precise GC support for the MonoDomain
17145         structure.
17146
17147 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
17148
17149         * class.c, gc.c: sgen and precise GC updates.
17150
17151 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
17152
17153         * marshal.h, marshal.c: added write barrier wrapper and precise type
17154         fixes.
17155
17156 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
17157
17158         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
17159         support.
17160
17161 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17162
17163         * reflection.c: precise and sgen GC updates.
17164
17165 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17166
17167         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
17168
17169 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
17170
17171         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
17172
17173 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
17174
17175         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
17176         MONO_TYPE_OBJECT. Fixes #78462.
17177
17178 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
17181         and blittable types.
17182
17183 2006-05-17  Miguel de Icaza  <miguel@novell.com>
17184
17185         * class.c (mono_class_get_exception_for_failure): Implement parts
17186         of a TODO: if the loader error is set (instead of the class
17187         error), we return a Loader exception that can be properly thrown
17188         elsewhere.
17189
17190         This was exposed by some Winforms 2.0 code that I tried to run
17191         (Atsushi pointed me to it).
17192
17193 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
17194
17195         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
17196         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
17197         
17198         * marshal.c (emit_marshal_vtype): Add limited support for 
17199         UnmanagedType.LPStruct. Fixes #78427.
17200
17201         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
17202         Applied a patch from kangaroo to fix #77523.
17203
17204 2006-05-17  Martin Baulig  <martin@ximian.com>
17205
17206         * threads.c
17207         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
17208         (debugger_thread_created): Removed.
17209         (debugger_thread_exited): Removed.
17210
17211 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
17212
17213         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17214
17215         * object-internals.h (MonoReflectionResource): Sync with managed version.
17216
17217 2006-05-12  Wade Berrier <wberrier@novell.com>
17218
17219         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
17220
17221 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
17222
17223         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
17224         functions try to allocate from the image mempool.
17225
17226 2006-05-12  Dick Porter  <dick@ximian.com>
17227
17228         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
17229
17230 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
17231
17232         * object.c: The FieldGetter and FieldSetter methods require the full
17233         name of the class, not only the name. Fixes bug #78277.
17234
17235 2006-05-11  Miguel de Icaza  <miguel@novell.com>
17236
17237         * loader.c (method_from_memberref): Do not pass the NULL klass to
17238         mono_loader_set_error_() methods.  Pass the non-NULL value
17239         (class). 
17240
17241 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17242
17243         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
17244         (mono_assembly_close): Null out assembly->image->references after freeing it.
17245
17246         * image.c (mono_image_close): Free image->references.
17247         
17248         * reflection.c (mono_image_basic_init): Fix a small memory leak.
17249
17250 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
17251
17252         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
17253         before checking if it's NULL (g_assert).
17254
17255 2006-05-10  Martin Baulig  <martin@ximian.com>
17256
17257         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
17258         I thought I already killed that two months ago, but now it somehow reappeared.
17259
17260 2006-05-10  Martin Baulig  <martin@ximian.com>
17261
17262         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
17263
17264 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17265
17266         * reflection.c: Allocate memory for dynamically created methods in the image
17267         mempools.
17268
17269 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
17270
17271         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
17272         don't use the ad pointer before checking if it's NULL (g_assert).
17273
17274 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17275
17276         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
17277         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
17278
17279         * marshal.c: Allocate all signatures from mempools.
17280
17281         * marshal.c: Allocate some more signatures from mempools.
17282
17283 2006-05-09  Miguel de Icaza  <miguel@novell.com>
17284
17285         * object.c (mono_load_remote_field): The code used to provide a
17286         temporary variable for returning results if the user did not
17287         provide a result pointer.  But our temporary variable was allocted
17288         on the satck.
17289
17290         Fix calling code to always pass a result area.   Coverity ID 103.
17291
17292 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17293
17294         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
17295         value, not the old. Fixes #78312.
17296         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
17297
17298         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
17299         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
17300         per-image cache.
17301
17302         * assembly.c (mono_assembly_close): Free image->references.
17303
17304         * assembly.c (mono_assembly_names_equal): Fix a warning.
17305         (mono_assemblies_cleanup): Cleanup more global data.
17306
17307         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
17308
17309         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
17310         ptr_cache and image->modules.
17311
17312         * image.c (mono_image_init): Allocate array_cache lazily.
17313         
17314 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17315
17316         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
17317         behavior was changed recently and has bad side effects.
17318
17319 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17320
17321         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
17322         
17323         * assembly.c (mono_assembly_close): Remove a debug printf.
17324
17325         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
17326
17327         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
17328         to also allow for temporary references between mono_image_open ()/close ().
17329
17330         * domain.c (get_runtimes_from_exe): Add a FIXME.        
17331
17332 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17333
17334         * marshal.c: Fix support for dynamic methods.
17335
17336         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
17337
17338         * marshal.c (mono_marshal_cleanup): New cleanup function.
17339
17340         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
17341         image mempools.
17342
17343         * class.c (mono_class_init): Fix leaking class->nested_classes.
17344
17345         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
17346
17347         * image.c (mono_image_init): Initialize the new cashes.
17348
17349         * image.c (mono_image_close): Destroy the new cashes.
17350
17351         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
17352
17353         * mempool.c (mono_mempool_strdup): New helper function.
17354
17355         * class-internals.h: Add prototype for mono_loader_unlock ().
17356
17357         * domain.c (mono_jit_info_table_find): Fix a warning.
17358         (mono_debugger_check_runtime_version): Ditto.
17359
17360         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
17361         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
17362         functions to these modules.
17363
17364         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
17365         metadata modules.
17366         
17367         * marshal.c (mono_free_bstr): Fix a warning.
17368
17369         * assembly.c (mono_assembly_open_full): Fix another small leak.
17370
17371         * object.c: Fix some unload leaks in the remoting code.
17372
17373         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
17374         function.
17375
17376         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
17377
17378         * reflection.c: Fix some unload leaks in dynamic assemblies.
17379
17380 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
17381
17382         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
17383         * marshal.h: Add BSTR support on Win32
17384         * icall.c: Add BSTR icalls
17385         * metadata.h: Add BSTR enums
17386
17387 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17388
17389         Work to catch the crash from #76795 and turn it into an
17390         exception.   As I stubbed out pieces of the VisualBasic support,
17391         I found a number of places where the code was failing and I added
17392         checks to those places. 
17393         
17394         * metadata.c (do_mono_metadata_parse_generic_class): Make this
17395         function return a status code.  If we fail to parse the signature
17396         from mono_metadata_parse_generic_inst, return FALSE.
17397
17398         * loader.c (mono_get_method_from_token): If we fail to load the
17399         method (mono_class_get) return NULL.   
17400
17401         * (method_from_memberref): Return NULL if we are unable to parse
17402         the method signature
17403
17404         (mono_loader_error_prepare_exception): Since we now use the
17405         loader_error flag internally to stop processing, and obtaining
17406         exceptions that might be thrown will walk this code path the
17407         proper way of going from a MonoLoaderError into a
17408         MonoException was convoluted.   This new routine encapsulates the
17409         process of turning the error into an exception and *clearing* the
17410         error afterwards.
17411         
17412 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17413
17414         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
17415         with missing assemblies), and to cope with:
17416
17417                 * Missing fieldref from a non-existing assembly.
17418                 * Missing methodref from a non-existing assembly.
17419
17420         The first batch of work to address *some* of the issues from 76661.
17421         
17422         * object.c (mono_class_create_runtime_vtable): If we fail to
17423         initialize the class raise the exception here. 
17424
17425         * metadata.c (mono_class_get_overrides_full): If any methods fail
17426         to load return the failure to the caller.
17427
17428         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
17429         flagging assemblies that failed to load.   
17430
17431         Do not crash if we are unable to load the assembly.
17432
17433         (mono_assembly_close): Do nothing with REFERENCE_MISSING
17434         assemblies. 
17435
17436         * loader.c (mono_loader_set_error_type_load): Change the
17437         convention to always pass unallocated strings, so we make our own
17438         copies (I know our own code had duplicated strings before, but
17439         this keeps the normal conventions).
17440         (method_from_memberref): Call mono_loader_set_error_method_load
17441         for all possible failures of loading the class. 
17442         Remove assert, turn into a loader error.
17443
17444         (mono_loader_error_to_exception): Move this routine from mini
17445         (mini_loader_error_to_exception) there was no need to have that in
17446         mini. 
17447
17448         * class.c (mono_class_from_typeref): If we were not able to load
17449         the assembly with mono_assembly_load_reference, call the
17450         mono_loader_set_error_type_load to register the problem.
17451
17452         (mono_class_setup_fields): If we fail to load the type from
17453         mono_metadata_parse_type_full, call mono_class_set_failure and
17454         break from the loop.
17455
17456         If class->exception_type is set, we do not layout the fields as
17457         that might crash the runtime, and instead return (from breaking
17458         from the previous loop).
17459
17460         (mono_class_setup_vtable): This now returns a boolean indicating
17461         whether the table was properly setup.   The decision is driven by
17462         mono_class_get_overrides_full which might run into non-existing
17463         methods. 
17464         
17465         (mono_class_init): Returns TRUE on success or FALSE if there was a
17466         problem in loading the type (incorrect assemblies, missing
17467         assemblies, methods, etc).
17468
17469         When we call mono_class_setup_fields we also check for a potential
17470         error inside this call (either a class exception or a general
17471         loader exception).
17472
17473         (mono_class_create_from_typedef): If the parent fails to load
17474         (calling mono_class_get_full) return NULL.
17475         
17476         ** Important **
17477
17478         calls to mono_metadata_parse_type_full should be checked
17479         everywhere and set the mono_class_set_failure
17480         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
17481
17482         The current patch checks the places where my manually constructed
17483         tests show the errors are showing up, but we should do it
17484         everywhere. 
17485
17486         ** Important2 **
17487
17488         mono_class_init return values should be tested everywhere, like
17489         the previous case this is something that we should audit
17490         everywhere and not only on the cases exposed by the tests I
17491         created. 
17492
17493 2006-04-26  Miguel de Icaza  <miguel@novell.com>
17494
17495         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
17496         boolean parameter and instead pass the information on `options'
17497         parameter (FileOptions).
17498
17499         * icall.c: Register the new signature for MonoIO.Open.
17500
17501         * debug-helpers.c (dis_one): Trying to understand how coverity
17502         works.  Fix Run 5, item 78.
17503
17504 2006-04-26  Dick Porter  <dick@ximian.com>
17505
17506         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
17507         dereference.
17508
17509 2006-04-25  Martin Baulig  <martin@ximian.com>
17510
17511         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
17512
17513         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
17514         debugger_thread_created().
17515         (debugger_gc_push_all_stacks): Don't handle the main thread in any
17516         special way.
17517         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
17518         (mono_debugger_finalize_threads): New function; undo the effects
17519         of mono_debugger_init_threads().
17520         (mono_debugger_create_all_threads): Removed.
17521
17522 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17523
17524         * image.c (mono_image_close): Tidy up trace messages.
17525
17526         * assembly.c (mono_assembly_close): Ditto.
17527
17528         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
17529         no longer references an already freed assembly. Fixes #78168.
17530
17531 2006-04-21  Dick Porter  <dick@ximian.com>
17532
17533         * threads.c (mono_thread_detach): Fix reference counting when
17534         detaching threads.
17535
17536 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
17537
17538         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
17539         #78155.
17540
17541 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17542
17543         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
17544         (mono_type_to_stind): Ditto.
17545
17546         * marshal.c: Use the new helper functions to simplify code.
17547
17548         * image.c (mono_image_close): Add some code for help debug assembly unloading
17549         problems.
17550
17551         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
17552         image mempool.
17553
17554         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
17555         assembly was already loaded in another appdomain. Fixes #78083.
17556
17557 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
17558
17559         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
17560         referenced assemblies.
17561         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
17562
17563         * domain.c (mono_domain_free): Add a trace message.
17564
17565         * appdomain.c (add_assemblies_to_domain): Ditto.        
17566
17567         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
17568         field.  
17569
17570 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17571
17572         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
17573
17574 2006-04-12  Martin Baulig  <martin@ximian.com>
17575
17576         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
17577         `USE_INCLUDED_LIBGC'.   
17578
17579 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17580
17581         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
17582         the patch contains ../ and a small directory name later. Hopefully fixes
17583         #78035.
17584
17585 2006-04-10  Martin Baulig  <martin@ximian.com>
17586
17587         Clean up the debugger's thread-handling code.
17588
17589         The debugger's thread-handling code has been moved from
17590         ../mini/debug-debugger.c to threads.c.  We now iterate directly
17591         over the `threads' hash, keep track of exiting threads and also
17592         use proper locking.
17593
17594         We can now debug XSP and XSP based applications with the debugger.
17595
17596         * object-internals.h (MonoThread): Added `gpointer end_stack'.
17597
17598         * threads.h
17599         (MonoThreadCallbacks): Removed; this was only used by the debugger.
17600         (mono_install_thread_callbacks): Likewise.      
17601
17602         * threads.c (mono_thread_callbacks): Removed.
17603         (debugger_thread_created, debugger_thread_exited): New static functions.
17604         (start_wrapper): Call debugger_thread_created().
17605         (thread_cleanup): Call debugger_thread_exited().
17606         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
17607         (mono_debugger_init_threads): New public function.
17608         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
17609         iterate directly over the `threads' hash and also use proper locking.
17610
17611         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
17612
17613         * mono-debug-debugger.h
17614         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
17615
17616 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17617
17618         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
17619         argument type=array. Fixes #78057.
17620
17621 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
17622
17623         * culture-info-table.h : regenerated. Fixed bug #69652.
17624
17625 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17626
17627         * loader.c metadata.c: Reapply a variant r59116.
17628         
17629         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
17630
17631         * class.c (mono_class_setup_interface_offsets): New internal function.
17632
17633         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
17634         interfaces too. Fixes #77398.
17635
17636         * reflection.c (encode_cattr_value): Add support for 
17637         parameter type=object, argument type=array.
17638         (load_cattr_value): Ditto. Fixes #77916.
17639
17640         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
17641         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
17642
17643         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
17644         a byval char array and CharSet is Ansi.
17645
17646         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
17647
17648 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
17649
17650         * metadata.c: Add some locking comments.
17651         
17652         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
17653         mempool.
17654         (mono_metadata_free_method_signature): Don't free the signature itself.
17655
17656         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
17657
17658         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
17659         reference the same MonoImage.
17660         (mono_assembly_load_from_full): Add an assert.
17661
17662 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17663
17664         * image.c (mono_image_close): Don't put the image we are about to free into the
17665         loaded_images_guid_hash.
17666
17667         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
17668         to reduce code duplication.
17669
17670         * marshal.c: Register the native functions called by this module as icalls, to
17671         somewhat centralize the creation of MonoMethodSignature's.
17672
17673         * loader.c (mono_method_signature): Add a cache for method signatures.
17674
17675         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
17676         the parameter attributes of a method.
17677         (mono_metadata_parse_method_signature_full): Refactored the computation of
17678         parameter attributes into a separate function. Also avoid one allocation in
17679         most cases.
17680
17681         * assembly.c (mono_assembly_close): Ditto.
17682
17683         * image.c (mono_image_close): Log trace messages with INFO level.
17684
17685         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
17686
17687         * image.c reflection.c: Correct reference counting of image modules.
17688         
17689         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
17690         of this function from the image mempool.
17691         
17692         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
17693         to allow more cached types to be used.
17694
17695         * mono-debug.c (mono_debug_add_method): Appled patch from
17696         David S. Miller  <davem@sunset.davemloft.net>: Access 
17697         minfo->lexical_blocks[] entry elements using read32().
17698
17699 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17700
17701         * loader.c (mono_free_method): No longer free the method header for non-dynamic
17702         methods as it is allocated from the mempool.
17703
17704         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
17705         image mempool.
17706
17707         * metadata-internals.h: Add comments describing the reference counting scheme
17708         used for MonoImage and MonoAssembly.
17709
17710         * image.c assembly.c reflection.c: Rework reference counting of images and 
17711         assemblies so they are freed when the runtime is shut down. Free some 
17712         additional memory structures when an image is unloaded.
17713         
17714 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17715
17716         * class.c loader.c reflection.c: Allocate more data structures in
17717         the image mempool.
17718
17719 2006-03-31  Miguel de Icaza  <miguel@novell.com>
17720
17721         * icall.c
17722         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
17723         build on pre glib 2.4 systems.
17724
17725 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17726
17727         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
17728
17729         * icall.c: Fix some warnings.
17730
17731 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
17732
17733         * culture-info-table.h : regenerated.
17734
17735 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
17736
17737         * threads.c, object-internals.h, verify.c: changed the culture caching
17738         code to use a normal MonoArray for storage so the GC can keep track of
17739         them easily. Fixed bits of the cache logic, too and simplified the
17740         code.
17741
17742 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
17743
17744         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
17745         thread for non-Boehm GCs.
17746
17747 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
17748
17749         * domain.c, object.c, domain-internals.h: reduce the amount of memory
17750         needed to keep track of the data for static fields.
17751
17752 2006-03-29  Raja R Harinath  <rharinath@novell.com>
17753
17754         Fix #75172
17755         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
17756         for interface classes.  Use 'num_methods' instead.
17757         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
17758         before using '->vtable_size' field.
17759
17760 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17761
17762         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
17763         doesn't contain managed pointers, so use a normal hashtable.
17764
17765 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
17766
17767         * reflection.c, class-internals.h, domain.c: fixed handling of types
17768         used as values for objects in custom attributes (bug #77915):
17769
17770 2006-03-24  Martin Baulig  <martin@ximian.com>
17771
17772         * class.c (mono_class_setup_fields): Added support for generic
17773         instances; fixes #77580.
17774
17775 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17776
17777         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
17778
17779 2006-03-24  Dick Porter  <dick@ximian.com>
17780
17781         * file-io.c (get_file_attributes): More stat macro breakage.
17782         Fixes bug 77759.
17783
17784 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
17785
17786         * profiler.c: added the file=filename option in the default profiler
17787         to output the profile data to filename.
17788
17789 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17790
17791         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
17792         bug #77877.
17793
17794 2006-03-22  Martin Baulig  <martin@ximian.com>
17795
17796         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
17797         allocated `MonoClassField *' in `fb->handle'.
17798
17799 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
17800
17801         * class.c, image.c, metadata-internals.h: implemented new mechanism to
17802         allocate interface ID to save memory and allow better ID reuse on
17803         appdomain unload. setup_generic_vtable () removal from Martin.
17804
17805 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
17806
17807         * object.h, appdomain.c, domain.c, exception.c, icall.c,
17808         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
17809         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
17810         write barriers for reference stores with managed objects accessed with
17811         C structures in the runtime and in embedding programs.
17812
17813 2006-03-20  Raja R Harinath  <rharinath@novell.com>
17814
17815         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
17816         'interface_id' and 'max_interface_id' fields of MonoClasses
17817         representing open generic types.
17818
17819 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
17820
17821         * object.h, object.c, icall.c: added functions to deal with
17822         storing valuetypes that contain references in managed objects.
17823         * reflection.c, string-icalls.c, threads.c, marshal.c: small
17824         fixes and comments around uses of mono_array_addr ().
17825
17826 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
17827
17828         * object.h, icall.c, monitor.c: object.GetHashCode ()
17829         implementation that supports the moving garbage collector.
17830
17831 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
17832
17833         * icall.c, threads-types.h, threads.c: implemented finalizer for
17834         LocalDataStoreSlot.
17835
17836 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17837
17838         * metadata.c (mono_type_size): Add a fixme.
17839         (mono_type_stack_size): Ditto.
17840
17841         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
17842         'type_forwarders' field.
17843
17844         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
17845         attribute from net 2.0.
17846
17847         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
17848         from class.c.
17849
17850         * class.c (mono_class_setup_fields): Fix a warning.
17851         
17852         * class.c (mono_class_from_name): Add support for assemblyref entries
17853         in the EXPORTEDTYPE table.
17854
17855         * reflection.c: Add support for handling type forwarders under net 2.0.
17856
17857         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
17858         
17859 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17860
17861         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
17862         overwriting entries in ModuleBuild->types, also clean up the code
17863         a little. Fixes #77774.
17864
17865 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17866
17867         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
17868         load friend assembly info when present.
17869
17870 2006-03-14  Raja R Harinath  <rharinath@novell.com>
17871
17872         Fix crasher on gtest-158.cs.
17873         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
17874         the return value if the MonoClass we want is yet in an
17875         inconsistent state.
17876         * class.c (mono_class_create_from_typedef): Add an comment
17877         explaining an order dependency between mono_class_setup_parent and
17878         mono_class_setup_mono_type.
17879
17880 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
17881
17882         * class.c: documentation updates and events bug fix.
17883
17884 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
17885
17886         * class.c: some cleanup, locking fixes.
17887
17888 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17889
17890         * class.c: fix the generics code to setup nested
17891         type info to the instantiated type (bug #77770).
17892
17893 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17894
17895         * marshal.c: fixed a few type correctness issues.
17896
17897 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17898
17899         * loader.c: the Set/Get/Addrtess array methods should be public.
17900
17901 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17902
17903         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
17904         
17905         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
17906         info->wrapper.
17907
17908 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17909
17910         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
17911
17912         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
17913
17914         * mempool.c (mono_mempool_alloc): Speed this up a bit.
17915         (mono_mempool_alloc0): Ditto.
17916
17917 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17918
17919         * socket-io.c:
17920         (create_object_from_sockaddr): it was allocating 4 extra bytes
17921         for the AF_UNIX data. Fixes bug #77747.
17922
17923 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17924
17925         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
17926
17927 2006-03-09  Dick Porter  <dick@ximian.com>
17928
17929         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
17930         Fixes bug 76966 again.
17931
17932 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
17933
17934         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
17935         names from r57532
17936         * appdomain.c: Bumped corlib version to 48 (due to r57532)
17937
17938 2006-03-07  Martin Baulig  <martin@ximian.com>
17939
17940         * object.c
17941         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
17942
17943 2006-03-07  Martin Baulig  <martin@ximian.com>
17944
17945         * class.c
17946         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
17947         regression introduced in r56970; see gtest-252.cs.
17948
17949         * loader.c (mono_get_method_constrained): Correctly handle generic
17950         methods; see gtest-253.cs.
17951
17952 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17953
17954         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
17955
17956 2006-03-04  Martin Baulig  <martin@ximian.com>
17957
17958         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
17959         compute the parent type at runtime, just like we're already doing
17960         it for interfaces.
17961
17962         * reflection.c
17963         (mono_reflection_bind_generic_parameters): Don't compute the
17964         parent type anymore.
17965
17966         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
17967
17968 2006-03-04  Martin Baulig  <martin@ximian.com>
17969
17970         * mono-debug-debugger.h
17971         (mono_debugger_create_notification_function): Allocate memory at
17972         runtime and return a pointer to it.
17973
17974 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
17975
17976         * assembly.c: Fix windows build.
17977         
17978         * assembly.c: Fix build.
17979
17980         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
17981
17982         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
17983         
17984 2006-03-03  Dick Porter  <dick@ximian.com>
17985
17986         * process.c
17987         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
17988         Check parameters before dereferencing them.  Fixes Aaron's part of
17989         bug 77393.
17990
17991 2006-03-03  Raja R Harinath  <rharinath@novell.com>
17992
17993         Fix performance regression.
17994         * loader.c (find_method_in_class): Add 'from_class' argument.
17995         Rename 'klass' argument to 'in_class'.  The signature is compared
17996         against the method in 'in_class', and the corresponding method is
17997         returned from 'from_class'.
17998         (find_method): Walk both 'in_class' and 'from_class' in parallel.
17999         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
18000         type definition and generic instantiation in parallel.
18001         (mono_get_method_constrained): Update to changes.
18002
18003 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
18004
18005         * threads.c: make sure the domain is correct, too when doing
18006         mono_thread_attach ().
18007
18008 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
18009
18010         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
18011         windows. Fixes #77683.
18012
18013 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
18014
18015         * object.h, *: introduced specific way to set elements of an array
18016         of references to be used as write barrier. Still need to audit the
18017         uses of mono_array_addr.
18018
18019 2006-03-01  Miguel de Icaza  <miguel@novell.com>
18020
18021         * object-internals.h: New field to cache the assmebly name, patch
18022         from Tambet Ingo (tambet@ximian.com)
18023
18024 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
18025
18026         * decimal.h, class-internals.h, metadata-internals.h,
18027         file-io.h: mark a few function declarations as internal, to
18028         reduce the number of PLT entries.
18029
18030 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18031
18032         * file-io.c: fix typo in warning message.
18033
18034 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
18035
18036         * loader.c: on unix, lookup the "*A" version of a function
18037         if charset is auto as a second option before failing.
18038
18039 2006-02-28  Raja R Harinath  <rharinath@novell.com>
18040
18041         * class.h (mono_class_inflate_generic_method): Revert to two
18042         argument version.
18043         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
18044         (mono_class_inflate_generic_method_full): Add.
18045         * class.c (mono_class_inflate_generic_method_full): Rename from
18046         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
18047         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
18048         * loader.c, reflection.c: Update to changes.
18049
18050 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
18051
18052         * icall.c: const fixes and small improvements.
18053
18054 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18055
18056         * threadpool.c: for asynchronous connect(), enable the same workaround
18057         for BSD 6 as for the Mac. Fixes bug #77637.
18058
18059 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
18060
18061         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
18062         formatted classes. Fixes #77524.
18063
18064 2006-02-24  Raja R Harinath  <rharinath@novell.com>
18065
18066         * class.c (inflate_generic_type): Add a couple more
18067         micro-optimizations.
18068         (inflate_generic_context): Don't use the 'gmethod' from
18069         'inflate_with'.
18070         (mono_class_inflate_generic_method): If the method has generic
18071         parameters, but the passed-in context doesn't have a 'gmethod',
18072         create one.  Use the possibly simplified generic instantiation
18073         from the declaring class instead of the one passed in.
18074
18075 2006-02-24  Raja R Harinath  <harinath@gmail.com>
18076
18077         Make generic method signature and method header handling lazy.
18078         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
18079         (inflate_generic_header): Likewise.
18080         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
18081         parameter to avoid inflating types.
18082         (mono_get_inflated_method): Empty out.
18083         * class.h (mono_class_inflate_generic_method): Update to changes.
18084         * loader.c (mono_get_method_from_token): Don't parse signature for
18085         generic methods, nor methods of generic classes.
18086         (mono_method_signature): Rename from 'mono_method_signature'.
18087         Inflate signature on demand.
18088         (mono_method_get_header): Inflate method header on demand.
18089         * reflection.c: Update to changes.
18090
18091 2006-02-23  Raja R Harinath  <rharinath@novell.com>
18092
18093         * metadata.c (mono_metadata_inflate_generic_inst): If the
18094         instantiation is closed, don't bother expanding it in the new
18095         context.
18096         * class.c (inflate_generic_class): If the generic instantiation
18097         doesn't change after inflation, return the argument itself.
18098         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
18099         Add bounds checks.
18100         (inflate_generic_context): If neither the generic class nor the
18101         generic method instantiations change, return the original context.
18102         * reflection.c (mono_method_get_object): Do
18103         'mono_get_inflated_method' before accessing the ->klass field.
18104         (inflate_mono_method): Don't create a MonoGenericMethod unless
18105         necessary.
18106         (inflate_method): Don't pass a constructed type as the declaring
18107         type of a methodbuilder.
18108
18109 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
18110
18111         * object.c: fix memory overwrite.
18112
18113 2006-02-22  Dick Porter  <dick@ximian.com>
18114
18115         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
18116         it doesn't work any more.
18117         (mono_threads_request_thread_dump): Fix unused variable warnings.
18118
18119 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18120
18121         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
18122         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
18123         the public header file.
18124
18125 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
18126
18127         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
18128
18129 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
18130
18131         * class-internals.h, object.c: reduce the size of MonoVTable
18132         and store the interface_offsets array at negative offsets.
18133
18134 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
18135
18136         * metadata.c: tweak table descriptors data structures to reduce
18137         size and runtime relocations.
18138
18139 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18140
18141         * marshal.c: fix some types and opcodes to be type-safe
18142         in marshaling wrappers.
18143
18144 2006-02-21  Ankit Jain  <jankit@novell.com>
18145
18146         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
18147
18148 2006-02-21  Raja R Harinath  <rharinath@novell.com>
18149
18150         * metadata.c (get_constraints): Relax debugging checks for monodis.
18151
18152 2006-02-21  Ankit Jain  <jankit@novell.com>
18153
18154         * metadata.c (mono_metadata_load_generic_params): Move the code
18155         checking for ambiguous generic params from here to mono/dis/get.c
18156         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
18157
18158 2006-02-21  Raja R Harinath  <harinath@gmail.com>
18159
18160         Fix assertion triggered when compiling nemerle.
18161         * class.c (mono_get_shared_generic_inst): Rename from
18162         get_shared_inst and make non-static.
18163         * loader.c (mono_get_shared_generic_method): New.  Used to create
18164         the MonoGenericContext-equivalent of a MonoGenericContainer.
18165         (mono_get_method_from_token): Initialize the 'context' field of
18166         the created MonoGenericContainer.
18167         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
18168         * metadata.c (get_constraints): Add sanity check.
18169         * class-internals.h: Add new internal methods.
18170
18171         * reflection.c (verify_safe_for_managed_space): New sanity check.
18172         Currently checks that owner-less generic parameters aren't allowed
18173         in managed space.
18174         (mono_type_get_object): Use it.
18175         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
18176         that are now in mono_type_get_object.
18177         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
18178
18179 2006-02-19  Raja R Harinath  <harinath@gmail.com>
18180
18181         * metadata.c (mono_type_create_from_typespec): Rename from
18182         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
18183         argument and caching of types in the generic container.
18184         (unwrap_arrays, find_generic_param): Remove.
18185         * metadata-internals.h: Update.
18186         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
18187
18188 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
18189
18190         * class.c (mono_class_get_exception_for_failure): Fix a warning.
18191
18192         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
18193         return values. Fixes #77581.
18194
18195         * class.c (mono_fnptr_class_get): Switch name and name_space.
18196
18197         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
18198         classes and add support for [In, Out] attributes.
18199         (mono_marshal_free_asany): Ditto. Fixes #77524.
18200
18201 2006-02-18  Raja R Harinath  <harinath@gmail.com>
18202
18203         * class.c (mono_class_from_generic_parameter): Make more robust to
18204         incomplete MonoGenericContainers from monodis.
18205
18206 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18207
18208         * class-internals.h: added some more exception types.
18209         * class.c, metadata.c: added a few checks to handle missing
18210         types.
18211
18212 2006-02-17  Raja R Harinath  <rharinath@novell.com>
18213
18214         Use owner-less generic-params some more.
18215         * class.c (my_mono_class_from_generic_parameter): Remove.
18216         (mono_class_from_generic_parameter): Handle null image,
18217         param->name and param->owner.
18218         (mono_class_from_mono_type): Update.
18219         (mono_class_create_from_typespec): Remove 'container' parameter.
18220         If that parameter is non-null, the result is always inflated by
18221         'mono_class_get_full' anyway.
18222         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
18223         parameter.
18224         (mono_class_get_full): Update.
18225
18226         * class.c (inflate_generic_type) [GENERICINST]: If the generic
18227         instance is not open, don't bother inflating.
18228         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
18229         parse metadata for inflated classes.
18230         (_mono_class_get): Change GenericContext* parameter to
18231         GenericContainer*.
18232         (mono_class_create_from_typespec): Likewise.  Simplify, and
18233         implement trivially.  All the cases are handled in
18234         mono_class_from_mono_type.  Don't inflate returned class.
18235         (mono_class_get_full): Delegate GENERICINST optimization to
18236         inflate_generic_type.
18237         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
18238
18239 2006-02-16  Dick Porter  <dick@ximian.com>
18240
18241         * socket-io.c (create_object_from_sockaddr): Fix typo.
18242         (create_sockaddr_from_object): Check array lengths before
18243         potentially accessing items off the end.
18244         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
18245         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
18246         (ves_icall_System_Net_Sockets_Socket_Send_internal)
18247         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
18248         length checks to avoid wraparound overflows.
18249         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
18250         contents of the array of sockets
18251         (hostent_to_IPHostEntry2)
18252         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
18253         Check return value of inet_ntop ().
18254         (addrinfo_to_IPHostEntry): Fix typo
18255
18256 2006-02-16  Raja R Harinath  <rharinath@novell.com>
18257
18258         Type metadata parsing doesn't use generic-instantiation information.
18259         * metadata.c (mono_metadata_parse_array_full): Change
18260         MonoGenericContext* parameter to MonoGenericContainer*.
18261         (mono_metadata_parse_type_full): Likewise.
18262         (mono_type_create_from_typespec_full): Likewise.
18263         (mono_metadata_parse_mh_full): Likewise.
18264         (mono_metadata_parse_generic_inst): Likewise.
18265         (do_mono_metadata_parse_generic_class): Likewise.
18266         (do_mono_metadata_parse_type): Likewise.
18267         * metadata-internals.h: Update to changes.
18268         * class.c (mono_class_find_enum_basetype): Likewise.
18269         (mono_class_setup_fields): Likewise.
18270         (mono_class_create_from_typespec): Likewise.
18271         * loader.c (method_from_methodspec): Likewise.
18272         (mono_get_method_from_token): Likewise.
18273         (mono_method_get_header): Likewise.
18274
18275 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
18276
18277         * marshal.c: handle additional GENERICINST case (patch from
18278         Thong Nguyen <tum@veridicus.com>).
18279         Fix a few cases where LDIND_I/STIND_I was used for references.
18280
18281 2006-02-16  Raja R Harinath  <rharinath@novell.com>
18282
18283         * reflection.c (mono_reflection_get_token): Remove unused variable.
18284
18285 2006-02-16  Martin Baulig  <martin@ximian.com>
18286
18287         * reflection.c (mono_reflection_get_token): Add support for fields
18288         in instantiated generic types.
18289
18290         * icall.c
18291         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
18292
18293 2006-02-15  Martin Baulig  <martin@ximian.com>
18294
18295         * icall.c
18296         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
18297         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
18298         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
18299         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
18300
18301 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
18302
18303         * class.c, metadata.c, metadata.h, object.c, icall.c,
18304         marshal.c: changed mono_type_get_underlying_type () to do
18305         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
18306         Fixed handling of instantiated generic valuetypes (bug #75479).
18307
18308 2006-02-15  Raja R Harinath  <rharinath@novell.com>
18309
18310         * metadata.c (mono_metadata_decode_signed_value): Simplify.
18311         Delegate to mono_metadata_decode_value, and work on the returned value.
18312
18313         * icall.c (ves_icall_MonoType_GetGenericArguments):
18314         Add consistency check here too.
18315         
18316 2006-02-15  Ankit Jain  <jankit@novell.com>
18317
18318         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
18319         char/short etc.
18320
18321 2006-02-15  Ankit Jain  <jankit@novell.com>
18322
18323         * metadata.c (mono_metadata_decode_signed_value): New function to decode
18324         signed values, used only for representing lower bounds of arrays.
18325         (mono_metadata_parse_array_full): Use new
18326         mono_metadata_decode_signed_value to decode lower bounds.
18327
18328 2006-02-14  Martin Baulig  <martin@ximian.com>
18329
18330         * reflection.c
18331         (mono_reflection_get_token): Support "MonoGenericMethod" and
18332         "MonoGenericCMethod" and allow generic instances / methods.
18333
18334 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
18335
18336         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
18337         to obtain the terminal size using an ioctl.
18338
18339         * object.c (mono_nullable_init): Revert this as nullable reference
18340         types are not valid.
18341         (mono_nullable_box): Ditto.
18342
18343 2006-02-09  Dick Porter  <dick@ximian.com>
18344
18345         * threads.c (mono_thread_detach): Drop a reference to the thread
18346         we're detaching.
18347
18348 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18349
18350         * object.c (mono_nullable_init): Handle nullable reference types.
18351         (mono_nullable_box): Ditto. Fixes #77446.
18352
18353 2006-02-07  Martin Baulig  <martin@ximian.com>
18354
18355         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
18356
18357 2006-02-07  Ankit Jain  <jankit@novell.com>
18358
18359         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
18360         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
18361         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
18362         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
18363         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
18364         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
18365
18366 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
18367
18368         * class.c (mono_class_create_generic): Set type_token as well.
18369
18370         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
18371         compatible with MS.
18372
18373 2006-02-02  Martin Baulig  <martin@ximian.com>
18374
18375         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
18376         has never been used so far.
18377
18378 2006-02-02  Martin Baulig  <martin@ximian.com>
18379
18380         * mono-debug-debugger.h: Changed comment at the top of this file;
18381         the header is not installed, but it's safe to #include it from
18382         within the JIT.
18383
18384         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
18385         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
18386
18387 2006-02-02  Martin Baulig  <martin@ximian.com>
18388
18389         * mono-debug.h
18390         (MonoSymbolTable): Removed the `metadata_info' field.
18391
18392         * mono-debug.c
18393         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
18394
18395         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
18396         (mono_debugger_add_builtin_types): Removed.
18397         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
18398         (mono_debugger_create_notification_function): We now operate on a
18399         pre-allocated area; take a `gpointer' and return `void'.
18400
18401         * mono-debug-debugger.c
18402         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
18403         (mono_debugger_add_builtin_types): Removed.
18404
18405 2006-02-02  Martin Baulig  <martin@ximian.com>
18406
18407         * threads.c (mono_debugger_create_all_threads): New public method.
18408
18409 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
18410
18411         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
18412         breaks on several platforms.
18413
18414 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
18415
18416         * assembly.c: the VS.NET build doesn't supply default values for
18417         MONO_ASSEMBLIES and MONO_CFG_DIR.
18418
18419 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18420
18421         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
18422         helper function.
18423
18424         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
18425
18426         * loader.c (method_from_memberref): Fix a warning.
18427
18428         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
18429
18430         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
18431         with explicit layout. Fixes #77433.
18432
18433 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18434
18435         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
18436         max_interface_id is initialized before using it. Fixes #77398.
18437         (ves_icall_Type_GetInterfaces): Ditto.
18438
18439 2006-01-30  Raja R Harinath  <rharinath@novell.com>
18440
18441         * metadata.c (mono_metadata_parse_method_signature_full): Don't
18442         allocate memory for parameter attributes when parsing memberref
18443         signatures.
18444         * loader.c (mono_loader_set_error_method_load): Don't warn.
18445         (method_from_memberref): Ensure MissingMethodException gets thrown
18446         if method is not found.  Make warning more informative.
18447
18448 2006-01-29  Raja R Harinath  <harinath@gmail.com>
18449
18450         Fix #77397
18451         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
18452         return true if is byref.
18453         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
18454         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
18455         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
18456
18457 2006-01-27  Raja R Harinath  <rharinath@novell.com>
18458
18459         Fix tests/find-method.2.il
18460         * loader.c (find_method, find_method_in_class): Remove is_inflated
18461         argument.  Revert 2006-01-18 change.
18462         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
18463         is generic, search for method in its generic definition.
18464         * class.c (mono_class_setup_vtable_general): Print generic
18465         arguments of generic types in debugging printf.
18466
18467 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18468
18469         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
18470
18471         * threads.c (mono_threads_request_thread_dump): New helper function.
18472
18473 2006-01-25  Raja R Harinath  <rharinath@novell.com>
18474
18475         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
18476
18477 2006-01-25  Ankit Jain  <jankit@novell.com>
18478
18479         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
18480         move definition to ..
18481         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
18482         
18483 2006-01-25  Ankit Jain  <jankit@novell.com>
18484             Raja R Harinath  <rharinath@novell.com>
18485
18486         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
18487         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
18488         as necessary.
18489
18490 2006-01-25  Martin Baulig  <martin@ximian.com>
18491
18492         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
18493         `MonoDebuggerThread' into debug-debugger.c.
18494
18495 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18496
18497         * profiler.c: fix printing of data.
18498
18499 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
18500
18501         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
18502           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
18503
18504 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
18505
18506         * object.c: fix deadlock related to string interning.
18507
18508 2006-01-23  Martin Baulig  <martin@ximian.com>
18509
18510         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
18511
18512         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
18513
18514 2006-01-23  Martin Baulig  <martin@ximian.com>
18515
18516         * mono-debug.h: Moved the prototypes of some functions which are
18517         used by the JIT here from mono-debug-debugger.h.
18518
18519 2006-01-21  Martin Baulig  <martin@ximian.com>
18520
18521         * Makefile.am: Don't install mono-debug-debugger.h.
18522
18523 2006-01-21  Martin Baulig  <martin@ximian.com>
18524
18525         * mono-debug-debugger.h: Enforce the private status of this header
18526         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
18527         Moved some stuff from mono-debugger-jit-wrapper.h here.
18528
18529 2006-01-20  Raja R Harinath  <rharinath@novell.com>
18530
18531         * class.c (mono_class_from_typeref): Add a sanity test to help
18532         catch lack of assembly load/search hooks.
18533
18534 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
18535
18536         * marshal.c (emit_struct_conv): Relax the fields with same offset
18537         check even more. Fixes #77230.
18538
18539 2006-01-18  Martin Baulig  <martin@ximian.com>
18540
18541         * loader.c (find_method_in_class): Added `gboolean is_inflated'
18542         argument; if false, we compare the uninstantiated signatures.
18543         (method_from_memberref): Compare the uninstantiated signatures;
18544         fixes #76417.
18545
18546 2006-01-18  Robert Jordan  <robertj@gmx.net>
18547
18548         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
18549         Clear the weak link. Fixes bug #77170.
18550
18551         * gc.c (mono_gchandle_free):
18552         Reflect *-gc.c changes (tiny optimization).
18553
18554 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
18555
18556         * metadata.c (mono_metadata_signature_dup): Applied patch from
18557         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
18558         Fixes #77288.
18559
18560 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18561
18562         * marshal.c (emit_struct_conv): Allow fields with the same offset when
18563         marshalling from native to managed code. Fixes #77230.
18564
18565 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18566
18567         * threadpool.c: fix problem (Mac only) when more than one asynchronous
18568         connect. Fixes bug #77020.
18569
18570 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
18571
18572         * class.c: fixed id assignement for nested interfaces (bug #77275).
18573         Added also better info for --print-vtable debugging.
18574
18575 2006-01-12  Martin Baulig  <martin@ximian.com>
18576
18577         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
18578         interfaces on-the-fly; fixes #76625.
18579
18580         * class-internals.h
18581         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
18582         don't need that anymore.
18583
18584 2006-01-12  Miguel de Icaza  <miguel@novell.com>
18585
18586         * socket-io.c
18587         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
18588         To avoid initing the nested_classes when not needed I turned the
18589         PeerCredData as a toplevel internal class, as it has to be shared
18590         anyways. 
18591
18592         Fixes the CASA issue.
18593
18594 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18595
18596         * domain.c: Accessors for MonoJitInfo
18597
18598         * profiler-private.h: Add jitinfo to the end jit hook
18599
18600         * profiler.[ch]: Define new hooks, called after jitting which give
18601         the MonoJitInfo that was compiled
18602
18603 2006-01-10  Martin Baulig  <martin@ximian.com>
18604
18605         * class.c (mono_class_setup_events): Add support for generic
18606         classes; fixes #76440.
18607
18608 2006-01-06  Raja R Harinath  <rharinath@novell.com>
18609
18610         Fix #77160.
18611         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
18612         on passed-in method.
18613
18614 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18615
18616         * object.c (mono_runtime_invoke_array): Add Nullable support.
18617
18618         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
18619
18620 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
18621
18622         * file-io.c: Don't consider sockets as directory and avoid an endless
18623         loop. Fix bug #76966.
18624
18625 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18626
18627         * object.c (mono_nullable_init): New helper function.
18628         (mono_nullable_box): Ditto.
18629
18630         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
18631
18632         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
18633
18634         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
18635         
18636 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
18637
18638         * class.c (mono_class_is_assignable_from): Make T assignable to 
18639         Nullable<T>.
18640
18641 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
18642
18643         * appdomain.c: Bump corlib version to 46.
18644         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
18645         serialization purpose) and changed ves_icall_System_Reflection_
18646         Assembly_get_code_base signature to accept a boolean (to escape, or 
18647         not, the assembly code base).
18648
18649 2005-12-23  Dick Porter  <dick@ximian.com>
18650
18651         * icall.c: 
18652         * threads-types.h: 
18653         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
18654         CreateEvent icall now returns "created" boolean parameter.
18655
18656 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18657
18658         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
18659         #76967.
18660
18661         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
18662         when attr_klass is an interface. Fixes #77045.
18663
18664 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
18665
18666         * marshal.c (emit_struct_conv): Fix previous patch.
18667         
18668         * marshal.c (emit_struct_conv): Add a check for fields with the same
18669         offset.
18670
18671 2005-12-20  Raja R Harinath  <rharinath@novell.com>
18672
18673         Fix regression in Mono.C5.
18674         * class.c (mono_class_create_generic): If 'klass' is an interface
18675         set up the interface offsets.
18676         (mono_class_is_assignable_from): Don't throw away generic arguments.
18677
18678 2005-12-19  Raja R Harinath  <rharinath@novell.com>
18679
18680         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
18681         type parameters.
18682
18683 2005-12-15  Raja R Harinath  <rharinath@novell.com>
18684
18685         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
18686         dead store.
18687         (do_mono_metadata_parse_generic_class): Don't pass the current
18688         generic context when parsing the type being instantiated: it
18689         cannot use it, anyway.
18690
18691         * loader.c (method_from_memberref): Don't inflate a signature if
18692         it doesn't contain any type parameters.
18693
18694 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18695
18696         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
18697
18698 2005-12-14  Martin Baulig  <martin@ximian.com>
18699
18700         * class.c
18701         (mono_type_get_name_recurse): Don't return null for type
18702         parameters and open generic classes.
18703         (mono_class_setup_methods): Don't exclude generic instances.
18704         (mono_get_unique_iid): Use different IDs for different
18705         instantiations of the same generic type.
18706         (mono_class_setup_vtable): Only use setup_generic_vtable() for
18707         open generic instances; create a normal vtable for closed generic
18708         instances.
18709         (mono_class_setup_vtable_general): We're now also called for
18710         closed generic instances.
18711
18712         * reflection.c
18713         (mono_reflection_bind_generic_parameters): Correctly use
18714         mono_metadata_lookup_generic_inst() everywhere.
18715
18716 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
18717
18718         * object.c (mono_class_create_runtime_vtable): Call 
18719         mono_class_setup_vtable ().
18720
18721         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
18722         function.
18723         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
18724         #76959.
18725
18726         * loader.c (mono_loader_set_error_type_load): Print the type load
18727         warnings to the console so they are more visible to the user.
18728         (mono_loader_set_error_method_load): Ditto.
18729
18730         * reflection.c (ensure_runtime_vtable): Revert the last change as it
18731         is still broken.
18732         
18733         * reflection.c (ensure_runtime_vtable): Fix build.
18734
18735         * reflection.c (ensure_runtime_vtable): Disable an optimization which
18736         doesn't work in all cases.
18737
18738 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
18739
18740         * object.c (mono_array_new_full): Treat a single dimensional array
18741         with 0 lower bounds as an szarray. Fixes #76973.
18742
18743         * reflection.c (custom_attr_visible): Really fix this.
18744
18745 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
18746
18747         * reflection.c (custom_attr_visible): Allow nested public attributes
18748         as well.
18749
18750         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
18751         interface check.
18752
18753 2005-12-12  Raja R Harinath  <harinath@gmail.com>
18754
18755         * class.c (set_generic_param_owner): Delete.
18756         (mono_class_create_from_typedef): Don't set ->owner field of
18757         generic parameters to "param containers" of enclosing classes.
18758         * reflection.c (mono_reflection_initialize_generic_parameter):
18759         Likewise.
18760
18761 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
18762
18763         * reflection.c (custom_attr_visible): Fix build.
18764
18765 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
18766
18767         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
18768         private attributes.
18769         
18770         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
18771         handling of null parameter defaults.
18772
18773 2005-12-09  Raja R Harinath  <rharinath@novell.com>
18774
18775         * class.c (mono_class_from_generic_parameter): Don't set
18776         klass->generic_container.
18777         (my_mono_class_from_generic_parameter): Likewise.
18778
18779 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18780
18781         * reflection.c (load_public_key): Fix a warning.
18782         (method_encode_code): Fix unaligned accesses.
18783
18784 2005-12-07  Martin Baulig  <martin@ximian.com>
18785
18786         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
18787
18788         * reflection.c
18789         (write_generic_param_entry): Encode our custom attrs.
18790
18791         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
18792
18793 2005-12-07  Martin Baulig  <martin@ximian.com>
18794
18795         * reflection.c (encode_new_constraint): Removed; we don't use the
18796         `NewConstraintAttribute' anymore.
18797
18798 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18799
18800         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
18801         not fire a TypeResolve event when Assembly.GetType () is called.
18802
18803 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18804
18805         Beginning of support for nullable types in the runtime. Parts of
18806         this patch are from Martin.
18807
18808         * appdomain.c (MONO_CORLIB_VERSION): Bump
18809
18810         * domain.c (mono_init_internal): get the nullable type
18811
18812         * class.c (mono_class_is_nullable): New method
18813         (mono_class_get_nullable_param): New mehod
18814         (mono_class_create_generic): In types T? set cast_class to T
18815
18816         * class-internals.h (MonoDefaults): new nullable default class
18817         (mono_class_get_nullable_param, mono_class_get_nullable_param):
18818         new methods.
18819
18820 2005-12-05  Raja R Harinath  <rharinath@novell.com>
18821
18822         * metadata.c (select_container): New.  Refactor code to select the
18823         appropriate GenericContainer given the type of generic parameter
18824         we are looking for.
18825         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
18826         not a MonoGenericContext.  Use select_container.  Update parameters.
18827         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
18828         and MONO_TYPE_MVAR.
18829         (unwrap_arrays): Remove duplicate tests.
18830         (find_generic_param): Rename from 'has_same_context'.  Now walks a
18831         generic instantiated class to find any arguments that are generic
18832         parameters.
18833         (mono_type_create_from_typespec_full): Use find_generic_param to
18834         avoid evicting some generic instantiations from the typespec
18835         cache.
18836
18837 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
18838
18839         * reflection.c: fixed writing of doubles on ARM FPA.
18840
18841 2005-12-02  Robert Jordan  <robertj@gmx.net>
18842
18843         * icall.c: Fixed EventInfo.ReflectedType (#76829).
18844
18845 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18846
18847         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
18848         least on SUSE 10 they are not the same (on debian, they are just the
18849         same thing).
18850
18851 2005-12-01  Raja R Harinath  <rharinath@novell.com>
18852
18853         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
18854         DeclaringType for VARs and MVARs.
18855         * class.c (set_generic_param_owner): Fix initialization of owner
18856         fields.
18857
18858 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18859
18860         * icall.c: fixed Enum.ToObject() to correctly convert the values.
18861
18862 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18863
18864         * threadpool.c: workaround for a bug that shows up on the Mac:
18865         select()+connect() on a blocking socket is not like it should
18866         be, so we proceed to connect() in that case, wasting the I/O
18867         threadpool thread until connect succeedes. Fixes bug #75436.
18868
18869 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18870
18871         * threadpool.c: fix typo when setting file descriptor states.
18872
18873 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18874
18875         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
18876         * metadata.c (mono_metadata_parse_method_signature_full): Don't
18877         create a temporary signature container.
18878         (mono_metadata_parse_generic_param): Update to changes.
18879         (mono_type_create_from_typespec_full): Update to changes.
18880         * loader.c (method_from_memberref): Don't use a
18881         MonoGenericContainer while parsing a memberref signature.
18882         (method_from_methodspec): Remove dead-store of the 'container'
18883         variable.  It's overwritten before use.
18884
18885         * metadata.c (mono_type_create_from_typespec_full): Make debugging
18886         checks tighter.
18887         (mono_metadata_parse_generic_param): Likewise.
18888         * loader.c (find_method_in_class): Does not need a
18889         MonoGenericContainer.  Use 'mono_method_signature' rather than
18890         'mono_method_signature_full'.
18891         (find_method, mono_get_method_constrained, method_from_memberref):
18892         Update to changes.
18893
18894         * metadata.c (mono_type_create_from_typespec_full): Ensure that
18895         owner-less generic-parameters are never evicted from the typespec
18896         cache.
18897
18898         * loader.c (method_from_memberref): Don't use the current context
18899         when parsing signatures.
18900         (method_from_methodspec, mono_get_method_from_token): Update to changes.
18901
18902         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
18903         side-effects in g_assert.
18904         * loader.c (mono_get_method_from_token): Resolve klass earlier so
18905         that we don't potentially lose information.
18906
18907 2005-11-26  Dick Porter  <dick@ximian.com>
18908
18909         * icall.c:
18910         * threads.c: icalls to implement basic (ie, not named)
18911         System.Threading.Semaphore.
18912
18913 2005-11-24  Dick Porter  <dick@ximian.com>
18914
18915         * process.c
18916         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
18917         Use GetProcessId() if it's available.
18918
18919 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
18920
18921         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
18922
18923 2005-11-23  Raja R Harinath  <rharinath@novell.com>
18924             Ankit Jain  <jankit@novell.com>
18925
18926         * loader.c (mono_get_method_from_token): Initialize 'method' field
18927         of all generic parameters before parsing the signature.  Remove
18928         code that "fixed"-up MVAR references.
18929
18930 2005-11-23  Ankit Jain  <jankit@novell.com>
18931
18932         * metadata.c (mono_metadata_has_generic_params):
18933         (mono_metadata_load_generic_param_constraints):
18934         (mono_metadata_load_generic_params): Move duplicate code ...
18935         (mono_metadata_get_generic_param_row): ... here. Returns the
18936         first row-id in GenericParam table for a given owner (token).
18937         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
18938         prototype.
18939
18940 2005-11-23  Raja R Harinath  <rharinath@novell.com>
18941             Ankit Jain  <jankit@novell.com>
18942
18943         * metadata.c (mono_metadata_class_equal): Pass signature_only when
18944         comparing VARs too.
18945         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
18946         type->data.generic_param only if the type is an MVAR.
18947         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
18948         leak owner-less VARs and MVARs into managed space.
18949
18950 2005-11-21  Martin Baulig  <martin@ximian.com>
18951
18952         * class-internals.h
18953         (MonoMethod): Moved the `generic_container' here from
18954         `MonoMethodNormal' since we now also need it for
18955         `MonoMethodPInvoke';
18956         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
18957         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
18958         an union containing both `MonoMethodNormal' and
18959         `MonoMethodPInvoke'.
18960
18961         * loader.c
18962         (mono_get_method_from_token): Allow implementing generic methods
18963         as interncalls.
18964
18965         * threads.c
18966         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
18967         icall.
18968
18969 2005-11-17  Dick Porter  <dick@ximian.com>
18970
18971         * icall.c: 
18972         * process.h: 
18973         * process.c: Split the Process Start_internal icall into
18974         ShellExecuteEx_internal and CreateProcess_internal, which are
18975         called depending on whether UseShellExecute is true.  Fixes bug
18976         76670.
18977
18978         * appdomain.c (MONO_CORLIB_VERSION): Incremented
18979
18980 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18981
18982         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
18983         'msize' parameters, use the information in 'mspec' instead.
18984         (emit_object_to_ptr_conv): Ditto.
18985
18986         * marshal.c (emit_struct_conv): Handle explicit layout structs with
18987         fields out of order. Fixes #76733.
18988
18989 2005-11-17  Ankit Jain  <jankit@novell.com>
18990
18991         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
18992
18993 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
18994
18995         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
18996           bug #76575.
18997
18998 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
18999
19000         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
19001         for types with non-auto layout. Fixes #76717.
19002
19003 2005-11-16  Ankit Jain  <jankit@novell.com>
19004
19005         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
19006         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
19007         if generic_context is null.
19008           (mono_metadata_generic_param_equal): param->owner can be null.
19009           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
19010         null.
19011
19012 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
19013
19014         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
19015         the correct value.
19016
19017 2005-11-15  Martin Baulig  <martin@ximian.com>
19018
19019         * object.c (set_value): Use mono_class_from_mono_type() instead of
19020         the hack for generic instances; fixes #76136.
19021
19022 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
19023
19024         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
19025         fields.
19026
19027         * image.c (load_metadata_ptrs): Initialize the new fields.
19028
19029         * reflection.c (create_dynamic_mono_image): Ditto.
19030
19031         * reflection.c (build_compressed_metadata): Use the new fields.
19032
19033         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
19034         icall.
19035
19036         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
19037         icall.
19038         
19039 2005-11-15  Ankit Jain  <jankit@novell.com>
19040             Raja R Harinath  <harinath@gmail.com>
19041
19042         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
19043         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
19044         new per-generic_container cache if the cached MonoType's context matches
19045         the current context.
19046           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
19047         to the expected context.
19048           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
19049
19050 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19051
19052         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
19053         we changed the signature of an icall.
19054         * icall.c: Modify to mono_double_ParseImpl return true/false 
19055         depending on the success, instead of throwing the exception. This will
19056         help us in Double.TryParse methods.
19057         
19058 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
19059
19060         * marshal.c (emit_marshal_object): Throw an exception when
19061         marshalling 'object' instead of crashing. Fixes #76696.
19062
19063 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
19064
19065         * class-internals.h: Add prototype for mono_type_get_full_name ().
19066
19067 2005-11-11  Dick Porter  <dick@ximian.com>
19068
19069         * threads.c (mono_thread_manage): Make sure the main thread has
19070         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
19071
19072 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
19073
19074         * loader.c (mono_loader_set_error_type_load): Log a warning to the
19075         console about the missing type.
19076         (mono_loader_set_error_method_load): Ditto.
19077
19078 2005-11-09  Miguel de Icaza  <miguel@novell.com>
19079
19080         * mono-config.c (mono_get_config_dir): Set the system defaults if
19081         none is specified.
19082
19083         * assembly.c (mono_set_dirs): New API entry point to set the
19084         assembly and the config directory in one call
19085
19086 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
19087
19088         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
19089         the ftnptr was created from a delegate in a domain other than the
19090         current domain. Fixes #75377.
19091
19092         * exception.h exception.c: Add mono_get_exception_not_supported ().
19093
19094 2005-11-08  Martin Baulig  <martin@ximian.com>
19095
19096         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
19097
19098 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
19099
19100         * security-manager.h: Added definitions to deal with strongname key 
19101         pairs bigger (and smaller) than 1024 bits.
19102         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
19103         adjust wrt the public key length being used.
19104
19105 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
19106
19107         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
19108           Windows build (r51396-51397).
19109
19110 2005-11-03  Martin Baulig  <martin@ximian.com>
19111
19112         * class.c (mono_class_setup_vtable_general): Also add generic
19113         methods to the vtable; fixes #76581.
19114
19115 2005-11-01  Miguel de Icaza  <miguel@novell.com>
19116
19117         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
19118         sure that we lookup GetString method from the System.Text.Encoding
19119         class, not the derived class or we get an empty method.
19120
19121         Fixed class #76612.
19122
19123 2005-10-25  Miguel de Icaza  <miguel@novell.com>
19124
19125         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
19126         if it has been previously set (embedders). 
19127
19128         Make mono_set_rootdir available also on Unix.
19129
19130 005-10-24  Robert Jordan  <robertj@gmx.net>
19131
19132         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
19133
19134 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
19135
19136         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
19137         only calls which are made to native code use this flag.
19138
19139         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
19140
19141 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
19142
19143         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
19144         Add support for FieldBuilders.
19145
19146 2005-10-29  Martin Baulig  <martin@ximian.com>
19147
19148         * mono-debug.c
19149         (mono_debug_using_mono_debugger): New public method; returns
19150         whether we're running inside the debugger.
19151
19152 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
19153
19154         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
19155         for Method/Constructor/FieldBuilders.
19156
19157 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
19158
19159         * reflection.c (module_add_cattrs): Save custom attributes for global methods
19160         and fields as well.
19161
19162 2005-10-26  Martin Baulig  <martin@ximian.com>
19163
19164         * mono-debug-debugger.c
19165         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
19166
19167 2005-10-24  Raja R Harinath  <harinath@gmail.com>
19168
19169         * icall.c (base64_to_byte_array): Don't pass an out-of-range
19170         integer to isspace.
19171
19172 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
19173
19174         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
19175         when passing valuetypes byref. Fixes #76502.
19176
19177 2005-10-19  Jackson Harper  <jackson@ximian.com>
19178
19179         * profiler.c: Don't put a . in front of types that are not in a
19180         namespace.
19181
19182 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
19183
19184         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
19185
19186 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
19189         #76436.
19190         (mono_marshal_get_ldflda_wrapper): Fix a warning.
19191
19192 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19193
19194         * assembly.c metadata-internals.h icall.c: Define an additional
19195         parameter for mono_assembly_name_parse_full, so we can avoid creating
19196         S.R.AssemblyName.Version when no version info wasn't passed.
19197         
19198 2005-10-09  Miguel de Icaza  <miguel@novell.com>
19199
19200         * class.c (mono_type_get_full_name): Reimplement method that was
19201         removed. 
19202
19203         * image.c: Some docs
19204
19205 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
19206
19207         * profiler.c (output_newobj_profile): Fix printing of Total memory
19208         on x86.
19209
19210 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
19213
19214 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
19215
19216         * threads.c: remove debug output.
19217
19218 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
19219
19220         * threads.c (mono_thread_manage): Fix crashes if more than 64
19221         threads need to be aborted. Hopefully fixes #75899.
19222
19223         * assembly.c (mono_stringify_assembly_name): New helper function.
19224
19225         * class.c: Use mono_stringify_assembly_name instead of the similar
19226         static function.
19227
19228         * assembly.h assembly.c: Add support for calling a postload search 
19229         hook if an assembly cannot be loaded.
19230
19231         * appdomain.c: Register new search hooks which call the AssemblyResolve
19232         events in AppDomain. Fixes #75231
19233
19234 2005-10-07  Martin Baulig  <martin@ximian.com>
19235
19236         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
19237         methods without debug info.
19238
19239 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
19240
19241         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
19242         wrappers.
19243
19244 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19245
19246         * file-io.c: now that we return symlinks, use lstat and, when the file
19247         is a symbolic link, stat, to get the file attributes. Also avoid the
19248         conversion to/from utf16/external.
19249
19250 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
19251
19252         * class.c (mono_class_layout_fields): Compute klass->has_references
19253         correctly if an embedded valuetype is not yet initialized. Fixes
19254         #76331.
19255
19256 2005-10-04  Martin Baulig  <martin@ximian.com>
19257
19258         * metadata.c
19259         (mono_metadata_load_generic_param_constraints): New public
19260         function; splitted the constraints loading out from
19261         mono_metadata_load_generic_params().
19262
19263         * class.c (mono_class_create_from_typedef): Call
19264         mono_metadata_load_generic_param_constraints() after setting up
19265         the type and creating our parent; fixes #75329.
19266
19267 2005-10-04  Martin Baulig  <martin@ximian.com>
19268
19269         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
19270         non-dynamic parent classes.
19271
19272 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
19273
19274         * file-io.c : win32 build fix (ETXTBSY seems not found).
19275
19276 2005-10-04  Martin Baulig  <martin@ximian.com>
19277
19278         * reflection.c
19279         (mono_image_get_methodspec_token): Make the cache actually work;
19280         fixes #75974.
19281
19282 2005-10-04  Martin Baulig  <martin@ximian.com>
19283
19284         * class.c (mono_class_name_from_token): Removed the unneccessary
19285         `MonoGenericContext *' argument.
19286
19287 2005-10-04  Martin Baulig  <martin@ximian.com>
19288
19289         * loader.c
19290         (method_from_methodspec): Make the caching work again; fixes the
19291         performance regression from #76262.
19292
19293 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19294
19295         * file-io.c:
19296         * file-io.h:
19297         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
19298         GetFileSystemEntries that performs the same work but without going
19299         into io-layer, locking, etc.
19300
19301 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
19302
19303         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
19304         ThreadState_Stopped as well. Fixes #76047.
19305
19306 2005-09-29  Martin Baulig  <martin@ximian.com>
19307
19308         * class.c
19309         (inflate_generic_context): If the new context has a `gmethod', set
19310         its `container' that that gmethod's `container'.
19311
19312         * metadata.c
19313         (mono_metadata_parse_generic_param): Simplify things;
19314         `generic_container = generic_context->container;' is just fine.
19315
19316         * loader.c (method_from_methodspec): Code cleanups.
19317
19318 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19319
19320         * decimal.c: fix warning (and let gcc generate correct
19321         code on ARM with optimizations).
19322
19323 2005-09-28  Martin Baulig  <martin@ximian.com>
19324
19325         * loader.c
19326         (method_from_memberref): Added `MonoGenericContext *class_context'
19327         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
19328         (method_from_methodspec): If we're a memberref, use the enclosing
19329         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
19330
19331 2005-09-28  Martin Baulig  <martin@ximian.com>
19332
19333         * object.c (mono_runtime_invoke_array): Added support for
19334         MONO_TYPE_GENERICINST; fixes #75917.
19335
19336 2005-09-27  Martin Baulig  <martin@ximian.com>
19337
19338         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
19339         `k->byval_arg.type' to determine the actual type.
19340
19341         * loader.c (method_from_methodspec): Removed some hacks.
19342
19343 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
19344
19345         * class-internals.h (mono_field_is_deleted): Do the test for
19346         rtspecialname before we check the actual name of the field. This
19347         prevents us from dereferencing a pointer into the string table,
19348         saving us from accessing a few pages
19349
19350         * *.c: Replace the use of {Enter,Leave}CriticalSection with
19351         macros. This will allow a deadlock debugger to easily be plugged
19352         in.
19353
19354 2005-09-27  Martin Baulig  <martin@ximian.com>
19355
19356         * loader.c (method_from_methodspec): Create a "signature"
19357         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
19358
19359 2005-09-27  Martin Baulig  <martin@ximian.com>
19360
19361         * class.c
19362         (inflate_generic_class): Correctly set the new context's
19363         container.
19364
19365         * loader.c
19366         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
19367         instead of a `MonoGenericContext *'.
19368         (mono_method_signature_full): Take a `MonoGenericContainer *'
19369         instead of a `MonoGenericContext *'.
19370
19371         * metadata.c
19372         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
19373         instead of a `MonoGenericContext *'.
19374         (mono_metadata_parse_method_signature_full): Likewise.
19375
19376 2005-09-26  Martin Baulig  <martin@ximian.com>
19377
19378         * class.c
19379         (mono_class_from_generic_parameter): Set `klass->generic_container'
19380         (mono_class_from_generic_parameter): Likewise.
19381         (mono_bounded_array_class_get): We inherit the generic container
19382         from the element class.
19383
19384         * loader.c
19385         (find_method, find_method_in_class): Take a `MonoGenericContext *'
19386         argument rather than computing it here.
19387         (method_from_memberref): Correctly set the generic context before
19388         parsing the signature.  Fixes #75681.
19389
19390 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
19391
19392         * object.c (mono_class_has_special_static_fields): Fix warnings.
19393
19394 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19395
19396         * assembly.c: Add parse_public_key function, to
19397         par the public keys. Also added mono_assembly_name_parse_full,
19398         to define it the parsed key should be freed or not.
19399         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
19400         to parse a long format assembly name.
19401         * metadata-internals.h: Keep mono_assembly_name_parse_full as
19402         private, since calling it to preserve the key requires
19403         freeing it manually.
19404         
19405 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
19406
19407         * locales.c : removed HAVE_ICU part.
19408
19409 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
19410
19411         * object.c (mono_class_create_runtime_vtable): Avoid calling 
19412         field_is_special_static if the klass has no special static fields.
19413
19414         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
19415         (MonoCachedClassInfo): Likewise.
19416
19417         * object.c (mono_class_has_special_static_fields): New helper function.
19418
19419 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19420
19421         * class.c (mono_class_create_from_typedef): Don't call 
19422         interfaces_from_typedef_full for enums.
19423         (mono_class_create_from_typedef): Compute the base types of enums directly
19424         without calling mono_class_setup_fields ().
19425         (mono_class_find_enum_basetype): New helper function.
19426
19427         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
19428         one place inside the string heap.
19429         
19430 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
19431
19432         * class.c: locking fixes, code cleanups, some docs added.
19433         Allocate some data structures in the image mempool.
19434
19435 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19436
19437         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
19438         the example code.
19439         
19440 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
19441
19442         * class-internals.h, class.c, reflection.c: reduce memory taken by
19443         MonoClass.
19444
19445 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
19446
19447         * metadata.c, metadata.h, loader.h: documentation updates, code and
19448         API cleanups.
19449
19450 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
19451
19452         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
19453         the example code.
19454
19455         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
19456         page faults caused by the runtime while reading metadata.
19457
19458 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19459
19460         * socket-io.c: the field names were changed 3 months ago and no one
19461         realized until bug #76077 got filed!
19462
19463 2005-09-20  Martin Baulig  <martin@ximian.com>
19464
19465         * icall.c (assembly_icalls): Removed some unused debugger icalls.
19466
19467 2005-09-20  Martin Baulig  <martin@ximian.com>
19468
19469         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
19470         write the rank into the class entry.
19471
19472 2005-09-20  Martin Baulig  <martin@ximian.com>
19473
19474         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
19475
19476 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
19477
19478         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19479
19480         * icall.c (custom_attrs_defined_internal): New icall.
19481
19482         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
19483         function.
19484         (mono_custom_attrs_construct_by_type): New helper function.
19485
19486 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
19487
19488         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
19489         terminate the resulting string. Fixes #76123.
19490
19491 2005-09-16  Martin Baulig  <martin@ximian.com>
19492
19493         * mono-debug.c
19494         (mono_debug_add_method): Ignore inflated methods for the moment.
19495
19496 2005-09-14  Martin Baulig  <martin@ximian.com>
19497
19498         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
19499
19500 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
19501
19502         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
19503         return a success/failure indication.
19504         (mono_metadata_interfaces_from_typedef_full): Ditto.
19505         (get_constraints): Ditto.
19506
19507 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
19508
19509         * marshal.c (emit_marshal_array): Fix handling of null arrays.
19510         
19511         * marshal.c (emit_marshal_array): Add support for returning string
19512         arrays from delegates. Fixes #76063.
19513
19514         * marshal.c: Use the emit_ldloc/stloc macros where possible.
19515
19516 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
19517
19518         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
19519         icall.
19520
19521 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
19522
19523         * reflection.c icall.c: Fix after mono_get_exception_type_load
19524         signature change.
19525
19526         * assembly.c (mono_assembly_get_assemblyref): New helper function.
19527         (mono_assembly_load_reference): Use the new helper.
19528
19529         * class-internals.h (MonoLoaderError): New structure containing 
19530         information about type loading errors.
19531
19532         * class-internals.h loader.c: Add APIs to store per-thread loader
19533         error information.
19534
19535         * loader.c class.c: Set the loader error if needed.
19536
19537         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
19538
19539 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
19540
19541         * decimal.c: fixed to handle the broken ARM fp format.
19542
19543 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
19544
19545         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
19546         broken.
19547
19548 2005-09-06  Martin Baulig  <martin@ximian.com>
19549
19550         * domain.c (supported_runtimes): Added v2.0.50727.
19551
19552 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
19553
19554         * culture-info.h: reduce the size of some structures.
19555
19556 2005-09-05  Martin Baulig  <martin@ximian.com>
19557
19558         Reflect latest API changes in the August CTP.
19559
19560         * icall.c
19561         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
19562         ("MonoType.HasGenericArguments"): Removed.
19563         ("MonoMethod.BindGenericParameters"): Renamed to
19564         "MakeGenericMethod".
19565         ("MethodBuilder.BindGenericParameters"): Renamed to
19566         "MakeGenericMethod".    
19567
19568 2005-09-05  Martin Baulig  <martin@ximian.com>
19569
19570         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
19571
19572 2005-09-05  Martin Baulig  <martin@ximian.com>
19573
19574         Applying a patch from Michal Moskal <malekith@nemerle.org>.
19575
19576         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
19577         generic_container is non-NULL.
19578
19579 2005-09-05  Martin Baulig  <martin@ximian.com>
19580
19581         Applying a patch from Michal Moskal <malekith@nemerle.org>.
19582
19583         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
19584
19585 2005-08-29  Michal Moskal  <malekith@nemerle.org>
19586
19587         * reflection.c (encode_locals,
19588         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
19589         for large generic types.
19590
19591 2005-09-05  Martin Baulig  <martin@ximian.com>
19592
19593         Applying a patch from Michal Moskal <malekith@nemerle.org>.
19594
19595         * class.c (mono_dup_array_type): New public method.
19596         (mono_metadata_signature_deep_dup): New public method.
19597         (dup_type): Correctly duplicate array and function types.
19598
19599 2005-09-05  Martin Baulig  <martin@ximian.com>
19600
19601         Applying a patch from Michal Moskal <malekith@nemerle.org>.
19602
19603         * reflection.c (get_default_param_value_blobs): Handle generic types
19604         and generic methods.
19605
19606 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
19607
19608         * class.c: Fixed error reporting (method/class were inversed) for 
19609         inheritance demands.
19610         * security-manager.c|h: Added the AppDomain when calling the managed
19611         System.Security.SecurityManager.InheritanceDemand method.
19612
19613 2005-09-01  Raja R Harinath  <rharinath@novell.com>
19614
19615         * reflection.c (encode_marshal_blob): 'marshaltype' and
19616         'marshaltyperef' are alternate sources for the custom marshaler
19617         name.
19618
19619 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
19620
19621         * class.c: fix creation of array classes with rank == 1
19622         (patch by Ankit Jain <jankit@novell.com>).
19623
19624 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
19625
19626         * object.c: fix check for creating the bound data for arrays vs
19627         szarrays.
19628
19629 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19630
19631         * object.c: configuration file name is now based on the executable name,
19632         not the image name. Fixes bug #75931.
19633
19634 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19635
19636         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
19637         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
19638
19639 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19640
19641         * rand.c: Use wincrypt.h instead of WinCrypt.h.
19642
19643 2005-08-24  Ankit Jain  <jankit@novell.com>
19644             Raja R Harinath  <rharinath@novell.com>
19645
19646         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
19647           called by it recursively.
19648           (mono_class_init): Remove special case in pending_init handling, since it's
19649           superseded by the fix to mono_class_from_typeref.
19650
19651 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
19654         BROKEN_THREAD_START stuff.
19655
19656 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19657
19658         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
19659         trampoline.
19660
19661         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
19662         
19663         * object.c (mono_delegate_ctor): Replace the original function address with
19664         a delegate trampoline.
19665
19666 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
19667
19668         * icall.c: add boolean argument to base64_to_byte_array and 
19669         InternalFromBase64String to control whether a whitespace-only string
19670         is allowed (or should casue a FormatException to be thrown). We need
19671         this as the behavior has changed between MS.NET 1.x and 2.0, and we
19672         to match the MS behaviour in both profiles.
19673         * appdomain.c: Bump corlib version.
19674
19675 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19676
19677         This patch implements a big portion of publisher policy
19678         support, used to bind assembly versions and redirect
19679         one assembly from version A to version B.
19680
19681         * assembly.c:
19682         New GSList loaded_assembly_bindings, for storing the cached
19683         assembly bindings.
19684         (assembly_binding_maps_name): New static function for checking if a 
19685         assembly binding information maps an assembly name.
19686         (mono_assembly_binding_info_free): New function for freeing
19687         assembly binding information resources.
19688         (get_publisher_policy_info): New static function for retrieving 
19689         assembly binding information from a MonoImage.
19690         (compare_versions): New static function for comparing an assembly
19691         binding information data and the version of an assembly name.
19692         (check_policy_versions): New static function for checking if an
19693         assembly binding info mapping an assembly name is valid for it.
19694         (mono_assembly_load_publisher_policy): New static function for
19695         loading the 'policy.major.minor.MyAssembly' image for an assembly
19696         with an assembly name 'aname'.
19697         (mono_assembly_bind_version): New static function for updating
19698         assembly redirection.
19699         (mono_assembly_apply_binding): New static function for applying
19700         assembly binding.
19701         (search_binding_loaded): New static function for searching 
19702         loaded assembly binding infos in the cache domain.
19703         (mono_assembly_load_full): Don't apply assembly binding for
19704         reflection only assemblies.
19705
19706         * metadata-internals.h: Add MonoAssemblyBindingInfo,
19707         which contains information about assembly binding. Also
19708         declare signature for mono_config_parse_publisher_policy ()
19709         function, used to retrieve pub policy info.
19710         
19711         * mono-config.c:
19712         (publisher_policy_start): New static function used to parse publisher 
19713         policy config files.
19714         (publisher_policy_parser): New static MonoParseHandler containing 
19715         the functions used when parsing config files.
19716         (mono_config_parse_publisher_policy): New function for parsing
19717         publisher policy files.
19718         
19719 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19720
19721         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
19722
19723         * marshal.c (mono_delegate_free_ftnptr): Ditto.
19724
19725         * object.c (mono_get_addr_from_ftnptr): New helper function.
19726
19727         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
19728
19729         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19730
19731 2005-08-19  Dick Porter  <dick@ximian.com>
19732
19733         * threads.c, threads.h, appdomain.c, appdomain.h,
19734         profiler-private.h, monitor.c, object.c, object-internals.h,
19735         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
19736         store the thread ID, so it can hold a 64 bit value if needed.
19737
19738 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * reflection.c (mono_reflection_create_dynamic_method): Store the
19741         handle class into the method references as well so ldtoken works in
19742         dynamic methods.
19743
19744         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
19745         types.
19746
19747 2005-08-19  Ankit Jain <jankit@novell.com>
19748
19749         Fix #75847.
19750         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
19751           here rather than using the method signature of a arbitrary function
19752           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
19753           two arguments.
19754           Hack done with Harinath.
19755
19756 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19757
19758         * threadpool.c: disable printing stack traces when we get a exception
19759         in a threadpool thread. I need to do more testing to figure out which
19760         cases actually print this. Fixes bug #75828.
19761
19762 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19763
19764         * icall.c: there might be ignored whitespace after the last '='. This
19765         fixes length computation and bug #75840.
19766
19767 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * assembly.c (mono_assembly_load_full): Consider .exe extension as
19770         well. Fixes #75809.
19771
19772         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
19773         #75784.
19774         
19775         * reflection.c (create_custom_attr_data): Ditto.
19776
19777 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
19778
19779         * locales.c, culture-info.h : removed RegionLCIDMap.
19780         * culture-info-tables.h : regenerated.
19781
19782 2005-08-16  Martin Baulig  <martin@ximian.com>
19783
19784         * class.c (mono_type_get_name_recurse): Small fix.
19785
19786 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
19787
19788         * locales.c : indentation fixie.
19789
19790 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
19791
19792         * object-internals.h,
19793           locales.h,
19794           locales.c,
19795           culture-info.h,
19796           icall.c : added RegionInfo table support.
19797         * culture-info-table.h : regenerated for region support.
19798
19799 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
19800
19801         * reflection.c (resolve_object): handle all kinds of MonoMethod
19802         including generic ones
19803
19804 2005-08-12  Ankit Jain <jankit@novell.com>
19805
19806         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
19807           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
19808
19809 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
19810
19811         * process.c: Don't close a thread handle when it's NULL. This is a
19812         workaround for bug #75733.
19813
19814 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19815
19816         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
19817
19818 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
19821
19822 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19823
19824         * threadpool.c: if a work item in the thread pool has a callback that
19825         catches a exception, don't propagate it after invoking the callback.
19826         Fixes bug #75336.
19827
19828 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19829
19830         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
19831
19832         * class-internals.h (MonoCachedClassInfo): Add some new fields.
19833
19834         * class.c (mono_class_init): Load field info lazily in the AOT case.    
19835
19836         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
19837
19838 2005-08-03  Ankit Jain  <jankit@novell.com>
19839
19840         Fix #75683.
19841         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
19842           PInvoke calling convention is 0.
19843
19844 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
19845
19846         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
19847         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
19848
19849 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
19850
19851         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
19852         to handle threads not started by the GC (patch by Michael Meeks
19853         <michael.meeks@novell.com>).
19854
19855 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
19856
19857         * reflection.c: Make buffer used in emitting types larger for some
19858         big generic types (patch by Michal Moskal).
19859
19860 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19861
19862         * mono-debug.c: Fix some (not all) alignment problems.
19863
19864 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19865
19866         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
19867         Invoke mono_image_load_from_data_full passing the refonly
19868         parameter.
19869
19870         * assembly.c
19871         (mono_assembly_open_from_bundle): Add the refonly argument, 
19872         in order to pass it to other methods it calls to.
19873         (do_mono_assembly_open): Add the refonly argument, in order 
19874         to pass it to other methods it calls to.
19875         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
19876         the refonly parameter to it.
19877
19878         * image.c: Add loaded_images_refonly_hash and
19879         loaded_images_refonly_guid_hash to cache the reflection
19880         only loaded images.
19881         (mono_images_init): Initialize the hash tables used for
19882         caching the reflection only images.
19883         (load_modules): Invoke mono_image_open_full passing the refonly
19884         parameter to load the modules the correct way.
19885         (build_guid_table): Add the refonly argument, to re-build the 
19886         correct hash table.
19887         (do_mono_image_open): Added the refonly argument, in order to
19888         define it for the loaded image.
19889         (mono_image_loaded_full): New function, which receives an
19890         additional parameter to look for the image in the refonly or
19891         non-refonly section.
19892         (mono_image_loaded): Updated, using mono_image_loaded_full.
19893         (mono_image_loaded_by_guid_full): The same case that happens
19894         with mono_image_loaded_full.
19895         (mono_image_loaded_by_guid): Likewise.
19896         (register_image): Use the ref_only variable inside MonoImage
19897         to decide in which hash table store the current image.
19898         (mono_image_open_from_data_full): Rename
19899         mono_image_open_from_data to mono_image_open_from_data_full,
19900         adding the refonly argument, to define the ref_only variable 
19901         inside MonoImage.
19902         (mono_image_open_from_data): Return 
19903         mono_image_open_from_data_full.
19904         (mono_image_open_full): Rename mono_image_open to
19905         mono_image_open_full, receiving the new refonly argument,
19906         to pass it to inner methods.
19907         (mono_pe_file_open): Update this function, to open
19908         a MonoImage as a non-refonly image.
19909         (mono_image_close): Use the refonly variable inside
19910         MonoImage to remove the image from the correct caches.
19911
19912         * image.h: Add the signatures of mono_image_open_full,
19913         mono_image_open_from_data_full, mono_image_loaded_full,
19914         mono_image_loaded_by_guid_full.
19915
19916         * metadata-internals.h: Add the ref_only field to 
19917         MonoImage.
19918         
19919 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19920
19921         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
19922         Fix the last behavior, which used to load the assemblies and
19923         extract MonoReflectionAssemblyName information, instead of
19924         extract it from the metadata tables. Needed for Reflection
19925         Only assemblies.
19926         
19927 2005-07-29  Martin Baulig  <martin@ximian.com>
19928
19929         * mono-debug-debugger.c
19930         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
19931         not initialized.
19932
19933         * mono-debug.c
19934         (mono_debug_address_from_il_offset): Check whether we have
19935         debugging support before attempting to take the lock.
19936         (mono_debug_source_location_from_address): Likewise.
19937         (mono_debug_source_location_from_il_offset): Likewise.
19938         (mono_debug_il_offset_from_address): Likewise.
19939         (mono_debug_address_from_il_offset): Likewise.
19940
19941 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
19942
19943         * class.c (mono_class_from_name_case): Add support for dynamic images.
19944         Fixes #75650.
19945
19946         * object.c (mono_class_compute_gc_descriptor): Add a workaround
19947         for #75479.
19948
19949 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19950         
19951         * reflection.c (mono_method_get_object): Fix warning.
19952
19953 2005-07-28  Martin Baulig  <martin@ximian.com>
19954
19955         * mono-debug.c
19956         (mono_debug_add_wrapper): Also write the wrapper type.
19957
19958 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
19961         
19962         * class.c (mono_class_init): Avoid reading nested classes if the AOT
19963         data indicates the class has none.
19964
19965 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
19966
19967         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
19968         loader lock with the debugger lock. Prevents deadlocks for beagle.
19969
19970         Beagle can now run on an smp box for a weekend without any
19971         issues. Woohoo!
19972
19973 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
19976         in a module. Fixes #75629.
19977
19978 2005-07-26  Martin Baulig  <martin@ximian.com>
19979
19980         * mono-debug.c (mono_debug_add_wrapper): New static method.
19981         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
19982         interncall or a wrapper.
19983
19984         * mono-debug.h (MonoDebugWrapperData): New public typedef.
19985         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
19986         (MONO_DEBUGGER_VERSION): Bump to 51.
19987
19988         * mono-debug-debugger.c
19989         (mono_debugger_add_type): Removed this empty function.
19990         (mono_debugger_add_method): Likewise.
19991
19992 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19993
19994         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
19995         before accessing method->slot.
19996
19997 2005-07-21  Jb Evain  <jbevain@gmail.com>
19998
19999         * reflection.c (method_encode_clauses/class): Handle filters clauses.
20000         Fixes #75010.
20001
20002 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
20003
20004         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
20005         #75587.
20006
20007 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * image.h image.c: Add mono_image_get_guid () API function.
20010
20011 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
20012
20013         There were issues when multiple threads tried to load
20014         assemblies. A deadlock was created between assemblies_mutex and
20015         mono_domain_assemblies_lock. This fixes the issue by making the
20016         assembly ref counting be lock free. See bug 75586.
20017         
20018         * image.c (mono_image_close): The add ref function here was using
20019         Interlocked operations while the unref was using a mutex and a
20020         --. I don't think this was ever a bug that would be exposed in a
20021         non-pendantic way (ie, by an embedder doing a ref on one thread
20022         and an unref on another), but for the sake of correctness, this is
20023         now Interlocked.
20024
20025         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
20026         (mono_assembly_load_reference): Call mono_assembly_addref rather
20027         than touching the refcount ourselves.
20028         (mono_assembly_close): Use InterlockedDecrement to unref the
20029         assembly. Don't acquire the lock unless it is actually needed.
20030
20031 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
20032
20033         * class.c (mono_class_layout_fields): Fix calculation of has_references
20034         for generic types.
20035
20036 2005-07-12  Martin Baulig  <martin@ximian.com>
20037
20038         Applying a patch from Michal Moskal <malekith@nemerle.org>.
20039
20040         * metadata.c
20041         (mono_type_hash): Provide better hashing for generic instances.
20042         (mono_generic_inst_hash): Improve hashing.
20043         (mono_generic_class_hash): Likewise.
20044
20045         * reflection.c (mymono_metadata_type_hash): Improve hashing for
20046         generic instances.
20047
20048 2005-07-12  Martin Baulig  <martin@ximian.com>
20049
20050         * reflection.c (mono_reflection_create_runtime_class): Remove the
20051         hack for generic type definitions and non-`Run' assemblies.
20052         (mono_reflection_bind_generic_parameters): Also use
20053         `klass->wastypebuilder' to check for TypeBuilders.
20054
20055 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
20056
20057         * class.c (mono_class_layout_fields): Fix calculation of has_references
20058         for generic types.
20059
20060         * class.c (inflate_generic_class): Fix a leak.
20061         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
20062         for generic types.
20063
20064 2005-07-11  Martin Baulig  <martin@ximian.com>
20065
20066         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
20067         on error.
20068
20069 2005-07-11  Martin Baulig  <martin@ximian.com>
20070
20071         * loader.c (find_method): Also lookup in
20072         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
20073
20074 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
20075
20076         * appdomain.c (mono_domain_unload): Don't free the error message
20077         before passing it to mono_get_exception_...
20078
20079         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
20080         
20081 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
20082
20083         * threads.c: try to better guess an available RT signal (bug #75387).
20084
20085 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
20086
20087         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
20088         and CACHE_OBJECT.
20089
20090 2005-07-07  Martin Baulig  <martin@ximian.com>
20091
20092         * class.c (mono_type_get_name_full): Return NULL for
20093         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
20094         fixes #75408.
20095
20096 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
20097
20098         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
20099         exit the appdomain as well being aborted.
20100
20101         * threadpool.c: Create all threadpool threads inside the root appdomain, and
20102         change back to the root domain after calling managed code. This enables
20103         appdomains using threadpools to be unloaded.
20104
20105 2005-07-07  Martin Baulig  <martin@ximian.com>
20106
20107         * class-internals.h
20108         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
20109         into `MonoDynamicGenericClass' since we only need it for dynamic
20110         types.
20111
20112         * reflection.c (mono_class_bind_generic_parameters): We don't need
20113         to compute the `parent' here.
20114
20115 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
20116
20117         * culture-info-table.h : regenerated.
20118
20119 2005-07-06  Martin Baulig  <martin@ximian.com>
20120
20121         * icall.c
20122         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
20123
20124         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
20125
20126 2005-07-06  Martin Baulig  <martin@ximian.com>
20127
20128         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
20129         we're doing a signature-only comparision; fixes #74945.
20130
20131 2005-07-06  Martin Baulig  <martin@ximian.com>
20132
20133         * class-internals.h (MonoGenericClass): Moved some things out into
20134         a new `MonoInflatedGenericClass' type.  
20135         (MonoInflatedGenericClass): New type; the `klass' of a
20136         `MonoGenericClass' is now computed lazyly in
20137         mono_get_inflated_generic_class().      
20138
20139         * class.c (mono_get_inflated_generic_class): New public function.
20140         (mono_class_inflate_generic_method): Removed the unused
20141         `MonoClass *' argument.
20142         (setup_generic_vtable): Don't call mono_get_inflated_method() on
20143         all the methods.
20144         (mono_class_create_generic): Make this static and merge it with
20145         mono_class_create_generic_2(); we're now called automatically from
20146         mono_get_inflated_generic_class().
20147
20148         * loader.c (mono_method_signature): Call
20149         mono_get_inflated_method() here.
20150
20151 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
20152
20153         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
20154         type of fields with RVA.
20155
20156         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
20157         for this pseudo class.
20158         (my_mono_class_from_generic_parameter): Likewise.
20159         (mono_class_init): Allow interfaces to have cctors.
20160
20161 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
20162
20163         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
20164         lazily for AOT methods.
20165
20166 2005-07-05  Martin Baulig  <martin@ximian.com>
20167
20168         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
20169         returns FALSE for a successful match, not TRUE.
20170
20171 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * loader.c (mono_method_get_index): Optimize this a bit.
20174
20175 2005-07-04  Martin Baulig  <martin@ximian.com>
20176
20177         * class.c
20178         (class_compute_field_layout): Move the check for generic type
20179         definitions into mono_class_layout_fields().  Fixes #74684.
20180         (mono_class_from_generic_parameter): Correctly compute
20181         `klass->parent'; fixes #75457.
20182
20183         * reflection.c (register_assembly, register_module): Make sure
20184         `domain->rejobject_hash' is already created.
20185
20186 2005-07-02  Martin Baulig  <martin@ximian.com>
20187
20188         * class-internals.h
20189         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
20190         `MonoDynamicGenericClass'.      
20191
20192 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
20193
20194         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
20195         returned by a field getter is null, since null is a valid value.
20196
20197 2005-07-01  Martin Baulig  <martin@ximian.com>
20198
20199         * reflection.c (mono_reflection_generic_class_initialize): Update
20200         the `dgclass->fields [i].parent' to the correct class.
20201         (mono_image_get_fieldref_token): Use the declaring type, not the
20202         reflected type.
20203
20204 2005-07-01  Martin Baulig  <martin@ximian.com>
20205
20206         * loader.c (find_method): Also look in the interfaces; fixes #75429.
20207
20208 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
20209
20210         * threads.c (thread_cleanup): assert that thread != NULL
20211         (wait_for_tids_or_state_change): We were using the wrong variable
20212         when accessing wait->threads. `i' was always out of the bounds of
20213         the array.
20214
20215 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20216
20217         * loader.c: map user32 and kernel32 to libMonoSupportW
20218
20219 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
20220
20221         * appdomain.c (unload_thread_main): Mark this as WINAPI.
20222
20223 2005-06-28  Martin Baulig  <martin@ximian.com>
20224
20225         * loader.c (method_from_methodspec): Fix #75334.
20226
20227 2005-06-28  Martin Baulig  <martin@ximian.com>
20228
20229         Fix #74953 - Arrays now implement the generic IList<T> interface
20230         on the 2.0 platform.
20231
20232         * class-internals.h (MonoDefaults): Added `generic_array_class'.
20233
20234         * reflection.c (mono_class_bind_generic_parameters): New public
20235         function; similar to mono_reflection_bind_generic_parameters(),
20236         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
20237
20238         * domain.c (mono_init_internal): Try to initialize.
20239         `mono_defaults.generic_array_class' here; this'll only succeed if
20240         we're using the 2.0 corlib.
20241
20242         * icall.c
20243         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
20244         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
20245         (mono_lookup_internal_call): Added support for nested classes.
20246
20247         * loader.c
20248         (mono_get_method_from_token): Set `result->signature->pinvoke' if
20249         we're an interncall and have generic arguments.
20250
20251         * class.c
20252         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
20253         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
20254         instance of System.Array.InternalArray<T> for arrays, so they
20255         implement the generic IList<T> interface.
20256
20257 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
20258
20259         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
20260         (chastamar@yahoo.com). Fixes #75374.    
20261
20262 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
20263
20264         * culture-info-table.h: regenerated.
20265
20266 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20267
20268         * icall.c: handle spaces correctly for base64 strings.
20269
20270 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
20271
20272         * *.c: Kill some warnings.
20273
20274 2005-06-23  Duncan Mak  <duncan@novell.com>
20275
20276         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
20277         that this builds on Solaris 10 (x86).
20278
20279 2005-06-23  Martin Baulig  <martin@ximian.com>
20280
20281         * class.c
20282         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
20283         generic type definitions.
20284
20285 2005-06-23  Martin Baulig  <martin@ximian.com>
20286
20287         Fix #75331.
20288
20289         * metadata.c (mono_class_get_overrides): Renamed to
20290         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
20291         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
20292         pass it to mono_get_method_full().
20293
20294 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
20295
20296         * reflection.c (mono_reflection_create_runtime_class): take the
20297         mono_domain_lock in this method. Prevents deadlocks
20298
20299 2005-06-22  Martin Baulig  <martin@ximian.com>
20300
20301         * loader.c (method_from_methodspec): Fix #75330.
20302
20303 2005-06-22  Martin Baulig  <martin@ximian.com>
20304
20305         * reflection.c (type_get_qualified_name): Use
20306         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
20307         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
20308         argument; use it if we don't have an assembly name.
20309
20310 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
20311
20312         * object.c: In mono_message_init, set "copy out" flag for in
20313         parameters with the [Out] flag.
20314
20315 2005-06-21  Martin Baulig  <martin@ximian.com>
20316
20317         * class.c
20318         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
20319         and MONO_TYPE_PTR.
20320
20321 2005-06-21  Martin Baulig  <martin@ximian.com>
20322
20323         * class.c (mono_class_init): Don't initialize `class->fields' for
20324         generic instances since they're initialized again in
20325         compute_field_layout(). 
20326         (compute_field_layout): Set the field's `generic_info' here; fix
20327         #75320. 
20328
20329 2005-06-21  Martin Baulig  <martin@ximian.com>
20330
20331         * class-internals.h
20332         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
20333
20334         * metadata.c (mono_metadata_generic_method_equal): Also
20335         distinguish the `generic_class'; fixes #75334.
20336
20337 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20338
20339         * domain.c:
20340         * appdomain.c:
20341         * domain-internals.h:
20342         * reflection.c: 'domain_assemblies' field is now protected by its own
20343         lock. Don't call into managed code to run the AssemblyLoad event if we
20344         now there are no registered delegates for it.
20345
20346 2005-06-20  Martin Baulig  <martin@ximian.com>
20347
20348         * class.c (mono_class_is_assignable_from): Use a custom version of
20349         mono_class_has_parent() to make things work for generic instances;
20350         fix #75300.
20351
20352 2005-06-20  Martin Baulig  <martin@ximian.com>
20353
20354         * loader.c (method_from_methodspec): Apply a patch from
20355         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
20356
20357 2005-06-20  Martin Baulig  <martin@ximian.com>
20358
20359         * class.c (mono_class_init): Reverted Zoltan's last change; it
20360         breaks generics.
20361
20362 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
20363
20364         * threads.c (wait_for_tids_or_state_change): Add missing locking.
20365
20366 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20367
20368         * socket-io.c: fix the index in the socket array for writable/error
20369         sockets. Fixes bug #75306.
20370
20371 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
20372
20373         * class.c (mono_class_init): Allow interfaces to have static ctors.
20374
20375 2005-06-17  Martin Baulig  <martin@ximian.com>
20376
20377         * loader.c (method_from_methodspec): Use `context->container' when
20378         parsing the `gmethod->inst'.
20379
20380 2005-06-17  Martin Baulig  <martin@ximian.com>
20381
20382         * class.c (mono_type_get_name_recurse): Don't add the assembly
20383         name for type arguments.
20384
20385 2005-06-15  Martin Baulig  <martin@ximian.com>
20386
20387         * reflection.c (mono_image_get_inflated_method_token): Encode
20388         correct klass; fixes #75260.
20389
20390 2005-06-13 Michal Moskal <malekith@nemerle.org>
20391
20392         * icall.c: Make GetCorrespondingMethod/Constructor take
20393         MonoReflectionMethod method not MonoMethod. Removed
20394         MonoType.GetCorrespondingField, and make
20395         MonoGenericType.GetCorrespondingField take name not
20396         MonoClassField.
20397
20398 2005-06-13  Michal Moskal <malekith@nemerle.org>
20399
20400         * reflection.c (field_encode_signature, encode_locals):
20401          Make sizes of buffers for types larger (for big generic types).
20402          (create_generic_typespec,
20403          mono_reflection_sighelper_get_signature_local,
20404          mono_reflection_sighelper_get_signature_field):
20405          Add asserts for too small buffers.
20406
20407 2005-06-15  Martin Baulig  <martin@ximian.com>
20408
20409         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
20410         if our parent is not a dynamic type.
20411
20412 2005-06-15  Martin Baulig  <martin@ximian.com>
20413
20414         * class-internals.h (MonoTypeNameFormat): New enum.
20415
20416         * class.c
20417         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
20418         (mono_type_get_full_name): Removed.
20419         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
20420         argument instead of the boolean's.
20421
20422         * icall.c (ves_icall_System_MonoType_getFullName):
20423         Added `gboolean assembly_qualified'.    
20424
20425         * reflection.h
20426         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
20427
20428         * reflection.c (mono_reflection_parse_type): Parse the new type
20429         name format.
20430
20431 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20432
20433         * icall.c: no need to convert from utf16 to utf8 and then back again
20434         after the call to GetLogicalDrives.
20435
20436 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20437
20438         * icall.c: frombase64. Fix problems exposed by new tests.
20439
20440 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20441
20442         * icall.c: added internal calls for converting char [] and strings in
20443         base64 into byte [].
20444
20445 2005-06-10  Martin Baulig  <martin@ximian.com>
20446
20447         * class.c (mono_class_create_generic_2): Read the nested classes
20448         from the metadata rather than from `gklass->nested_classes' since
20449         `gklass' might not be initialized yet.
20450
20451 2005-06-09  Duncan Mak  <duncan@novell.com>
20452
20453         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
20454         all public headers. Fixes #74919.
20455
20456 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
20457
20458         * domain.c: The key for proxy_vtable_hash is now a pointer
20459         array. Added new GHashFunc and GCompareFunc functions for this.
20460
20461         * class.h: The list of interfaces in MonoRemoteClass is known in
20462         advance and can't grow (we create a new MonoRemoteClass if needed),
20463         so now the interface array can be allocated together with
20464         MonoRemoteClass.
20465         
20466         * object.c: Added a new method create_remote_class_key.
20467         Fixed mono_remote_class so it does not depend on
20468         mono_upgrade_remote_class.
20469         Removed extend_interface_array.
20470         Added new method clone_remote_class(), which makes a copy of a remote
20471         class and adds a new interface or class to it.
20472         mono_upgrade_remote_class() now creates a new remote class (or gets
20473         it from the cache) if an vtable upgrade is needed. In this way
20474         we make sure that other objects sharing the same remote class
20475         don't get the new vtable with unwanted interfaces.
20476         
20477         * object-internals.h:
20478         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
20479         
20480         * marshal.c: Track changes in mono_upgrade_remote_class().
20481
20482 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
20483         * icall.c: Add runtime methods for obtaining members of inflated
20484         class, which were created from supplied non-inflated members. It
20485         is used in internal Get{Method,Constructor,Field} methods in
20486         System.Type
20487
20488 2005-06-09  Martin Baulig  <martin@ximian.com>
20489
20490         * reflection.c
20491         (mono_reflection_bind_generic_method_parameters): Fix #75169.
20492
20493 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
20494         * reflection.c (mono_image_basic_init): Define
20495         Version in MonoDynamicAssembly. 
20496         
20497 2005-06-08  Martin Baulig  <martin@ximian.com>
20498
20499         Fix #75136.
20500
20501         * loader.c
20502         (mono_method_signature_full): New public method; takes a
20503         `MonoGenericContext *'.
20504         (find_method): Use mono_method_signature_full() and pass the
20505         klass'es context to it.
20506
20507         * class.c (mono_class_is_inflated_method): Use
20508         mono_method_signature_full() and pass the context to it.
20509
20510 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
20511
20512         * object.c: add proper locking in mono_remote_class_vtable(),
20513         fixes possible memory corruption.
20514
20515 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
20516
20517         * marshal.c (mono_remoting_marshal_init): set
20518         initialized after initialization.
20519
20520 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
20521
20522         * locales.c : hush.
20523
20524 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
20525
20526         * object.c (extend_interface_array): fix really silly
20527         memory corrupting / comparison bug.
20528
20529 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
20530
20531         * reflection.c: Functions added to support the creation
20532         of CustomAttributeData, which includes Attribute data
20533         used by ReflectionOnly methods.
20534
20535         * reflection.h:  mono_reflection_get_custom_attrs_data and
20536          mono_custom_attrs_data_construct added (functions exposed).
20537
20538          * icall.c: Added mono_reflection_get_custom_attrs_data
20539          as icall.
20540         
20541 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
20542
20543         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
20544         lupus's request.
20545
20546 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
20547
20548         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
20549
20550         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
20551         dynamic DllImportAttribute.
20552
20553         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
20554         dynamic DllImportAttribute.
20555
20556         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
20557         Fixes #75162.
20558
20559 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20560
20561         * threads.c: avoid segfault when an unstarted thread is aborted.
20562
20563 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
20564
20565         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
20566         Returns the name and version of the runtime for reporting.
20567
20568 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20569
20570         * appdomain.c: bump corlib version.
20571         * object-internals.h: new field in MonoReflectionAssembly.
20572
20573 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20574
20575         * object-internals.h: Carlos forgot to add this field.
20576
20577 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
20578
20579         * icall.c: Added create_version to create instances
20580         of Version of MonoReflectionAssemblyName. This change helps
20581         the AssemblyName tests to keep running fine.
20582         
20583 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
20584   
20585         * object.c (mono_method_return_message_restore): A somehow less
20586         intrusive fix for #75138.
20587
20588 2005-06-03  Raja R Harinath  <rharinath@novell.com>
20589
20590         * object.c (mono_method_return_message_restore): Fix computation
20591         of expected number of out args.
20592
20593 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
20594
20595         * reflection.c (mono_image_get_method_info): Fix the case when the
20596         charset is empty.
20597
20598 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
20599
20600         * object.c: Added missing null check in
20601           mono_method_return_message_restore.
20602
20603 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
20604
20605         * reflection.c (mono_image_get_method_info): Handle the case when
20606         dllentry is empty.
20607
20608 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
20609
20610         * object.c: When creating the vtable for a proxy, take into account
20611         all inherited interfaces, not only the ones registered in
20612         iclass->interfaces. This fixs bug #74996.
20613         Also, in mono_method_return_message_restore, verify that the array
20614         of out args has the expected lengh.
20615
20616 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20617
20618         * socket-io.c: update the timeout in Poll when the call is interrupte.
20619
20620 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20621
20622         * socket-io.c: support abort/suspend in Select_internal after last
20623         change.
20624
20625 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20626
20627         * threadpool.c: remove warning.
20628
20629 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20630
20631         * icall.c:
20632         * socket-io.[ch]: Select_internal uses poll() now when available, thus
20633         removing the 1024 limit from select(). Runtime part of the fix for
20634         bug #71203.
20635
20636 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20637
20638         * socket-io.c: when resolving the addresses for the same
20639         host returned by gethostname(), get the local IPs from the interface
20640         list. Loopback addresses are discarded if the are interfaces up with
20641         non-loopback ones. Fixes bug #63265.
20642
20643 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
20644
20645         * appdomain.c, verify.c, object-internals.h, reflection.c:
20646         bumped corlib number to 36, and added new extra_flags field
20647         to ReflectionMethodBuilder and friends.  Fixes #75060.
20648
20649 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
20650
20651         * gc.c: register a new weak link only if the object is non-null
20652         (fixes bug#75047).
20653
20654 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
20655
20656         * culture-info.h : short time pattern too.
20657
20658 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
20659
20660         * culture-info.h : expand long time pattern string length.
20661
20662 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
20663
20664         * culture-info-table.h : update (more French date format; #72788).
20665
20666 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
20667
20668         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
20669         the method is static. Fixes #75029.
20670
20671 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
20672
20673         * reflection.c: Update the table_idx field of method builders after
20674         saving the module, since it can change. This is a workaround for
20675         bug #74914. 
20676
20677 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
20678
20679         * culture-info-table.h : update (additional French date format).
20680
20681 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
20682
20683         * icall.c (ves_icall_type_Equals): Revert last change.
20684         
20685         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
20686
20687         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
20688
20689 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
20690
20691         * class-internals.h: Added executioncontext_class field to 
20692         MonoDefaults structure.
20693         * domain.c: Cache System.Threading.ExecutionContext class in 
20694         mono_defaults.
20695         * object.c: Capture the ExecutionContext for asynchroneous calls in
20696          mono_async_result_new.
20697         * object-internals.h: Added execution_context and original_context 
20698         fields to MonoAsyncResult. Added execution_context to MonoThread.
20699         * security-manager.c|.h: Added mono_get_context_capture_method to 
20700         return the capture method (if required by the security manager or by
20701         the framework version used).
20702         * threadpool.c: Apply capture (if present) ExecutionContext in 
20703         mono_async_invoke and revert to original context after it completes.
20704
20705 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
20706
20707         * culture-info-table.h : updated (real hacky solution for zh-CHT).
20708
20709 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
20710
20711         * culture-info-table.h : zh-CHT related workaround.
20712
20713 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
20714
20715         * marshal.c (emit_marshal_custom): Add some error checking and call the
20716         methods in the ICustomMarshaler interface. Fixes #74875.
20717         
20718         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
20719         native->managed wrappers.
20720
20721 2005-05-12  Martin Baulig  <martin@ximian.com>
20722
20723         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
20724         here and use the loader lock.
20725
20726         * mono-debug.c: Properly lock when the debugger is not attached.
20727         (mono_debug_init): Release the initial lock if we're not running
20728         in the debugger.
20729
20730 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
20731
20732         * marshal.c (emit_marshal_custom): Pass through NULL values without
20733         calling the custom marshalling routines.
20734
20735         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
20736         conversion in structures. Fixes #74882.
20737
20738 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
20739
20740         * culture-info-table.h : zh-* cultures were missing.
20741
20742 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
20743
20744         * threads.c: Added a new event background_change_event which is signaled
20745         when a thread changes its background mode.
20746         Moved here several checks previously done in managed code. The checks
20747         require the thread lock, and using the thread lock in managed code
20748         can result in deadlocks.
20749         Merged Start_internal and Thread_internal into a single method. Now 
20750         Thread_internal does all work of creating and starting a thread.
20751         Added icalls for setting and getting the state of the object. Moved from
20752         managed code to avoid locking there.
20753         Added wait_for_tids_or_state_change() which is called instad of
20754         wait_for_tids when waiting for non-backround threads to end. This method
20755         will return if one of the threads ends or the background_change_event
20756         is signaled.
20757         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
20758         the background mode. This method signals the background_change_event
20759         event.
20760         * icall.c:
20761         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
20762         removed Start_internal.
20763         
20764 2005-05-11  Martin Baulig  <martin@ximian.com>
20765
20766         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
20767         to order of some fields to get proper alignment on 64-bit machines.
20768
20769 2005-05-11  Martin Baulig  <martin@ximian.com>
20770
20771         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
20772         changes as they're broken and completely fuck up the debugger.
20773
20774         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
20775
20776 2005-05-10  Martin Baulig  <martin@ximian.com>
20777
20778         * reflection.c (mono_reflection_generic_class_initialize): Don't
20779         call mono_class_setup_parent() here.
20780
20781 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20782
20783         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
20784         send/receive timeout use an integer in milliseconds. We were using a
20785         struct timeval.
20786
20787 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20788
20789         * locales.c:
20790         (internal_get_cultures): reserve the first slot of the array for the
20791         InvariantCulture, which will be filled in managed code.
20792
20793 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
20794
20795         * reflection.c (mono_image_fill_module_table): Initialize the
20796         GENERATION field as well.
20797
20798 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20799
20800         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
20801         Monitor.Enter on the object.
20802
20803 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
20804
20805         * threads.c: Enable the wait for running threads when exiting.
20806         * icall.c: Suspend all threads before exiting.
20807
20808 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
20809
20810         * assembly.c (mono_assembly_load_reference): Fix warning.
20811
20812 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20813
20814         * threadpool.c: changed the default number of threads per cpu. From now
20815         on, the default will be 20 + (5 * number of cpus) instead of 50.
20816
20817 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
20818
20819         * loader.c (mono_method_get_signature_full): Add locking here.
20820
20821 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
20822
20823         * appdomain.c: Moved methods for parsing and freeing assembly
20824         names to assembly.c.
20825         * assembly.c, domain-internals.h: Created public methods for parsing
20826         assembly names. Fixed mono_assembly_load_with_partial_name:
20827         it now finds the best match, taking into account the version,
20828         token and culture specified in the partial name. Also return
20829         the latest version if no version information is specified.
20830
20831 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
20832
20833         * threadpool.c: replace check for SocketAsyncCall class.
20834
20835 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20836
20837         * threadpool-internals.h:
20838         * Makefile.am: added threadpool-internals.h
20839
20840         * threadpool.c: call mono_unhandled_exception on exceptions not handled
20841         that happen in threadpool threads (tested on MS).
20842         (mono_thread_pool_remove_socket): new function that dispatch any pending
20843         AIO call on a socket that is closing. By now only epoll really needs it,
20844         as select/poll wake up when the socket closes.
20845
20846
20847         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
20848
20849 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
20850
20851         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
20852
20853 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
20854
20855         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
20856
20857 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
20858
20859         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
20860         has an abort request, convert it into a suspend request.
20861
20862 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
20863
20864         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
20865         warning for the usage of `UnmanagedFunctionPointerAttribute' which
20866         is not supported yet.
20867
20868 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20869
20870         * image.c: register assemblies loaded from data (bundles) in the loaded
20871         assemblies hash. Fixes bug #74772.
20872
20873 2005-04-29  Martin Baulig  <martin@ximian.com>
20874
20875         * class.c (mono_type_get_name_recurse): Update to the new naming
20876         schema from the latest .NET 2.x beta2.
20877         (mono_class_setup_vtable_general): If we're a generic instance,
20878         copy the vtable from our generic type definition and inflate all
20879         the methods in it.
20880
20881         * loader.c (find_method): Update to the new naming schema from the
20882         latest .NET 2.x beta2.
20883
20884 2005-04-29  Raja R Harinath  <harinath@gmail.com>
20885
20886         * class.c (mono_class_init): Add a mono_loader_unlock to the
20887         #74734 fix.
20888
20889 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
20890
20891         * icall.c (ves_icall_System_Environment_Exit): Remove the 
20892         suspend_all_other_threads () call for the time being, since it can hang.
20893
20894         * threads.c (mono_thread_manage): Similarly, disable the waiting for
20895         the background threads to exit, since it can also hang.
20896
20897         * class.c (mono_class_init): Applied patch from Ankit Jain 
20898         (radical@gmail.com). Avoid pending init errors when a field refers
20899         to a nested class using a typeref. Fixes #74734.
20900
20901         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
20902         this for dynamic modules.
20903
20904 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20905
20906         * threads.c: don't wait for threads that are in the process of aborting
20907         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
20908         and waiting for background threads to finish. This makes xsp and
20909         mod-mono-server exit without random length delays and/or hangs.
20910
20911 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20912
20913         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
20914
20915 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
20916
20917         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
20918         dynamic types to prevent infinite loops. Fixes #74727.
20919
20920         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
20921         ..._is_assignable_to.
20922
20923 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
20924
20925         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
20926
20927 2005-04-25  Martin Baulig  <martin@ximian.com>
20928
20929         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
20930
20931         * domain.c
20932         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
20933
20934         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
20935
20936         * reflection.c (build_compressed_metadata): Set metadata header
20937         version to 2.0.
20938
20939 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
20940
20941         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
20942         number into an integral and a decimal part. Fixes #70473.
20943
20944         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
20945
20946 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
20947
20948         * culture-info-table.h : reflected the latest locale-builder output.
20949
20950 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20951
20952         * threadpool.c: check for SuspendRequested too when deciding if
20953         mono_thread_interruption_checkpoint should be called.
20954
20955 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20956
20957         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
20958         * threads.c: remove interruption_mutex and use Interlocked instead. When
20959         suspending all the threads, wait for all the suspended events at once.
20960         If we're shutting down and get an APC that is going to be queued,
20961         call mono_thread_execute_interruption immediately, as the thread might
20962         be sleeping on a pthread condition or mutex.
20963
20964         * icall.c: call mono_runtime_set_shutting_down before suspending the
20965         threads.
20966
20967         Fixes bug #74693. And now xsp is happier when exiting.
20968
20969 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
20970
20971         * loader.c (mono_stack_walk): Fix #74690.
20972
20973 2005-04-22  Martin Baulig  <martin@ximian.com>
20974
20975         * mono-debug.h (MonoDebugMethodJitInfo): Added
20976         `MonoDebugMethodJitInfo *jit'.
20977
20978         * mono-debug.c (mono_debug_read_method): Cache the
20979         MonoDebugMethodJitInfo in `address->jit'.
20980         (mono_debug_free_method_jit_info): New public method.
20981
20982 2005-04-22  Martin Baulig  <martin@ximian.com>
20983
20984         * class.c (mono_class_is_assignable_from): Disallow
20985         type parameter -> interface.
20986
20987 2005-04-21  Dick Porter  <dick@ximian.com>
20988
20989         * threads.c (mono_thread_create): Turn an assertion into an error.
20990
20991 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
20992
20993         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
20994         
20995         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
20996         Fix some gcc 4.0 warnings.
20997
20998 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
20999
21000         * file-io.c: fix alt dir separator char on unix systems
21001         and cleanup (fixes bug #71214).
21002
21003 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
21004
21005         * marshal.c: Use CALLVIRT instead of CALL when dispatching
21006         a call to a remote domain, since the method may be an
21007         interface method in the client domain. This fixes bug #74192.
21008
21009 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21010
21011         * threadpool.c: recv/send are now performed before going back to managed
21012         code to save one transition.
21013
21014 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21015
21016         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
21017
21018         * metadata/threadpool.c: removed hack to workaround the bug above.
21019
21020         Fixes bug #74618.
21021
21022 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
21023
21024         * reflection.c reflection.h: Fix handling of parameter defaults in
21025         dynamic methods. Also fixes handling of parameter attributes.
21026         Fixes #74609.
21027
21028         * mono-debug.c (mono_debug_close_image): Fix warning.
21029
21030 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21031
21032         * socket-io.h: replaced old unused field with new 'blocking'.
21033         * threadpool.c: restore socket blocking state on windows(tm).
21034
21035 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
21036
21037         * icall.c: don't return the codebase in the AssemblyName[] returned by
21038         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
21039         * object-internals.h: Removed FIXME (fields were presents) and fixed
21040         versioncompat declaration.
21041
21042 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21043
21044         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
21045         not closed, so don't cleanup when it happens.
21046
21047 2005-04-13  Chris Toshok  <toshok@ximian.com>
21048
21049         * mono-debug-debugger.h: change prototype for
21050         mono_debugger_lookup_type.
21051
21052         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
21053         this function, although it should probably be named
21054         mono_debugger_init_type.
21055
21056 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21057
21058         * threadpool.c: fix non-AIO case.
21059
21060 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
21061
21062         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
21063         the built-in profiler to measure just JIT compilation times.
21064
21065 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21066
21067         * threadpool.c: the epollfd might be closed by another thread at
21068         any time, so ignore EBADF at treat it as a "we're closing" sign.
21069
21070 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21071
21072         * threadpool.c: release the semaphores with a count equals to the number
21073         of working threads in both IO and regular pools. Fixed typo that messed
21074         up the count of IO pool threads. Don't initialize the pipe handles if
21075         we're using epoll.
21076
21077 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21078
21079         * threadpool.c: some systems don't like a NULL when deleting the socket
21080         from epoll.
21081
21082 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21083
21084         * threadpool.c: fix semaphore allocation.
21085
21086 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21087
21088         * threadpool.c: added epoll() based implementation for asynchronous IO
21089         that is used instead of the default poll() when available.
21090         It can be disabled by setting MONO_DISABLE_AIO.
21091
21092 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21093
21094         * threadpool.c: windows needs 'closesocket' and instead of returning
21095         0 when the stream is closed while in select, it returns -1. Fixes bug
21096         #74573.
21097
21098 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
21099
21100         * class.c (class_compute_field_layout): Fix the regression caused by
21101         the previous try.
21102
21103 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21104
21105         * threadpool.c: separate pool for socket async. IO.
21106         * threadpool.h: mono_max_worker_threads is not a global any more.
21107
21108 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
21109
21110         * class.c (class_compute_field_layout): Fix #74549.
21111
21112 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21113
21114         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
21115         use 2 connected sockets instead.
21116
21117 2005-04-08  Miguel de Icaza  <miguel@novell.com>
21118
21119         * mono-config.c: Add new entry point for mkbundle
21120         mono_config_parse_memory. 
21121
21122 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21123
21124         * threadpool.c: removed another unused function.
21125
21126 2005-04-08  Ankit Jain  <radical@corewars.org>
21127
21128         * reflection.c (get_default_param_value_blobs): Add 'types'
21129         parameter to get the types encoded in the constant table.
21130         (mono_param_get_objects): Use the type from the constant table,
21131         not the type of the parameter, when creating default values.
21132         Handle null default values correctly.
21133
21134 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21135
21136         * file-io.c:
21137         * file-io.h:
21138         * threadpool.c:
21139         * threadpool.h:
21140         * icall.c:
21141         * socket-io.c: removed dead code for async IO.
21142
21143 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21144
21145         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
21146
21147         * threadpool.c: intercept socket async. calls and pass them to a thread
21148         that is polling and dispatching the job items to the threadpool as
21149         socket become ready. Fixes bugs #71217, #71933.
21150
21151         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
21152         between char and short/ushort arrays.
21153
21154         * socket-io.c: remove dead code.
21155
21156 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
21157
21158         * locales.c,
21159           icall.c : removed InternalToUpper_Comp() and
21160           InternalToLower_Comp().
21161
21162 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
21163
21164         * char-conversions.h : The tables were incorrectly generated. Should
21165           be generated against invariant culture.
21166
21167 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
21168
21169         * object.c (mono_runtime_invoke_array): Fix return value when 
21170         passing pre-created valuetype objects to ctors.
21171
21172         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
21173         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
21174         Fixes #74338.
21175
21176 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
21177
21178         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
21179         only used with --security and hides the wrong corlib version error.
21180
21181 2005-03-30  Joshua Tauberer  <tauberer@for.net>
21182
21183         * class.c: Changed mono_class_name_from_token so that types
21184         outside of a namespace don't have an initial period.  Improved
21185         the g_warning message used in _mono_class_get when loading
21186         fails.
21187         * assembly.c: In mono_assembly_load_reference, when an assembly
21188         can't be found, "No such file or directory" is misleading and
21189         unhelpful because a few paths were checked for the presence of
21190         the assembly.  When that happens (ENOENT), display a nicer
21191         message indicating the directories that were searched.  In all
21192         cases, the warning is made easier to read for non-hackers.
21193
21194 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
21195
21196         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
21197         project/solution.
21198         * appdomain.h|domain.c: Removed inline from functions.
21199         * appdomain.c: Reduced warnings when compiling on windows.
21200         * icall.c: Fixed output_debug declaration to gunichar2*.
21201         * mono-config.c: Reduced warnings when compiling on windows.
21202         * rand.c: Added missing "windows.h". Added missing return value.
21203         * rawbuffer.c: Added missing winsock2.h for windows.
21204         * sysmath.h: Added mono-compiler.h header to allow/ease 
21205         compilation with non-GCC compilers.
21206         * threads.c: Fixed declarations to compile with VS.NET C compiler.
21207         Removed cast warnings.
21208
21209         Adapted from the work of J Lothian (for VC6).
21210
21211 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
21212
21213         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
21214         from default_path.
21215
21216 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
21217
21218         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
21219         the 2.0 profile.
21220
21221 2005-03-27  Raja R Harinath  <harinath@gmail.com>
21222
21223         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
21224         has to be in $(exec_prefix).  $(prefix) is for arch-independent
21225         stuff, and it would probably use $(prefix)/share rather than
21226         $(prefix)/lib.
21227
21228 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21229
21230         * console-io.c: added 2 includes that might be missing.
21231
21232 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
21233
21234         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
21235         profile.
21236
21237         * reflection.c (create_custom_attr): Allocate the params array using
21238         alloca so it gets GC tracking.
21239
21240 2005-03-23  Chris Toshok  <toshok@ximian.com>
21241
21242         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
21243         out some spew.
21244
21245 2005-03-24  Raja R Harinath  <rharinath@novell.com>
21246
21247         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
21248         changes to pick up any changes in prefix, etc.
21249
21250 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
21251
21252         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
21253         
21254         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
21255         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
21256
21257 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
21258
21259         * class-internals.h object-internals.h class.c reflection.c: Extend the
21260         mono_lookup_dynamic_token () function to return the class of the
21261         token as well. 
21262
21263         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
21264         well. Fixes #73848.
21265
21266 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
21267
21268         * security-manager.c: Skip inheritance checks for intra-corlib
21269         class inheritance and method overrides. This skips a lot of checks
21270         and (anyway) permissions cannot work until corlib is loaded.
21271
21272 2005-03-23  Martin Baulig  <martin@ximian.com>
21273
21274         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
21275         MONO_TYPE_GENERICINST.  
21276
21277 2005-03-23  Martin Baulig  <martin@ximian.com>
21278
21279         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
21280
21281 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
21282
21283         * class.c: added locking comments to some functions.
21284         Cache the interface offsets arrays (saves about 20 KB
21285         of runtime memory in a typical app).
21286         Reduce the time overhead in mono_class_setup_supertypes ().
21287
21288 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
21289
21290         * icall.c: speedup and fix leaks in GetMethodsByName and
21291         GetPropertiesByName.
21292
21293 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
21294
21295         * reflection.c: some locking fixes.
21296
21297 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
21298
21299         * metadata.c: added missing break in case statement.
21300
21301 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
21302
21303         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
21304         typedbyref return values. Fixes #73941.
21305
21306 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
21307
21308         * security-manager.c|h: Added demandunmanaged method and 
21309         suppressunmanagedcodesecurity class to MonoSecurityManager.
21310         Renamed aptc class to allowpartiallytrustedcallers.
21311
21312 2005-03-17  Martin Baulig  <martin@ximian.com>
21313
21314         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
21315
21316 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21317
21318         * file-io.c: disabled file async. IO using aio_*. It uses the
21319         threadpool now. Workaround for bug #73718.
21320
21321 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
21322
21323         * assembly.h, mono-config.c: added code to deal with bundled configs
21324         for bundled assemblies.
21325
21326 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
21327
21328         * *.c, private.h: cleanup, removing old private.h header file.
21329
21330 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
21331
21332         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
21333         and throw_on_unmappable_char attributes.
21334
21335 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
21336
21337         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
21338         _ProcessName_internal.
21339
21340 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
21341
21342         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
21343         #73631.
21344
21345         * icall.c threads.c threads-types.h: Remove slothash icalls as they
21346         are no longer used.
21347
21348 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
21349
21350         * object.c (compute_class_bitmap): Add support for generics. Fixes
21351         #73527.
21352
21353 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
21354
21355         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
21356
21357 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21358
21359         * filewatcher.c: commented out the code for windows watcher, as we don't
21360         use it (we use the managed implementation instead).
21361
21362 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
21363
21364         * object-internals.h (MonoThread): Remove 'unused1' field.
21365
21366         * appdomain.c: Bump corlib version.
21367
21368         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
21369
21370         * reflection.c (mono_reflection_create_runtime_class): Remove the
21371         AssemblyBuilder.Save optimization since it causes too many problems.
21372
21373 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
21374
21375         * exception.c|h: Added mono_get_exception_reflection_type_load to
21376         create a ReflectionTypeLoadException object.
21377         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
21378         to return NULL is a InheritanceDemand fails during reflection. Updated
21379         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
21380         ReflectionTypeLoadException if an InheritanceDemand fails during 
21381         reflection. Added icall mapping for GetLinkDemandSecurity.
21382         * security-manager.c|h: Added ves_icall_System_Security_
21383         SecurityManager_GetLinkDemandSecurity internal call to return the
21384         class and methods permissions set for a LinkDemand. Removed unused
21385         fields in MonoSecurityManager.
21386
21387 2005-03-10  Martin Baulig  <martin@ximian.com>
21388
21389         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
21390         it's a generic instance.
21391
21392 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
21393
21394         * reflection.c (mono_get_object_from_blob): Applied patch from
21395         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
21396
21397         * class.c (mono_class_is_assignable_from): Another try at fixing 
21398         #73469 without breaking anything.
21399
21400 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
21401
21402         * class.c: (mono_class_is_assignable_from): Revert the last changes
21403         since they don't work with generics.
21404         
21405         * class.c (mono_class_is_assignable_from): Fix build bustage.
21406
21407         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
21408         the managed IsAssignableFrom method. Fixes #73469.
21409
21410         * reflection.c (mono_reflection_call_is_assignable_from): New helper
21411         function.
21412
21413 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
21414
21415         * object.c (mono_load_remote_field_new): Fix returning uninitialized
21416         memory when the remoting callback does not sets the out arguments.
21417         Fixes #73007.
21418
21419         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
21420         by mistake.
21421
21422         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
21423
21424         * object-internals.h (MonoStackFrame): Sync with managed object layout.
21425
21426         * appdomain.c: Bump corlib version.
21427
21428 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
21429
21430         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
21431         function.
21432
21433         * threads.c (mono_thread_attach): Detect threads which are not started
21434         by the GC pthread wrappers.
21435
21436 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
21437
21438         * icall.c: Added new icall for RNG.
21439         * rand.c|h: Added new icall to open the RNG. This allows to share a 
21440         single handle on Linux to access /dev/urandom and fix #73183.
21441
21442 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
21443
21444         * object.c: setting the new vtable in a transparent proxy object must
21445         not change the GC descriptor.
21446
21447 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
21448
21449         * object.c: fixed compilation without GCJ support.
21450         * reflection.c: for runtime-created types ensure klass->has_references
21451         is correct (bug #73215).
21452
21453 2005-03-02  Martin Baulig  <martin@ximian.com>
21454
21455         * class.c (mono_class_is_assignable_from): Make this work if
21456         `oklass' is a generic instance; fixes #72831.
21457
21458 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
21459
21460         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
21461         with hasthis set.
21462         
21463         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
21464
21465         * marshal.c: Reorganize native->managed marshalling code to also use
21466         the emit_marshal_... functions.
21467
21468 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
21469
21470         * object.c: typed allocs have issues with bitmap sizes > 30,
21471         so check for max_set >= 30.
21472
21473 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
21474
21475         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
21476         managed code. Fixes #73012.
21477
21478         * metadata.h (MonoMarshalSpec): Add elem_mult field.
21479
21480         * metadata.c reflection.c: Load/Emit elem_mult as well.
21481         
21482         * metadata.h (MonoMarshalSpec): Add comment.
21483
21484         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
21485
21486         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
21487         num_elem to -1 if not given.
21488
21489         * object-internals.h (MonoReflectionMarshal): Add has_size field.
21490
21491         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
21492         given values.
21493
21494 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
21495
21496         * null-gc.c (mono_gc_free_fixed): Was not compilable.
21497
21498 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
21499
21500         * reflection.c (encode_marshal_blob): Encode param_num field as well.
21501
21502         * object-internals.h (MonoReflectionMarshal): Add param_num field.
21503
21504 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
21505
21506         * object.c: generalized the reference bitmap creation
21507         and added hooks for the new GC.
21508         * class-internals.c: removed the gc_bitmap field from MonoClass.
21509
21510 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
21511
21512         * domain.c: help the compiler to produce better code
21513         in mono_jit_info_table_find ().
21514
21515 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
21516
21517         * object.c: make all allocations look typed.
21518
21519 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
21520
21521         * socket-io.c: load Mono.Posix if it's not loaded already
21522         (fixes bug#73033).
21523
21524 2005-02-24  Martin Baulig  <martin@ximian.com>
21525
21526         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
21527         * reflection.c (dup_type): Likewise.
21528
21529 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
21530
21531         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
21532         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
21533
21534 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
21535
21536         * domain.c, threads.c, object-internals.h: make the critical thread
21537         local vars use the fast access mode (even when we're compiled in
21538         a lib). Provide accessors to be used by the jit during codegen.
21539
21540 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
21541
21542         * appdomain.c: Changed hook functios behavior to include
21543         support for the reflection only assemblies. Some icalls were changed
21544         to support the mentioned assemblies too. Signatures of static methods
21545         try_assembly_resolve and real_load now have an additional parameter:
21546         refonly.
21547
21548         * assembly.c: General changes to mono_assembly_ methods to support
21549         reflection only api. Functions mono_assembly_open, mono_assembly_load,
21550         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
21551         suffix, to support an additional gbool parameter to specify whether
21552         the assembli is reflection only or not. Created some new hook functions 
21553         to add support for reflection only assemblies. Signatures of static 
21554         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
21555         have now an additional parameter: refonly.
21556
21557         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
21558         indicating whether the assembly is reflection only or not.
21559
21560         * exception.c: Add mono_get_exception_invalid_operation.
21561
21562         * icall.c: Throw an InvalidOperationException when trying to invoke
21563         a property/method/event, or trying to set/get the value of a field.
21564         Also add an icall to retrieve the ref_only flag to the
21565         MonoReflectionAssembly.
21566
21567 2005-02-23  Chris Toshok  <toshok@ximian.com>
21568
21569         Part of fix for #72827.
21570         * mono-debug.c (mono_debug_add_method): add lexical block data to
21571         the info we write.  Kind of a hack at the moment - we copy the
21572         lexical block info from the MonoDebugMethodInfo to the
21573         MonoDebugMethodJitInfo here, before writing it.
21574         (mono_debug_read_method): read the lexical block info.
21575
21576         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
21577
21578         * debug-mono-symfile.h: add lexical block support.
21579
21580         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
21581         support.
21582
21583 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
21584
21585         * loader.c (mono_lookup_pinvoke_call): Fix warning.
21586
21587         * object.c (mono_runtime_free_method): Call mono_free_method () and
21588         put the TODOs there.
21589
21590         * loader.c (mono_free_method): Free up most memory allocated for 
21591         dynamic methods.
21592
21593 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
21594
21595         * reflection.c: properly flag a Type argument to a
21596         named custom attr value (bug #72248).
21597
21598 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
21599
21600         * reflection.c: reduce code duplication in named custom
21601         attribute encoding.
21602
21603 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
21604
21605         * reflection.c: properly encode custom attrs of type object
21606         (bug #72649).
21607
21608 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
21609
21610         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
21611
21612 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
21613
21614         * socket-io.c: load System.dll if it's not loaded already
21615         (bug #72850 and #70477).
21616
21617 2005-02-21  Martin Baulig  <martin@ximian.com>
21618
21619         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
21620         generic instances.
21621
21622 2005-02-21  Martin Baulig  <martin@ximian.com>
21623
21624         * reflection.c (mono_image_build_metadata): We also need to
21625         "fixup" the MethodImpl table after we computed the final method
21626         indices.  Call fixup_methodimpl() to do that.
21627         (fixup_methodimpl): New private method.
21628
21629 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
21630
21631         * assembly.c: special case mscorlib.dll (bug#72536),
21632         patch from Carlos Alberto Cortez.
21633
21634 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * threads-types.h threads.c: Fix build bustage.
21637
21638         * threads.c: Use a union for long<->double conversions.
21639
21640         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
21641         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
21642
21643         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
21644         containing the checkpoint call with NOT_TAKEN.
21645         
21646         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
21647         checkpoint before pushing the arguments, so they won't have to be
21648         spilled to stack.
21649
21650 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
21651
21652         * domain.c, assembly.c, domain-internals.h: make some data
21653         const and relocation-free.
21654
21655 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
21656
21657         * object.c, appdomain.c, class-internals.h: introduce the
21658         MonoClassRuntimeInfo structure to hold the info needed to
21659         use a class at runtime. Made mono_class_vtable() lock-free
21660         for all the appdomains.
21661
21662 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
21663
21664         * metadata-internals.h, image.c: introduce a per-image mempool to
21665         be used for memory that has the same lifetime as the image.
21666
21667 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
21668
21669         * domain.c: In mono_init_internal(), instead of selecting the first
21670         runtime version supported by an executable, get a list of all
21671         supported versions and select the one for which an mscorlib exists
21672         (since even if the runtime supports a given version, it doesn't mean
21673         that the framework for that version is installed).
21674         Modified get_runtimes_from_exe to support this behavior.
21675         In supported_runtimes, added information about additional system
21676         assembly versions.
21677         
21678         * assembly.c: Added support for more than one system assembly version
21679         per runtime version. Updated the assembly list.
21680         In mono_assembly_remap_version, removed the initial version check,
21681         since we don't know to which version we need to compare until we
21682         get the version set on which the assembly is based.
21683         Moved the code for loading corlib into the new method
21684         mono_assembly_load_corlib(), so it can be used by the initialization
21685         code.
21686         
21687         * domain-internals.h: Updated data structures and added declaration
21688         for mono_assembly_load_corlib.
21689
21690 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
21691
21692         * reflection.c (resolve_object): Fix the creation of the signature in 
21693         the SignatureHelper case.
21694
21695         * assembly.c (mono_assembly_remap_version): Fix binary search.
21696         
21697 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
21698  
21699         * class.c: Added inheritance check when a method is overloaded (from a
21700         virtual method or when implementing an interface) and when a class is
21701         inherited. Added functions to set a failure for a class and to 
21702         retreive the exception from a failure.
21703         * class-internals.h: Added fields to MonoClass to keep the exception
21704         information status for inheritance (or other exceptions) to be thrown
21705         later (i.e. not at load time).
21706         * object.c: Throw the inheritance SecurityException when a type is to 
21707         be created with either class or method inheritance violations.
21708         * reflection.c|h: Fix when getting declsec from a class. Removed 
21709         unrequired code for class. Improved sanity in parameter naming.
21710         * security-manager.c|h: Added functions to check for class and method
21711         inheritance.
21712
21713 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
21714
21715         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
21716         and has_finalize in dynamic types as well.
21717
21718 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
21719
21720         * culture-info-table.h : fixed currency format for en-GB (and so on).
21721
21722 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
21723
21724         * gc.c: ensure the GC handles never have 0 as a value.
21725
21726 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
21727
21728         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
21729         a pointer to a struct to unmanaged code. Fixes #72625.
21730
21731 2005-02-16  Martin Baulig  <martin@ximian.com>
21732
21733         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
21734
21735 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
21736
21737         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
21738
21739 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
21740
21741         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
21742
21743         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
21744         UnmanagedFunctionPointerAttribute, use it for determining calling convention
21745         etc. Fixes #71471.
21746
21747         * reflection.c (mono_custom_attrs_get_attr): New helper function.
21748
21749         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
21750
21751 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
21752
21753         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
21754         changes to make the current context a field in MonoThread.
21755
21756 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
21757
21758         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
21759         the last change.
21760         
21761         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
21762         extracted from mono_marshal_get_native_wrapper.
21763
21764         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
21765         to create wrappers around native functions.
21766
21767         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
21768         delegates for arbitrary function pointers. Fixes #71472.
21769
21770 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
21771
21772         * threads.c: cleaned up the code a little.
21773
21774 2005-02-15  Martin Baulig  <martin@ximian.com>
21775
21776         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
21777         the data table.
21778
21779         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
21780         allocate larger chunks if needed.
21781
21782 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
21783
21784         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
21785         in by mistake.
21786
21787 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
21788
21789         * domain.c: keep the domains in an array and ensure the domain ids
21790         are kept small, so they can be used as indexes to domain-specific data
21791         with a small memory overhead.
21792
21793 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
21794
21795         * icall.c: Handle byref types in Type icalls. Fixes #72544.
21796
21797 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
21798
21799         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
21800
21801 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
21802
21803         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
21804
21805         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
21806         values.
21807
21808         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
21809         
21810 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
21811
21812         * domain-internals.h: add the hashtable here.
21813
21814         * class-internals.h: Remove `info' from MonoMethod
21815
21816         * domain.c: Add a new hashtable, jit_trampoline_hash
21817
21818 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
21819
21820         * object.c: don't set the value of static fields
21821         (fixes bug#72494).
21822
21823 2005-02-11  Martin Baulig  <martin@ximian.com>
21824
21825         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
21826         (mono_debug_add_method): Silently ignore the method if it's too big.
21827         (mono_debug_add_type): Likewise.
21828
21829 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
21830
21831         * threads.c, appdomain.c: remove #ifdefs from the code.
21832
21833 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
21834
21835         * metadata-internals.h: Added flags to MonoAssembly to cache the most
21836         common security informations. This allows us to stay in unmanaged code
21837         when doing LinkDemand and it's special cases (except for the first 
21838         time for initialization). The flags a very much used with --security.
21839         * reflection.c|h: Added code to get declarative security attributes 
21840         for LinkDemand and InheritanceDemand. This required to refactor the
21841         existing code for Demand.
21842         * security-manager.c|h: Added new method fields for the special cases
21843         of LinkDemand.
21844
21845 2005-02-10  Martin Baulig  <martin@ximian.com>
21846
21847         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
21848         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
21849
21850 2005-02-10  Martin Baulig  <martin@ximian.com>
21851
21852         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
21853         debugging code; this is almost a complete rewrite.
21854
21855         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
21856
21857 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
21858
21859         * domain.c, object.h: expose mono_string_equal () and 
21860         mono_string_hash ().
21861         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
21862         it's implemented in managed code.
21863
21864 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
21865
21866         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
21867         lo leak objects between appdomains.
21868
21869 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
21870
21871         * assembly.c: old compilers compilation fix from 
21872         robertj@gmx.net (Robert Jordan).
21873
21874 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
21875
21876         * class-internals.h: Little reminder for the future.
21877
21878         * debug-helpers.c: Fix up wrapper_type_names
21879
21880 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
21881
21882         * image.c, metadata-internals.h: when loading an image from a file,
21883         mmap all of it and use the same codepaths as when using a
21884         in-memory image: the code is simpler and we use less memory
21885         (both writable and readonly).
21886
21887 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
21888
21889         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
21890         API to alloc runtime data structures that need to be tracked by the
21891         GC and contain pointers.
21892         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
21893         make the code more readable and eventually use a different GC.
21894
21895 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
21896
21897         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
21898         for out arguments.
21899         
21900 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
21901
21902         * object.c: In release_type_locks(), don't release the cctor lock
21903         if it has already been released. This fixes a crash in the
21904         thread5 test.
21905
21906 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
21907
21908         * gc.c, marshal.c, icall.c: register a delegate for finalization
21909         only when the native function pointer has been allocated for it.
21910
21911 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
21912
21913         * object.c: cleaned up some code, allocate objects that are
21914         pointer free with the atomic malloc variant. Allocate memory
21915         for static data from the mempool if it's pointer-free.
21916         Allocate the bounds array at the end of the array data, when needed.
21917         * object-internals.h, object.h: move a private function in a private
21918         header.
21919         * class.c: handle missing case in tracking references in fields.
21920
21921 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
21922
21923         * class.c, class-internals.h: keep track if a type has
21924         reference fields in either the instance or static fields.
21925
21926 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
21927
21928         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
21929         and renamed to MonoRuntimeInfo. Added fields to store the expected
21930         framework assembly version. Changed mono_get_framework_version and
21931         mono_get_runtime_version for a single mono_get_runtime_info method.
21932         
21933         * assembly.c: Added method to remap system assembly versions to the
21934         current executing runtime version. Removed old mapping code.
21935         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
21936         
21937         * icall.c, reflection.c: Track api changes.
21938
21939 2005-02-06  Miguel de Icaza  <miguel@novell.com>
21940
21941         * loader.c (method_from_memberref): Improve error reporting,
21942         produce the class name instead of the typeref/typedef index. 
21943
21944 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
21945
21946         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
21947
21948 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
21949
21950         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
21951         stdcall and charset name mangling.  Reorganize the code and add
21952         some tracing stuff.
21953
21954 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
21955
21956         * monodiet.c: More iters!
21957
21958         * marshal.c: Iter usage.
21959
21960         * icall.c: Iter usage.
21961
21962         * object.c: Use iters.
21963
21964         * debug-helpers.c: More iters
21965
21966 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
21967
21968         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
21969         under win32.
21970
21971 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
21972
21973         * mono-debug-debugger.c: use iters
21974
21975         * class.c, class-internals.h: mono_class_setup_events is static
21976         now
21977
21978         * All callers: use iters
21979
21980 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
21981
21982         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
21983         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
21984
21985 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
21986
21987         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
21988
21989         * marshal.h: Add prototypes for ldfld/stfld_remote.
21990
21991         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
21992         this is called during startup.
21993         
21994 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
21995
21996         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
21997         MonoThreadsSync struct private in monitor.c. Changed the way
21998         MonoThreadsSync is allocated so it's faster and there is no
21999         need to keep track of it with a finalizer and it uses less memory.
22000         This also finally allows us to allocate mono objects as ptrfree when
22001         there are no reference fields.
22002
22003 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
22004
22005         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
22006         disappearing link to the GC interface and use them to simplify
22007         the gchandles code.
22008
22009 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
22010
22011         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
22012         stfld_remote which call mono_load/store_field_new. This allows methods
22013         calling ldfld/stfld wrappers to be AOTed.
22014
22015         * console-io.c: Include sys/filio.h under solaris.
22016         
22017         * console-io.c: Include curses.h if needed correctly.
22018
22019 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
22020         
22021         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
22022         method->klass as well.
22023
22024         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
22025
22026         * class.c (mono_class_init): Switch on lazy initialization of 
22027         methods.
22028
22029         * class.c (mono_class_get_finalizer): Handle the case when the 
22030         finalizer is inherited.
22031
22032 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22033
22034         * console-io.c: <curses.h> is needed by term.h on solaris.
22035
22036 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
22037
22038         * icall.c, class-internals.h, monodiet.c, class.c: Remove
22039         mono_class_setup_properties where possible. Remove this ftn from
22040         the header file, and make it static.
22041
22042 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
22043
22044         * loader.c: Add missing setup_... call.
22045
22046         * class.c: Add missing setup_... calls.
22047
22048         * class.c (mono_class_init): Switch on lazy initialization of 
22049         the generic vtable.
22050         
22051         * class.c (mono_class_init): Fix generics broken by the recent changes.
22052
22053         * monodiet.c (handle_type): Add missing setup_... calls.
22054
22055         * class.c: Back out garbage in previous patch.
22056         
22057         * class.c: Add missing setup_... calls.
22058
22059         * class.c (mono_class_get_method_from_name_flags): Avoid calling
22060         mono_class_setup_methods () if possible.
22061
22062         * class-internals.h (MonoClass): Add 'has_cctor' flag.
22063
22064         * class-internals.h (MonoCachedClassInfo): New structure.
22065
22066         * class.c: Initialize properties and events fields of MonoClass lazily.
22067
22068         * class.c: Add infrastructure for lazily initializing the methods and
22069         vtable fields of MonoClass. Not yet used.
22070
22071         * class.c (mono_class_get_finalizer): New helper function.
22072
22073         * class.c: Add infrastructure for loading some class related data from
22074         an AOT file.
22075
22076         * object.c: Add infrastructure for initializing the vtable from data
22077         in the AOT file.
22078
22079         * gc.c (run_finalize): Use mono_class_get_finalizer ().
22080
22081         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
22082         appropriate initialization function before accessing parts of the
22083         MonoClass structure.
22084
22085         * marshal.c: Fix warnings.
22086         
22087         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
22088
22089         * mono-debug-debugger.c (get_exception_message): Use 
22090         mono_class_get_method_from_name_flags ().
22091
22092 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
22093
22094         * reflection.c, appdomain.c: Replace a few manual searches that
22095         Zoltan missed. (Paolo approved this part of my initial patch).
22096
22097 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
22098
22099         * profiler.c: disable recording statistical events at report time.
22100
22101 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
22102
22103         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
22104         to byteswap arrays of enum values, too (bug #72080).
22105
22106 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
22107
22108         * appdomain.c (set_domain_search_path): Allow this to be called if
22109         domain->setup is not yet set.
22110
22111         * loader.c (mono_method_get_index): New helper function.
22112
22113         * loader.c reflection.c: Use mono_method_get_index ().
22114
22115         * class.c (mono_class_get_method_from_name_flags): New helper method.
22116
22117         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
22118         this.
22119
22120         * class.c (mono_class_get_cctor): New helper method.
22121
22122         * string-icalls.c object.c class.c marshal.c reflection.c: Use
22123         mono_class_get_method () to look up methods.
22124
22125 2005-02-01  Miguel de Icaza  <miguel@novell.com>
22126
22127         * console-io.c: Fix the build, this should work on Windows.
22128
22129 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
22130
22131         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
22132         be set to null to keep things valid
22133
22134 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22135
22136         * icall.c: added Console 2.0 icalls.
22137         * Makefile.am: added console-io.[ch]
22138         * console-io.[ch]: internal calls for Console 2.0 API.
22139
22140 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
22141
22142         * class.c: make sure we consider all the interfaces
22143         when calculating max_interface_id (bug found by
22144         Jeroen Frijters running ikvm).
22145
22146 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
22147
22148         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
22149         valuetype fields to null.
22150
22151         * object.c (set_value): Ditto. Fixes #71669.    
22152
22153 2005-01-31  Martin Baulig  <martin@ximian.com>
22154
22155         * metadata.c (mono_metadata_has_generic_params): New public
22156         function; checks whether something is a generic method.
22157
22158 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
22159
22160         * appdomain.c: fix infinite recursion when adding assemblies.
22161
22162 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
22163
22164         * object.c: Fix small typo to return all items for Environment.
22165         GetCommandLineArgs.
22166
22167 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
22168
22169         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
22170         reflection.c: more domain and assembly-unload related fixes
22171         and memory leaks plugs.
22172
22173 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * 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.
22176
22177 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
22178
22179         * loader.c (mono_method_signature): Make this method lazy
22180         (mono_get_method_from_token): Don't computate the signature here.
22181
22182         Doing this saves quite a bit of memory. I got 90 kb on starting up
22183         monodoc. It should also save some disk reads on startup.
22184
22185         * *: MonoMethod->signature might be NULL now. You *MUST* use
22186         mono_method_signature.
22187
22188 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
22189
22190         * object.c (mono_runtime_get_main_args): Return an array from the
22191         current domain here. Fixes #71938.
22192
22193 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
22194
22195         * monitor.c: formatting changes to comply with the
22196         mono coding style and remove #ifdefs from the code.
22197
22198 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
22199
22200         * metadata.c, private.h: remove some unneeded data
22201         and use a more compact representation for table schemas.
22202
22203 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
22204
22205         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
22206         to get a better distribution in hash tables.
22207         * *.c: use mono_aligned_addr_hash() where appropriate.
22208         * assembly.c: make var static.
22209
22210 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
22211
22212         * domain-internals.h: Put MonoJitInfo on a diet.
22213
22214         * domain.c: Fix a warning.
22215
22216 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
22217
22218         * gc.c: rework the gc handles code to reuse handles
22219         when freed.
22220
22221 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
22222
22223         * domain.c: fixed long standing bug in mono_string_equal() which
22224         was brought to light with the ldstr changes.
22225
22226 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
22227
22228         * reflection.c: Remove warning by adding missing include for marshal.h
22229
22230 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
22231
22232         * domain.c, object.c: change the ldstr_table to hold
22233         MonoString* as keys: makes the runtime isinterned lookup
22234         faster and simplifies memory management.
22235
22236 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
22237  
22238         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
22239         possible to add imperative security checks before calling the icall.
22240         * reflection.c: Return security attributes on the original MonoMethod
22241         (and not the wrapped one). This fix permissions on icalls.
22242
22243 2005-01-25  Dick Porter  <dick@ximian.com>
22244
22245         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
22246         the check for mktime() support actually test the mktime() return
22247         value.  "Fixes" bug 71682, though the output is still different to
22248         MS.
22249
22250 2005-01-25  Martin Baulig  <martin@ximian.com>
22251
22252         * class.c (mono_class_is_assignable_from): Make this work for
22253         generic instances.
22254
22255 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
22256
22257         * marshal.c (mono_string_utf8_to_builder)
22258         (mono_string_builder_to_utf16): We might not have ownership of the
22259         string. In thise case, we need to create a new buffer.
22260
22261         * object-internals.h (mono_stringbuilder_capacity): sb->str might
22262         be null, in which case, use the default capacity.
22263
22264 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
22265
22266         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
22267         GC events to the profiler.
22268
22269 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
22270
22271         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
22272         if you don't want the GC to run.
22273
22274 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
22275
22276         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
22277         start providing a GC API and keeping different implementations in
22278         their own file.
22279         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
22280
22281 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
22282
22283         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
22284         mmap rather than allocating a huge buffer.
22285         (mono_debug_close_mono_symbol_file): Free the buffer allocated
22286         above.
22287
22288 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
22289
22290         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
22291         and CheckExecutionRights.
22292         * reflection.c|h: Keep the index of the declarative security to be 
22293         used, instead of the pointer, when AOT compiler is used. Also add 
22294         class initialization when requesting demands.
22295         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
22296         CheckExecutionRights. Both properties are now FALSE by default, and
22297         unmodifiable, unless the --security option is used.
22298
22299 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
22300
22301         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
22302         reflection.c: properly refcount images and assemblies, many leaks fixed.
22303
22304 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22305
22306         * threadpool.c: increase the timeout for threads in the thread pool to
22307         10s.  Fixes bug #67159.
22308
22309 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
22310
22311         * class-internals.h: Sun's compiler insists on explicit
22312         signed on bit fields to handle then correctly.
22313
22314 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
22315
22316         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
22317         Make the size of the array fit only the number of invalid path
22318         chars that we have.
22319
22320         * class.c (_mono_class_get): Improve the error reporting when a
22321         class referenced is not found, to assist debugging. 
22322
22323 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
22324
22325         * threads.c: fix off-by-one error.
22326         * domain.c: free data allocated in the domain.
22327
22328 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
22329
22330         * reflection.c (mono_method_body_get_object): Fill out exception info
22331         as well.
22332
22333         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
22334         structure.
22335         
22336 2005-01-19  Martin Baulig  <martin@ximian.com>
22337
22338         * loader.c (mono_get_method_constrained): Make this work again.
22339
22340 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
22341
22342         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
22343         guint16 to match the managed side.
22344
22345         * reflection.c (mono_reflection_body_get_object): Fill out local
22346         variables array.
22347
22348         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
22349         as well.
22350
22351         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
22352         'local_var_sig_token'.
22353
22354 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
22355
22356         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
22357         System.Drawing.
22358
22359         * reflection.c (mono_method_body_get_object): Handle abstract and
22360         runtime methods.
22361
22362 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
22363
22364         * marshal.c, loader.c, class-internals.h, reflection.c:
22365         store the emthod data for a wrapper in an array instead of a list.
22366
22367 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
22368
22369         * marshal.c: change the code to allocate memory more
22370         conservatively for method wrappers.
22371
22372 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
22373
22374         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
22375         fields from MonoClass to the marshal info structure where they belong.
22376
22377 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
22378
22379         * class.c, object.c, class-internals.h, marshal.c: rearrange
22380         some fields and tweak some types to lower memory usage.
22381
22382 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
22383
22384         * threads.c (signal_thread_state_change): Handle the case when the
22385         target thread is the current thread.
22386
22387         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
22388
22389         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
22390         emit_ptr_to_object_conv. 
22391
22392         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
22393         marshalling. Fixes #71352.
22394
22395 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
22396
22397         * metadata.h, blob.h: move table enum to blob.h so it can be included
22398         in any header.
22399         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
22400         cut the size of MonoImage/MonoDynamicImage.
22401
22402 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
22403
22404         * profiler.c (mono_profiler_install_simple): Fix default arguments.
22405
22406 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
22407
22408         * reflection.c, reflection.h, icall.c: add a function to check
22409         if an attribute type is defined for a metadata object.
22410
22411 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
22412
22413         * object-internals.h: Added some needed fields from StringBuilder class.
22414         * marshal.c: Set the maxCapacity when creating a StringBuilder.
22415
22416 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
22417
22418         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
22419         threads before shutting down the runtime.
22420
22421         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
22422
22423 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
22424
22425         * object-internal.h, threads.c: implement stacksize and 
22426         parameterized thread start functionality (requires
22427         matching corlib). Marked broken code for later removal.
22428
22429 2005-01-12  Martin Baulig  <martin@ximian.com>
22430
22431         * class-internals.h (MonoGenericClass): Moved the `initialized'
22432         flag to MonoDynamicGenericClass, removed `init_pending'.
22433         (MonoGenericInst): Added `is_reference' flag.
22434
22435 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
22436
22437         * reflection.c (mono_image_create_pefile): Only set the pe_offset
22438         inside the MSDOS header. Fixes #71201.
22439
22440         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
22441         gc thread.
22442         (mono_domain_finalize): Ditto.
22443
22444 2005-01-12  Martin Baulig  <martin@ximian.com>
22445
22446         * class.c (mono_get_shared_generic_class): Use the cache for
22447         non-dynamic generic classes.
22448
22449         * class-internals.h (mono_class_create_generic_2): Removed
22450         function prototype, this function is now static inside class.c.
22451
22452         * class.c (mono_class_create_generic_2): Made this static, only
22453         call it from mono_class_init() and mono_class_setup_parent().
22454         (collect_implemented_interfaces_aux): Call mono_class_init() on
22455         the interfaces we collect.
22456         (mono_class_setup_vtable): Call mono_class_init (class->parent).
22457
22458 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
22459
22460         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
22461         it a real thread handle.
22462
22463         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
22464         MonoJitExceptionInfo, since each catch clause needs its own variable.
22465         
22466 2005-01-11  Dick Porter  <dick@ximian.com>
22467
22468         * image.c (mono_pe_file_open): New variant on mono_image_open()
22469         that does not set up the CLI metadata; used for FileVersionInfo so
22470         it can get the data for windows binaries too.
22471         
22472         * process.c (process_read_string_block): Don't read off the end of
22473         the StringTable block.
22474
22475         These both fix bug 70766.
22476
22477 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
22478
22479         * gc.c: set some fields to NULL at GC cleanup time.
22480         * threads.c: if we quit the main thread, call exit ().
22481
22482 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
22483
22484         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
22485
22486 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
22487
22488         * threads.h, threads.c, object.c: added accessor and settor for
22489         main_thread. Handle it specially when exiting from it: wait
22490         for other foreground threads to exit.
22491
22492 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
22493
22494         * process.c, verify.c: remove some bloat.
22495
22496 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
22497
22498         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
22499         the calling convention to cdecl under win32.
22500
22501 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
22502
22503         * object.c (mono_object_get_size): New function to get the size of
22504         an object instance.
22505
22506         * profiler.c (simple_allocation): Use above.
22507
22508 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
22509
22510         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
22511         ves_icall_System_AppDomain_getRootDomain (as it's not required to
22512         get an appdomain by it's id and we can't assume the root's id is 0).
22513         * domain-internals.h: Change the function prototype to match.
22514         * icall.c: Change the icall table for AppDomain.
22515
22516 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
22517
22518         * locales.c (string_invariant_compare_char): Only compute
22519         GUnicodeTypes in the case where we need them.  Test for ordinality
22520         first and return if so.
22521
22522         From the commit:
22523
22524                 /*
22525                  * FIXME: here we must use the information from c1type and c2type
22526                  * to find out the proper collation, even on the InvariantCulture, the
22527                  * sorting is not done by computing the unicode values, but their
22528                  * actual sort order.
22529                  */
22530
22531 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
22532
22533         * loader.c: for P/Invoke methods, allow the "Internal" shared
22534         library name to refer to the calling process symbol namespace.
22535
22536 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
22537
22538         * Makefile.am: Add the security manager to the build.
22539         * security-manager.c|h: New. Initialization of the security manager.
22540
22541 2005-01-07  Dick Porter  <dick@ximian.com>
22542
22543         * threads.c: 
22544         * monitor.c: Update thread state during Monitor and WaitHandle
22545         waits.  Fixes bug 71031.
22546
22547 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
22548
22549         * reflection.c (property_encode_signature): Correctly handle when the
22550         property has no methods.
22551
22552 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
22553
22554         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
22555         
22556         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
22557         fields from mb, not rmb. Fixes #71017.
22558
22559         * marshal.c (emit_ptr_to_str_conv): Add support for 
22560         ByValTStr -> string conversion. Fixes #71015.
22561
22562         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
22563
22564         * mempool.c (mono_mempool_contains_addr): New helper function.
22565
22566 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
22567
22568         * metadata.c (mono_metadata_compute_size): Fix size calculation of
22569         HasSematics encoded fields.
22570         
22571         * metadata.c (mono_type_to_unmanaged): Improve error message for 
22572         invalid string marshalling.
22573
22574         * metadata.c: Fix warnings.
22575         
22576 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
22577
22578         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
22579         profiler support.
22580
22581 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
22582
22583         * domain.c object.c domain-internals.h: Revert part of r38077 since the
22584         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
22585         tests.
22586
22587 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
22588
22589         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
22590         so methods containing these can be AOTed.
22591
22592 2005-01-03  Martin Baulig  <martin@ximian.com>
22593
22594         * loader.c (find_method): Removed the hack for generic instances.
22595         (method_from_memberref): If our parent is a generic instance, pass
22596         its generic type definition to find_method() and then inflate the
22597         method.
22598         (mono_get_method_constrained): Pass the generic type definition to
22599         find_method() and inflate the method later.
22600
22601         * class-internals.h (MonoStats): Added `generic_class_count'.
22602
22603         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
22604         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
22605
22606         * reflection.c (mono_custom_attrs_from_params): Don't ignore
22607         generic type definitions.
22608
22609 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
22610
22611         * loader.c icall.c: Fix warnings.
22612
22613 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
22614
22615         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
22616         blittable types. Fixes #70864.
22617
22618 2004-12-29  Martin Baulig  <martin@ximian.com>
22619
22620         * icall.c
22621         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
22622
22623         * reflection.c (mono_method_get_object): Create a
22624         "System.Reflection.MonoGenericMethod" for inflated methods; don't
22625         call mono_get_inflated_method().
22626
22627         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
22628
22629 2004-12-27  Martin Baulig  <martin@ximian.com>
22630
22631         * class-internals.h (MonoMethod): Added `is_inflated' flag.
22632         (MonoMethodInflated): Added `inflated' field.
22633
22634         * class.c (mono_class_inflate_generic_method): Don't really
22635         inflate the method here; just set the `is_inflated' flag in the
22636         MonoMethod.
22637         (mono_class_get_inflated_method): Actually inflate the method here
22638         if it's not already inflated; we use the MonoMethodInflated's new
22639         `inflated' field as a cache.
22640
22641 2004-12-26  Martin Baulig  <martin@ximian.com>
22642
22643         * class.c
22644         (inflate_generic_class): Moved some code out of inflate_generic_type().
22645         (mono_class_inflate_generic_method): If we're already inflated,
22646         inflate the context and use the declaring method; ie. make sure
22647         the declaring method of an inflated method is always the generic
22648         method definition.
22649         (mono_class_create_from_typedef): Create
22650         `class->generic_container->context->gclass'.
22651
22652 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
22653
22654         * metadata-internals.h, marshal.c, reflection.c: More
22655         MonoGHashTable->GHashTable.
22656
22657         * domain-internals.h, class.c: Change MonoGHashTable's into
22658         GHashTables for some cases where no gc stuff is used
22659
22660         All users: update apis
22661
22662 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
22663
22664         * metadata.c (builtin_types): Make this `const'. Makes this get
22665         put into the shareable section.
22666         (mono_metadata_init): Casts to make gcc happy.
22667
22668 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
22669
22670         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
22671
22672 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
22673
22674         * icall.c: Added an internal call to retrieve the position and length
22675         of assembly-level declarative security attributes (RequestMinimum, 
22676         RequestOptional and RequestRefuse). This is used by the Assembly class
22677         to re-create the corresponding permission sets.
22678
22679 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
22680
22681         * marshal.c: fix the stelemref wrapper to be type correct
22682         (and faster).
22683
22684 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
22685
22686         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
22687         to do key & 0x7fffffff. Hashtable already does this. It just
22688         results in longer code.
22689
22690 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
22691
22692         * appdomain.c: Bump corlib version.
22693         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
22694         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
22695         * reflection.c|h: Add functions to get declarative security infos
22696         (blob position and length) for assemblies, classes and methods.
22697
22698 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
22699
22700         * reflection.c: sort the constant table (bug #70693).
22701
22702 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
22703
22704         * object-internals.h, threads.c, domain.c: add accessors for
22705         the MonoThread and MonoDomain tls keys.
22706
22707 2004-12-18  Martin Baulig  <martin@ximian.com>
22708
22709         * class.c (inflate_generic_type): If we're inflating a generic
22710         instance, set `ngclass->context->container = context->container';
22711         ie. the container we inflated into.
22712
22713         * metadata.c (mono_metadata_parse_generic_param): Reflect above
22714         inflate_generic_type() changes.
22715
22716 2004-12-17  Martin Baulig  <martin@ximian.com>
22717
22718         * class-internals.h
22719         (MonoGenericClass): Replaced `MonoType *generic_type' with
22720         `MonoClass *generic_class'.  Removed `dynamic_info'; if
22721         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
22722         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
22723
22724 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
22725
22726         * exception.c (mono_exception_from_token): New helper function.
22727
22728 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
22729
22730         * assembly.c (mono_assembly_load_with_partial_name): Call 
22731         mono_assembly_loaded before invoking the preload hooks. Fixes
22732         #70564.
22733
22734         * object-internals.h (MonoThread): Change culture_info and 
22735         ui_culture_info into an array.
22736
22737         * threads.c: Cache culture info objects from more than one appdomain.
22738
22739         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
22740         current UI culture.
22741
22742 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
22743
22744         * threads.h threads.c appdomain.c: Clear the culture_info field of
22745         all threads during unloading if they point to an object in the dying
22746         appdomain.
22747
22748 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
22749
22750         * culture-info.h (TextInfoEntry): New struct
22751         * object-internals.h: sync with managed
22752         * locales.c: fill the `text_info_data' field
22753         * culture-info-tables.h: update
22754
22755 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22756
22757         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
22758         collector.
22759
22760 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
22761
22762         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
22763         (ves_icall_ModuleBuilder_getMethodToken): Ditto
22764
22765 2004-12-12  Martin Baulig  <martin@ximian.com>
22766
22767         * mono-debug-debugger.c (write_type): If we're an enum and the
22768         builtin types have already been initialized, call mono_class_init().
22769
22770 2004-12-11  Martin Baulig  <martin@ximian.com>
22771
22772         * metadata.c (mono_metadata_load_generic_params): Added
22773         `MonoGenericContainer *parent_container' argument; automatically
22774         compute `container->is_method'; pass the correct owner to
22775         get_constraints().      
22776
22777         * reflection.c (compare_genericparam): Sort the GenericParam table
22778         according to increasing owners. 
22779
22780 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
22781
22782         * profiler.c: allow disabling the default profiler.
22783
22784 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
22785
22786         * decimal.c, icall.c: allow disabling System.Decimal support.
22787
22788 2004-12-09  Marek Safar <marek.safar@seznam.cz>
22789
22790         * reflection.c: Add support for null attribute arguments.
22791
22792 2004-12-09  Martin Baulig  <martin@ximian.com>
22793
22794         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
22795         names to get rid of compiler warnings.
22796
22797 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
22798
22799         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
22800         mono_marshal_load_type_info (). Fixes #69625.
22801         (mono_marshal_get_ptr_to_struct): Likewise.
22802
22803 2004-12-08  Martin Baulig  <martin@ximian.com>
22804
22805         * mono-debug.h: Bumped version number to 47.
22806
22807         * mono-debug-debugger.c
22808         (mono_debugger_event_handler, mono_debugger_event): Take two
22809         guint64 arguments insteed of a gpointer and a guint32.  
22810
22811 2004-12-08  Martin Baulig  <martin@ximian.com>
22812
22813         * debug-mono-symfile.h
22814         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
22815         `address' to `native_offset'.
22816
22817 2004-12-08  Martin Baulig  <martin@ximian.com>
22818
22819         * class.c (mono_class_create_from_typespec): Only inflate if we
22820         either have `context->gclass' or `context->gmethod'.
22821
22822 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
22823
22824         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
22825
22826         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
22827
22828         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
22829
22830         * reflection.c (mono_assembly_get_object): Remove the workaround put
22831         in for the release.
22832         
22833         * appdomain.c: Use the corlib_internal field from MonoAssembly.
22834
22835         * appdomain.c: Bump corlib version.
22836
22837         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
22838         be visible in other appdomains.
22839
22840 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
22841
22842         * threads.c: Interlocked inc and dec for longs were messed up,
22843         use a KISS based impl for this. Fixes 70234
22844
22845 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
22846
22847         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
22848
22849 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
22850
22851         * icall.c: fix to follow policy not to allow struct
22852         arguments in icalls.
22853
22854 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22855
22856         * process.c: make the patch that handles spaces in file paths work
22857         on mono/windows too.
22858
22859 2004-12-06  Martin Baulig  <martin@ximian.com>
22860
22861         * class.c (mono_class_create_generic): Call
22862         mono_class_setup_supertypes() if we're dynamic.
22863         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
22864
22865 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
22866
22867         * object-internals.h: Add new fields to MonoThread.
22868
22869         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22870
22871         * icall.c threads-types.h threads.c: Add new icalls.
22872
22873         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
22874
22875         * object-internals.h (MonoReflectionAssembly): Sync object layout with
22876         managed side.
22877
22878         * appdomain.c: Bump corlib version.
22879
22880         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
22881         internal assemblies. Fixes #69181.
22882
22883 2004-12-05  Martin Baulig  <martin@ximian.com>
22884
22885         * class.c (mono_class_inflate_generic_signature): Make this a
22886         no-op if `context' is NULL or we don't have any type parameters;
22887         also copy `sentinelpos'.        
22888
22889 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
22890
22891         * image.c: Add unbox_wrapper_cache.
22892
22893         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
22894
22895         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
22896         function generator.
22897         
22898         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
22899         Fixes #70173.
22900
22901         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
22902         
22903 2004-12-04  Martin Baulig  <martin@ximian.com>
22904
22905         * loader.c (mono_method_get_signature_full): New public function;
22906         like mono_method_get_signature(), but with an additional
22907         `MonoGenericContext *' argument.
22908
22909         * class.c (mono_class_inflate_generic_signature): Formerly known
22910         as inflate_generic_signature(); make this public.
22911
22912 2004-12-04  Martin Baulig  <martin@ximian.com>
22913
22914         * metadata.c
22915         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
22916         instead of a `MonoGenericContainer *'.  
22917         (mono_metadata_parse_array_full): Likewise.
22918         (mono_metadata_parse_signature_full): Likewise.
22919         (mono_metadata_parse_method_signature_full): Likewise.
22920         (mono_metadata_parse_generic_inst): Likewise.
22921         (mono_metadata_parse_generic_param): Likewise.
22922         (mono_metadata_parse_mh_full): Likewise.
22923         (mono_type_create_from_typespec_full): Likewise.
22924
22925 2004-12-03  Martin Baulig  <martin@ximian.com>
22926
22927         * class-internals.h (MonoGenericContainer): Replaced the
22928         `MonoGenericContext * pointer with a `MonoGenericContext'
22929         structure and made it the first element.
22930
22931 2004-12-03  Martin Baulig  <martin@ximian.com>
22932
22933         * class.c
22934         (inflate_generic_type): Set the `context->container' when creating
22935         a new MonoGenericContext.
22936         (mono_class_inflate_generic_method): Likewise.
22937         (mono_class_create_from_typespec): Just use `context->container'
22938         to get the container.
22939
22940         * loader.c (method_from_methodspec): Set `context->parent' from
22941         `context->container' - and if that's a method container, use its
22942         parent.  Also set the `context->container' when creating a new
22943         MonoGenericContext.
22944         (mono_get_method_from_token): Use just `context->container' to get
22945         the container.
22946
22947         * metadata.c (do_mono_metadata_parse_generic_class): Also set
22948         `gclass->context->container'.
22949
22950         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
22951         the `context->container' when creating a new MonoGenericContext.
22952
22953 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
22954
22955         * reflection.c (compare_genericparam): Sort params with identical
22956         owner by their number. Fixes gen-111 on sparc.
22957
22958 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
22959
22960         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
22961         around the domain changes.
22962
22963         * appdomain.c (mono_domain_unload): Handle the case when the thread
22964         calling Unload is itself being aborted during unloading. Fixes #70022.
22965
22966         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
22967
22968         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
22969         checkpoint_func as an icall so it gets a wrapper.
22970         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
22971         in the cross-appdomain wrappers too.
22972
22973         * threads.c (mono_thread_has_appdomain_ref): Make this public.
22974
22975         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
22976
22977         * reflection.c: Fix some memory leaks.
22978         
22979 2004-12-02  Martin Baulig  <martin@ximian.com>
22980
22981         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
22982
22983         * metadata.c (generic_class_cache): New static hashtable.
22984         (mono_metadata_lookup_generic_class): New public method.
22985
22986 2004-12-02  Martin Baulig  <martin@ximian.com>
22987
22988         * class.c (mono_class_create_from_typedef): Call
22989         mono_class_setup_parent() and mono_class_create_mono_type() before
22990         parsing the interfaces.
22991
22992 2004-12-02  Martin Baulig  <martin@ximian.com>
22993
22994         * metadata.c (generic_inst_cache): New static hashtable.
22995         (mono_metadata_lookup_generic_inst): New public function.
22996         (mono_metadata_inflate_generic_inst): New public function.
22997         (mono_metadata_parse_generic_inst): New public function.
22998         (do_mono_metadata_parse_generic_class): Use the new
22999         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
23000         since this'll also use the cache.
23001
23002         * reflection.c (mono_reflection_bind_generic_method_parameters):
23003         Use mono_metadata_lookup_generic_inst() to use the new cache.
23004
23005         * class.c (inflate_mono_type): Use
23006         mono_metadata_inflate_generic_inst() to inflate a generic
23007         instance; this'll also use the new cache.
23008
23009         * loader.c (method_from_methodspec): Use
23010         mono_metadata_parse_generic_inst() and
23011         mono_metadata_inflate_generic_inst() rather than parsing it
23012         manually, so we can use the new cache.
23013
23014 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
23015
23016         * threads.c (wait_for_tids): Do not incorrectly free threads when 
23017         the wait times out.
23018
23019 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
23020
23021         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
23022         iter->args based on whether parameters are passed in registers (i.e.
23023         MONO_ARCH_REGPARMS is defined)
23024
23025 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
23026
23027         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
23028         the exception message. Fixes #70070.
23029         (method_from_methodspec): Fix warnings.
23030
23031 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23032
23033         * process.c: (complete_path) return the path quoted
23034
23035 2004-12-01  Martin Baulig  <martin@ximian.com>
23036
23037         * class-internals.h (MonoGenericInst): New structure.
23038         (MonoGenericClass): Replaced `type_argc', `type_argv' and
23039         `is_open' with `MonoGenericInst *inst'.
23040         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
23041         `is_open' with `MonoGenericInst *inst'.
23042
23043 2004-11-30  Martin Baulig  <martin@ximian.com>
23044
23045         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
23046
23047         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
23048         to `generic_class_cache'.
23049
23050         * metadata.c
23051         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
23052         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
23053         (mono_generic_inst_is_valuetype): Renamed to
23054         mono_generic_class_is_valuetype().
23055
23056         * class-internals.h
23057         (MonoGenericInst): Renamed to MonoGenericClass.
23058         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
23059         (MonoClass): Renamed `generic_inst' to `generic_class'.
23060         (MonoGenericContext): Renamed `ginst' to `gclass'.
23061
23062         * object-internals.h
23063         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
23064
23065         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
23066         mono_reflection_generic_class_initialize().
23067
23068         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
23069         now known as "System.Reflection.MonoGenericClass".
23070         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
23071
23072 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
23073
23074         * class-internals.h: Added a flag field to MonoClass to cache the
23075         declarative security attributes actions associated with the class.
23076         * domain-internals.h: Added booleans to MonoJitInfo to cache the
23077         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
23078         applicable to the JITted method.
23079         * reflection.c|h: Added functions to extract (as flags) which security
23080         actions are available (declaratively) for a method, class or assembly.
23081         * metadata.c|h: Added functions to search the declarative security
23082         table in the metadata.
23083         
23084 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
23085
23086         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
23087         EXPORTEDTYPES are already in the class name cache, so there is no
23088         need to add extra code here to look at them. Just removes a bit of
23089         cruft.
23090
23091         (ves_icall_System_Environment_get_TickCount): No need for #if
23092         WINDOWS. We already have the code in io-layer.
23093
23094 2004-11-28  Martin Baulig  <martin@ximian.com>
23095
23096         * loader.c
23097         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
23098         Fixes gen-112.cs.
23099
23100 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
23101
23102         * assembly.c (do_mono_assembly_open): Instead of having a
23103         conditional WITH_BUNDLE, incorporate support for bundles here, by
23104         having a global `bundles' variable holding a pointer to the actual
23105         bundles. 
23106
23107         (mono_register_bundled_assemblies): New API call used by the
23108         bundle code. 
23109
23110         See mkbundle.1 for details.
23111         
23112 2004-11-27  Martin Baulig  <martin@ximian.com>
23113
23114         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
23115         the vtable for generic methods.
23116
23117 2004-11-26  Martin Baulig  <martin@ximian.com>
23118
23119         * metadata.c
23120         (mono_metadata_generic_method_hash): New public function.
23121         (mono_metadata_generic_method_equal): Likewise.
23122
23123         * class-internals.h
23124         (MonoGenericContainer): Added `GHashTable *method_hash'.
23125
23126         * reflection.c (ReflectionMethodBuilder): Added
23127         `MonoGenericContainer *generic_container'.
23128         (reflection_methodbuilder_to_mono_method): Don't create a new
23129         MonoGenericContainer each time we're called.
23130         (mono_reflection_bind_generic_method_parameters): Use
23131         `container->method_hash' to cache the results so we don't create a
23132         different method if we're called several times with the same
23133         arguments.
23134
23135         * loader.c (method_from_methodspec): Use the new
23136         `container->method_hash' here, too.
23137
23138 2004-11-26  Martin Baulig  <martin@ximian.com>
23139
23140         * class.c (inflate_generic_signature): Correctly compute
23141         `res->has_type_parameters'.
23142         (mono_class_vtable): Use the `has_type_parameters' flag to
23143         determine whether we're a generic method.
23144
23145         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
23146
23147 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
23148
23149         * object.c (mono_runtime_run_main): Fix a small memory leak.
23150
23151 2004-11-25  Martin Baulig  <martin@ximian.com>
23152
23153         * class.c (set_generic_param_owner): Fixed the loop.
23154
23155 2004-11-25  Martin Baulig  <martin@ximian.com>
23156
23157         * object.c (mono_class_vtable): Don't create any JIT wrappers for
23158         generic methods.
23159
23160 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
23161
23162         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
23163         names. Fixes #69787.
23164
23165 2004-11-24  Martin Baulig  <martin@ximian.com>
23166
23167         * class.c (mono_class_create_generic_2): If we don't have a
23168         `ginst->parent', inflate `gklass->parent' to get our parent.
23169
23170 2004-11-24  Martin Baulig  <martin@ximian.com>
23171
23172         * reflection.c (compare_genericparam): Correctly sort the
23173         GenericParam table; fixes #69779.
23174
23175 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
23176
23177         * reflection.c: When writing a PE file, don't create a huge
23178         buffer in memory. Just write the arrays we have to the file.
23179         This reduces memory usage.
23180
23181         * metadata-internals.h: MonoDynamicStream pefile is no longer used
23182         globally.
23183
23184 2004-11-17  Martin Baulig  <martin@ximian.com>
23185
23186         * class.c (mono_class_init): Don't setup `class->parent' for
23187         dynamic instances; moved this to mono_class_generic_2().
23188         (mono_class_create_generic): Also set `klass->inited' for dynamic
23189         generic instances.
23190         (mono_class_create_generic_2): Don't do anything for dynamic
23191         generic instances.  Set `klass->parent' here and also call
23192         mono_class_setup_parent() here. 
23193
23194         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
23195         `MonoType *parent' argument; set `ginst->parent' before calling
23196         mono_class_create_generic_2(), so we set the correct parent.
23197
23198 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
23199
23200         * reflection.c: allow getting attributes from ModuleBuilder
23201         (used by ikvm).
23202
23203 2004-11-17  Martin Baulig  <martin@ximian.com>
23204
23205         * class.c (mono_class_create_from_typedef): If a type parameter is
23206         inherited from an outer class, set its owner to that class.
23207
23208 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
23209
23210         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
23211           for (int*) written size. This fixes bug #69592.
23212
23213 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
23214
23215         * icall.c: Added IsAuthenticodePresnet internal call.
23216         * image.c|h: New function that check a MonoImage for an Authenticode
23217         signature in the certificate PE data directory.
23218         * security.c|h: New internal call to ask the runtime if an 
23219         Authenticode signature seems referenced in the PE header.
23220
23221 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
23222
23223         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
23224
23225         * reflection.c (mono_image_create_pefile): Free the assembly streams
23226         after writing out the assembly file.
23227
23228         * object.c (mono_runtime_run_main): Fix small memory leak.
23229
23230         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
23231         property access modifiers. Fixes #69389.
23232
23233 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
23234
23235         * domain.c, object.c, object-internals.h, domain-internals.h,
23236         object.h, marshal.c: keep dynamic code info per domain.
23237
23238 2004-11-15  Martin Baulig  <martin@ximian.com>
23239
23240         * class.c (mono_type_get_name_recurse): Put type arguments in
23241         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
23242         see bug #68387.
23243
23244 2004-11-15  Martin Baulig  <martin@ximian.com>
23245
23246         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
23247         (mono_class_setup_vtable): When computing `the_cname' for a
23248         generic instance, don't include the namespace since we'd otherwise
23249         add it twice.
23250
23251 2004-11-15  Martin Baulig  <martin@ximian.com>
23252
23253         * class.c (mono_class_create_generic): Changed return type to void.
23254         (mono_class_create_generic_2): New public function; setup
23255         `class->method', `class->field' and `class->interfaces' here
23256         instead of in mono_class_init().
23257
23258         * class.h (mono_class_create_generic): Moved to class-internals.h.
23259
23260 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
23261
23262         * reflection.c (mono_image_create_pefile): take a file HANDLE.
23263         rather than writing to memory, write to this file. Right now,
23264         we are just writting into a buffer, and copying that. However
23265         we can avoid the buffer later.
23266
23267         (mono_dynamic_stream_reset): new function
23268
23269         * icall.c, object-internals.h: update for the above.
23270
23271 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
23272
23273         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
23274         have been using gc'd memory. First it is slower, unlikely
23275         the comment in the source code said, secondly, it increases
23276         our footprint to do it in the gc.
23277
23278         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
23279         the method so that it does not have to copy to managed code.
23280
23281 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
23282
23283         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
23284
23285 2004-11-12  Martin Baulig  <martin@localhost>
23286
23287         * reflection.c (mono_image_create_token): Allow generic method
23288         definitions here, since they may appear in an `.override'; see
23289         gen-98/gen-99 for an example.
23290
23291 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
23292
23293         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
23294         #69365.
23295
23296         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
23297         descriptive.
23298
23299 2004-11-11  Martin Baulig  <martin@ximian.com>
23300
23301         * class.c (mono_class_setup_vtable): In an explicit interface
23302         implementation, the method name now includes the arity.
23303
23304 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
23305
23306         * object.c (mono_array_full_copy): Fix warning.
23307
23308 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
23309
23310         * appdomain.c: Removed look_for_method_by_name(). Use the new method
23311         mono_class_get_method_from_name() instead.
23312         
23313         * class-internals.h: Added two new types of wrappers. 
23314         Added MonoRemotingTarget enum. Added new trampoline function type, which
23315         takes an additional MonoRemotingTarget value as parameter, so it is
23316         possible to request a trampoline for a specific target.
23317         
23318         * class.c: Added new mono_class_get_method_from_name() method.
23319         
23320         * class.h: In MonoRemoteClass, we can have now to vtables, one for
23321         general remoting sinks and one specific for cross domain calls.
23322         
23323         * debug-helpers.c: Added new wrapper names.
23324         
23325         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
23326         of a remote class.
23327         
23328         * image.c: Porperly delete value objects form the remoting invoke hashtable.
23329         
23330         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
23331         with several other methods (mono_marshal_get_xappdomain_dispatch,
23332         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
23333         and others) can generate a fast remoting wrapper for cross domain calls.
23334         More information can be found in docs/remoting.
23335         Other changes: Removed mono_find_method_by_name, and used
23336         mono_class_get_method_from_name instead.
23337         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
23338         is stored in the remoting invoke hashtable.
23339         
23340         * marshal.h: published the new method for getting the xdomain wrapper,
23341         and also added a method for getting the adequate wrapper for a given
23342         method and target.
23343         
23344         * object-internals.h, object.c: Added a couple of methods for capying and
23345         cloning arrays.
23346         Modified mono_install_remoting_trampoline, which takes the new remoting
23347         trampoline that has a remoting target as parameter.
23348         mono_class_proxy_vtable now also takes a remoting target as parameter, and
23349         will return the most suitable vtable for the target.
23350         Added mono_remote_class_vtable, which returns the vtable of a remote class
23351         (which can be the normal remoting vtable or the xdomain vtable).
23352         
23353         * threads.c: the xdomain invoke and dispatch wrappers must also be
23354         protected against interruptions.
23355
23356 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23357
23358         * icall.c: use memmove in BlockCopyInternal when the source and
23359         destination arrays are the same.
23360
23361 2004-11-09  Martin Baulig  <martin@ximian.com>
23362
23363         * class-internals.h (MonoGenericContainer): Removed `method' and
23364         `signature', replaced them with `is_method' and `is_signature'
23365         flags.  Added `context'.
23366
23367         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
23368         instead of a `MonoGenericContainer *'.
23369
23370         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
23371         for dynamic type parameters.
23372         (mono_metadata_load_generic_params): Setup `container->context'.
23373
23374         * reflection.c (mono_reflection_setup_generic_class): Setup
23375         `tb->generic_container->context'.
23376         (do_mono_reflection_bind_generic_parameters): Use
23377         mono_class_inflate_generic_type() to correctly inflate types,
23378         rather than using our own hack just for MONO_TYPE_VAR.
23379
23380 2004-11-09  Martin Baulig  <martin@ximian.com>
23381
23382         * class.c (mono_class_inflate_generic_method): Small fix; don't
23383         crash here.
23384
23385         * icall.c
23386         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
23387         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
23388         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
23389         (ves_icall_Type_BindGenericParameters): Likewise.
23390         (ves_icall_Type_get_IsGenericInstance): Likewise.
23391         (ves_icall_Type_GetGenericParameterPosition): Likewise.
23392         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
23393         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
23394         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
23395
23396 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
23397
23398         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
23399         assembly versions and public key tokens. Fixes #69113.
23400
23401 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
23402
23403         * metadata.c: fix bug introduced with the type cache changes
23404         on 2004-11-06.
23405
23406 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
23407
23408         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
23409         the MonoClass pointer instead of the token in exception clauses.
23410         * reflection.c: updates for the above and make the code not depend
23411         on the structure of MonoExceptionClause.
23412
23413 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
23414
23415         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
23416         Add support for dynamic assemblies. Fixes #69114.
23417
23418         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
23419
23420 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
23421
23422         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
23423         since most only those methods use it. the code member of
23424         MonoMethodPInvoke was dead, so that can be removed too. Also,
23425         remove inline_count (again, not used), and move slot so that it
23426         can share bits with some other flags. This saves 8 bytes in the
23427         structure and gives us about 50 kb back for mcs helloworld.cs
23428
23429         * *.[ch]: Do naming changes for the above.
23430
23431         * loader.c (mono_method_get_header): Lazily init the header
23432         on first access.
23433         (mono_get_method_from_token): don't init the header here
23434         (mono_free_method): the header may never be allocated
23435
23436         Overall, this saves 150 kb of unmanaged allocations
23437         for mcs helloworld.cs. That accounts for 10% of the unmanaged
23438         memory at runtime.
23439         
23440         * loader.c, loader.h (mono_method_get_header): new accessor.
23441
23442         * *.[ch]: use the above method. Prepares us to lazily load
23443         the header.
23444
23445         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
23446         three warnings, which are actual bugs (see 69206).
23447
23448         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
23449         unused. Saves a cool 4 bytes / method.
23450
23451 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
23452
23453         * metadata.c (builtin_types): Add types for System.Object here.
23454         (mono_metadata_parse_type_full): Cache MonoType*'s that are
23455         for a class or valuetype from klass->this_arg or klass->byval_arg.
23456
23457         On mcs for a hello world, this gets us down from 21836 MonoType's
23458         to 14560.
23459
23460         (mono_metadata_free_type): Account for the above change.
23461
23462 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
23463
23464         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
23465         exception instead of asserting if name is null.
23466         (ves_icall_System_AppDomain_GetData): Ditto.
23467
23468 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
23469
23470         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
23471         EnumBuilder.
23472
23473         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
23474         Return NULL when the domain does not have entry_assembly set.
23475
23476         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
23477         Add a 'resource_modules' argument.
23478         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
23479
23480         * reflection.c (mono_reflection_create_runtime_class): Move setting
23481         of wastypebuilder here, so mono_get_type_object () returns a MonoType
23482         for enums too.
23483
23484         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
23485         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
23486         Throw an ArgumentNullException if 'ptr' is null.
23487
23488         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
23489         assemblies here. Fixes #69020.
23490
23491 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
23492
23493         * reflection.c (build_compressed_metadata): Fix the previous patch for
23494         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
23495         the stack.
23496
23497 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
23498
23499         * assembly.c (mono_assembly_names_equal): Allow a match if one of
23500         the cultures is false. Fixes #69090.
23501
23502         * reflection.c (build_compressed_metadata): Fix invalid memory read 
23503         detected by valgrind.
23504         
23505         * reflection.c (mono_reflection_get_type): Avoid triggering a 
23506         TypeResolve multiple times for the same type. Fixes #65577.
23507
23508 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
23509
23510         * marshal.c: Avoid using ldftn to call managed functions. It is
23511         much slower than just a call.
23512
23513         * reflection.c (mono_module_get_object): free the basename we
23514         allocate here from glib.
23515         
23516         * reflection.c (ensure_runtime_vtable): make sure to free
23517         overrides.  Also, we were allocating an array of MonoMethod not an
23518         array of MonoMethod*.
23519
23520         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
23521
23522         * image.c (mono_image_close): free image->guid here.
23523
23524 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
23525
23526         * reflection.c: Fix some spec conformance issues with the PE file
23527         structures so mcs compiled apps run on the Net 2.0 beta.
23528
23529 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
23530
23531         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
23532         Implement this. Fixes #67264.
23533
23534         * debug-helpers.h debug-helpers.c marshal.c: Move 
23535         mono_find_method_by_name to debug-helpers.c.
23536
23537 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
23538
23539         * object.c (mono_release_type_locks): type_initialization_hash is
23540         a GHashTable.
23541
23542         * reflection.c object.c object-internals.h: Fix warnings.
23543
23544         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
23545         without accessors. Fixes #61561.
23546
23547         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
23548         application base from the root domain if not set. Fixes #65641.
23549         (mono_runtime_init): Fix warning.
23550
23551 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23552
23553         * appdomain.c: call mono_thread_pool_init.
23554         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
23555         of worker threads based on the number of CPUs and the environment
23556         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
23557         for non-windows (windows) systems.
23558
23559 2004-10-27  Chris Toshok  <toshok@ximian.com>
23560
23561         * mono-debug-debugger.c (write_class): don't call mono_class_init
23562         here, as even with the check for (!klass->init_pending), we get
23563         into a situation where we're hitting cycles in class
23564         initialization.  Fixes #68816.
23565
23566 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
23567
23568         * image.c: Avoid overwriting values in the loaded_images_hash when an
23569         assembly is loaded multiple times. Fixes #61152.
23570
23571         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
23572         so multiple satellite assemblies for the same name can be loaded.
23573         Fixes #68259.
23574
23575         * mono_domain_assembly_preload: Actually return the loaded assembly, 
23576         not NULL.
23577
23578         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
23579         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
23580
23581         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
23582         pending finalizers are not invoked after the appdomain has been 
23583         unloaded. Fixes #67862.
23584
23585 2004-10-22  Martin Baulig  <martin@ximian.com>
23586
23587         * mono-debug-debugger.c
23588         (mono_debugger_runtime_invoke): Don't box valuetypes.
23589
23590 2004-10-22  Chris Toshok  <toshok@ximian.com>
23591
23592         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
23593         don't hide private methods.
23594
23595 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
23596
23597         * icall.c: Allows the runtime to "share" (when known) the public key
23598         token of an assembly. This avoid the need to recalculate the token 
23599         (from the public key) in managed code.
23600
23601 2004-10-21  Chris Toshok  <toshok@ximian.com>
23602
23603         * debug-helpers.c (append_class_name): argh, revert last patch.
23604         
23605 2004-10-21  Chris Toshok  <toshok@ximian.com>
23606
23607         * debug-helpers.c (append_class_name): use '+' as the delimiter,
23608         not '/', so that it matches what the debugger uses to look up
23609         methods.
23610
23611 2004-10-21  Martin Baulig  <martin@ximian.com>
23612
23613         * mono-debug-debugger.c (mono_debugger_throw_exception): New
23614         public method; this is called each time an exception is thrown and
23615         allows the debugger to use exception catch points.
23616
23617 2004-10-21  Martin Baulig  <martin@ximian.com>
23618
23619         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
23620         the stack pointer and the exception object in some struct and pass
23621         that to the debugger.
23622
23623 2004-10-21  Chris Toshok  <toshok@ximian.com>
23624
23625         * mono-debug-debugger.c (do_write_class): add instance/static
23626         event support.  We don't expose "raise" or "other" yet.
23627         (event_is_static): new method.
23628
23629 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
23630
23631         * mono-debug-debugger.c
23632         (mono_debugger_handle_exception): Remove
23633         bogus return value for fussy compilers.
23634
23635 2004-10-20  Martin Baulig  <martin@ximian.com>
23636
23637         * mono-debug-debugger.c
23638         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
23639         (mono_debugger_handled_exception): Likewise.
23640
23641 2004-10-20  Martin Baulig  <martin@ximian.com>
23642
23643         * mono-debug-debugger.h (MonoDebuggerEvent): Added
23644         MONO_DEBUGGER_EVENT_EXCEPTION.
23645
23646         * mono-debug-debugger.c (mono_debugger_handle_exception): New
23647         public function to send the debugger a notification for an
23648         exception and inform it about a catch/finally clause.
23649
23650 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
23651
23652         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
23653         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
23654         fix 2.95 build. 
23655
23656         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
23657
23658 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
23659
23660         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
23661         marshalled as [In,Out]. Fixes #58325.
23662
23663 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
23664
23665         * reflection.c (mono_method_body_get_object): Implement some fields.
23666
23667 2004-10-12  Martin Baulig  <martin@ximian.com>
23668
23669         * reflection.c (mono_reflection_bind_generic_parameters): Small
23670         fix, correctly retrieve our parent from a generic instance.
23671
23672 2004-10-12  Martin Baulig  <martin@ximian.com>
23673
23674         * metadata.c (mono_metadata_generic_param_equal): We always have
23675         an owner.
23676
23677         * class.c
23678         (mono_class_from_generic_parameter): We need to have an owner.
23679         (my_mono_class_from_generic_parameter): Likewise.
23680
23681         * reflection.c (mono_reflection_setup_generic_class): Renamed to
23682         mono_reflection_create_generic_class() and added a new
23683         mono_reflection_setup_generic_class().  
23684         (mono_reflection_initialize_generic_param): If we're a nested
23685         generic type and inherited from the containing class, set our
23686         owner to the outer class.
23687
23688 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
23689
23690         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
23691
23692         * reflection.c (mono_method_body_get_object): New function to create
23693         a MethodBody object.
23694
23695         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
23696
23697 2004-10-11  Martin Baulig  <martin@ximian.com>
23698
23699         * metadata.c (_mono_metadata_type_equal): Renamed to
23700         do_mono_metadata_type_equal() and made static.
23701
23702 2004-10-11  Martin Baulig  <martin@ximian.com>
23703
23704         * appdomain.c: Bump corlib version number to 28.
23705
23706 2004-10-10  Martin Baulig  <martin@ximian.com>
23707
23708         * class-internals.h
23709         (MonoGenericInst): Added `MonoGenericContainer *container'.
23710         (MonoGenericMethod): Likewise.
23711         (MonoGenericContext): Likewise.
23712         (MonoGenericParam): Added `MonoGenericContainer *owner'.
23713
23714         * metadata.c
23715         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
23716         (do_mono_metadata_parse_generic_inst): Likewise.
23717         (mono_metadata_parse_type_full): New public method.  This is the actual
23718         mono_metadata_parse_type() implementation - with an additional
23719         `MonoGenericContainer *' argument.
23720         (mono_metadata_parse_array_full): Likewise.
23721         (mono_metadata_parse_signature_full): Likewise.
23722         (mono_metadata_parse_method_signature_full): Likewise.
23723         (mono_metadata_parse_mh_full): Likewise.
23724         (mono_type_create_from_typespec): Likewise.
23725         (mono_metadata_interfaces_from_typedef_full): New public method;
23726         this is similar to the other _full() methods, but we take a
23727         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
23728         (mono_metadata_parse_generic_param): Take an additional
23729         `MonoGenericContainer *' argument and lookup the MonoGenericParam
23730         from that container.
23731         (mono_metadata_generic_param_equal): New static method to compare
23732         two type parameters.
23733         (_mono_metadata_type_equal): New static method; takes an
23734         additional `gboolean signature_only' argument - if true, we don't
23735         compare the owners of generic parameters.
23736         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
23737         with a TRUE argument - do a signature-only comparision.
23738
23739         * loader.c: Use the new _full() methods and pass the
23740         MonoGenericContainer to them.
23741
23742         * object-internals.h (MonoReflectionTypeBuilder): Added
23743         `MonoGenericContainer *generic_container' field.
23744         (MonoReflectionMethodBuilder): Likewise.
23745
23746 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
23747
23748         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
23749         case initial images of dynamic assemblies.
23750
23751         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
23752
23753         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
23754
23755         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
23756         length of event->other array.
23757         (typebuilder_setup_events): Ditto.
23758
23759         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
23760         'assembly_by_name' and add an 'assemblies' list.
23761
23762         * assembly.h assembly.c: Add a new search hook for determining whenever
23763         an assembly is already loaded. Use this instead of searching in the
23764         loaded_assemblies list.
23765
23766         * domain.c appdomain.c: Implement the new search hook so loaded 
23767         assemblies are now scoped by appdomain. Fixes #67727.
23768
23769 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
23770
23771         * threads.c (mono_thread_attach): Initialize synch_lock field so
23772         mono_thread_detach works again.
23773
23774         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
23775         'lib' too. Fixes #63130.
23776
23777 2004-10-06  Jackson Harper  <jackson@ximian.com>
23778
23779         * culture-info-tables.h: regenerated.
23780
23781 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
23782
23783         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
23784         implemented by other interfaces in the result. Fixes #65764.
23785         
23786         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
23787         Handle unloadable modules without crashing.
23788
23789         * image.c (load_modules): Revert the previous patch since modules must
23790         have a fixed index inside the array.
23791         
23792         * image.c (load_modules): Don't include native modules in the modules
23793         array.
23794
23795 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
23796
23797         * reflection.h: Add param_defaults field.
23798
23799         * reflection.c: Add support for parameter defaults in dynamic methods.
23800         Fixes #64595.
23801
23802         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
23803         an empty string when a type has no namespace. Fixes #64230.
23804
23805 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
23806
23807         * tabledefs.h: Added "internal" security actions to support non-CAS
23808         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
23809         Note: they do not seems to be used anymore in 2.0 (new metadata format)
23810
23811 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
23812
23813         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
23814         constructor of abstract class. Fixes #61689.
23815
23816 2004-10-04  Martin Baulig  <martin@ximian.com>
23817
23818         * class-internals.h (MonoGenericContainer): New type.
23819         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
23820         `MonoGenericContainer *generic_container'.
23821         (MonoClass): Replaced `gen_params' and `num_gen_params' with
23822         `MonoGenericContainer *generic_container'.
23823
23824         * metadata.c (mono_metadata_load_generic_params): Return a
23825         `MonoGenericContainer *' instead of a `MonoGenericParam *';
23826         removed the `num' argument.
23827
23828 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
23829
23830         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
23831         for dynamic images.
23832
23833         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
23834         machine fields.
23835
23836         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
23837
23838         * reflection.c: Save pe_kind and machine values into the generated
23839         image file.
23840
23841         * appdomain.c: Bump corlib version number.
23842
23843         * object-internals.h: Reorganize layout of LocalBuilder.
23844
23845         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
23846         New helper function.
23847
23848         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
23849         created MonoType for dynamic types. Fixes #66180.
23850
23851 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
23852
23853         * threadpool.c: the ares hashtable needs a critical section around it.
23854         this prevents some nasty segfaults
23855
23856 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
23857
23858         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
23859         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
23860         bug 67324).
23861         
23862 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
23863
23864         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
23865         
23866 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
23867
23868         * image.c: Always canonicalize image file names, to avoid loading
23869         the same assembly twice when referenced using a relative path.
23870
23871 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
23872
23873         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
23874
23875         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
23876
23877         * marshal.c: Fix warnings.
23878
23879 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
23880
23881         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
23882         attempting to marshal the delegate_trampoline as the method_addr.
23883         This patch has a static hashtable of marshalled delegates so that 
23884         we can map delegate_trampoline addresses back to delegates.  This
23885         allows a delegate passed to managed code to be passed back into native
23886         code.  Fixes #67039
23887
23888 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
23889
23890         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
23891
23892         * reflection.c (method_encode_code): Align method headers properly.
23893         Fixes #66025.
23894
23895 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
23896
23897         * marshal.c: In the runtime invoke wrapper, reset the abort
23898         exception if it is cached. This avoids the automatic rethrowal of 
23899         the exception after the catch of the wrapper. Also check for pending
23900         interruptions before calling the managed method. This is done using
23901         the new method emit_thread_force_interrupt_checkpoint, since the
23902         normal checkpoint method is ignored when running the invoke wrapper.
23903         * object.c: If the abort exception is rethrown, set the abort_exc
23904         field of the thread, so it will be rethrown aftere every catch.
23905         * threadpool.c: Only run an interruption checkpoint if what has been
23906         requested is a stop of the thread (aborts will be ignored).
23907         * threads.c: By default, a thread will now never be interrumped while
23908         running the runtime invoke wrapper (this ensures that runtime_invoke
23909         will always return to the caller if an exception pointer is provided).
23910         There is a new special method mono_thread_force_interruption_checkpoint()
23911         to force an interruption checkpoint even if running a protected
23912         wrapper, which is used by the same runtime invoke wrapper to do a check
23913         at a safe point.
23914
23915 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
23916
23917         * object.c, object-internals.h: Implemented mono_release_type_locks,
23918         which releases the cctor locks held by a thread.
23919         * threads.c, threads.h: In thread_cleanup, release cctor locks held
23920         by a thread. Added mono_thread_exit() method to be used to safely stop
23921         a thread.
23922
23923 2004-09-28  Raja R Harinath  <rharinath@novell.com>
23924
23925         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
23926         Move null check before dereference.  Avoid indexing beyond the end
23927         of the 'modules' array.
23928
23929 2004-09-28  Raja R Harinath  <rharinath@novell.com>
23930
23931         * metadata-internals.h (MonoImage): Add module_count field.
23932         * image.c (load_modules): Set image->module_count.
23933         (mono_image_load_file_for_image): Use image->module_count.
23934         * reflection.c (mono_image_load_module): Append to image->modules array 
23935         of dynamic assembly.
23936         (mono_module_get_object): Fix loop to actually increment index.
23937         Use image->module_count.
23938         * assembly.c (mono_assembly_load_references): Use image->module_count.
23939         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
23940         Likewise.
23941
23942 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
23943
23944         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
23945         Avoid assert on generic types.
23946
23947 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
23948
23949         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
23950
23951         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
23952
23953         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
23954         function to convert a MarshalSpec structure to its managed counterpart.
23955
23956         * reflection.c: Fix warnings.
23957         
23958         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
23959         field.
23960
23961         * icall.c (mono_create_icall_signature): Fix build.
23962
23963 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
23964
23965         * icall.c: Add MakePointType icall.
23966
23967         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
23968         warnings.
23969
23970 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23971
23972         * threadpool.c: reuse allocated slots in the queue.
23973
23974 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
23975
23976         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
23977
23978         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
23979
23980         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
23981         previous change.
23982
23983         * tabledefs.h: Add constants for pinvoke attributes BestFit and
23984         ThrowOnUnmappableChar.
23985
23986         * icall.c (ves_icall_Type_GetPacking): New icall.
23987
23988 2004-09-24  Martin Baulig  <martin@ximian.com>
23989
23990         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
23991
23992 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23993
23994         * appdomain.c:
23995         (mono_domain_set): allow setting a domain that is being unloaded.
23996         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
23997         being unloaded.
23998
23999 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
24000
24001         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
24002         the GetCustomAttributes icall.
24003
24004 2004-09-23  Martin Baulig  <martin@ximian.com>
24005
24006         * object-internals.h (MonoReflectionGenericParam): Replaced
24007         'has_ctor_constraint', `has_reference_type' and `has_value_type'
24008         with `guint32 attrs'.
24009
24010 2004-09-23  Martin Baulig  <martin@ximian.com>
24011
24012         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
24013
24014 2004-09-23  Martin Baulig  <martin@ximian.com>
24015
24016         * object-internals.h (GenericParameterAttributes): New enum.
24017
24018 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
24019
24020         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
24021         
24022         * class.c (init_events): Fill out event->other field.
24023
24024         * class.c: Fix warnings.
24025
24026         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
24027
24028 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
24029
24030         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
24031         walk which doesn't supply the IL offset.
24032
24033 2004-09-22  Martin Baulig  <martin@ximian.com>
24034
24035         * reflection.c (mono_reflection_setup_internal_class): If we're
24036         System.ValueType, System.Object or System.Enum, set
24037         `klass->instance_size' and create the vtable.
24038         (mono_reflection_create_internal_class): If we're an enum type,
24039         get the base class from our current corlib.
24040
24041 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
24042
24043         * reflection.h (MonoResolveTokenError): New type.
24044
24045         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
24046         icall.
24047
24048         * icall.c: Add an 'error' argument to the ResolveToken icalls.
24049
24050 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
24051
24052         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
24053         Support also calling constructors, but only for already allocated objects.
24054
24055 2004-09-17  Geoff Norton <gnorton@customerdna.com>
24056
24057         * reflection.c (type_get_qualified_name): If the klass is null
24058         return the typename to avoid a NullRefEx.
24059         (encode_cattr_value): Get the qualified name of the boxed type,
24060         not the underlying enumtype.  Fixes #62984.
24061
24062 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
24063
24064         * marshal.c: Fix problems with previous checkin.
24065
24066 2004-09-21    <vargaz@freemail.hu>
24067
24068         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
24069         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
24070
24071         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
24072
24073 2004-09-21  Geoff Norton <gnorton@customerdna.com>
24074
24075         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
24076         should only return a type for pointers, arrays, and passbyref types.
24077         Fixes bug #63841.
24078
24079 2004-09-21  Martin Baulig  <martin@ximian.com>
24080
24081         * domain.c (mono_debugger_check_runtime_version): New public
24082         function.
24083
24084         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
24085
24086 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
24087
24088         * reflection.c: Added missing sort to the declarative security 
24089         attributes table. MS implementation stops seeing the attributes if the
24090         token number regress in the table (as shown by ildasm and permview).
24091
24092 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
24093
24094         * object-internals.h (MonoReflectionModule): Add 'token' field.
24095         
24096         * reflection.c (mono_reflection_get_token): Add support for Module
24097         and Assembly.
24098         (mono_module_get_object): Set 'token' field.
24099         (mono_module_file_get_object): Set 'token' field.
24100
24101         * icall.c: Add new Assembly and Module icalls.
24102
24103         * appdomain.c: Bump corlib version.
24104
24105 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
24106
24107         * loader.h loader.c class.h class.c: Add helper functions for obtaining
24108         tokens of metadata objects.
24109
24110         * reflection.h reflection.c (mono_reflection_get_token): New function
24111         to obtain the token of a metadata object.
24112
24113         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
24114
24115 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
24116
24117         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
24118         
24119         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
24120
24121 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
24122
24123         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
24124         * object-internals.h: Added 3 MonoArray* members to MonoReflection
24125         AssemblyBuilder to access the permissions set in the class lib.
24126         * reflection.c: Added security attributes encoding step in 
24127         mono_image_build_metadata.
24128         * tabledefs.h: Added new security actions defined in 2.0:
24129         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
24130
24131 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
24132
24133         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
24134         macro parameter.
24135
24136 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
24137  
24138         * locales.c: nullify the ICU_collator member of CompareInfo when it is
24139           finalized. There where random SIGSEVs at program termination, when
24140           an object being finalized was trying to do a string comparison and
24141           the current culture was already finalized.
24142  
24143 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24144
24145         * threads.c: call thread_cleanup before finishing the thread if we get
24146         there.
24147
24148 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
24149
24150         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
24151         assemblies from the parent. Fixes #65665.
24152
24153 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
24154
24155         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
24156         modifiers.
24157
24158 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
24159
24160         * reflection.h: add prototype for mono_get_dbnull_object
24161         * reflection.c: add prototypes for get_default_param_value_blobs 
24162         and mono_get_object_from_blob for fussier compilers
24163
24164 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
24165  
24166         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
24167         false deadlock checks in class initialization.
24168  
24169 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
24170
24171         * image.c (mono_image_addref): Fix comment.
24172
24173         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
24174         possible.
24175
24176 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
24177
24178         * reflection.c (mono_param_get_objects): Modified to return
24179         ParameterInfo.DefaultValue object.
24180
24181         (get_default_param_value_blobs):
24182         (mono_get_object_from_blob):
24183         (mono_get_dbnull_object): New helper routines. 
24184
24185         * object.c (mono_get_constant_value_from_blob): New helper routine
24186         carved out from get_default_field_value ()
24187
24188         * object-internals.h (mono_get_constant_value_from_blob): Added
24189         function declaration.
24190
24191 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
24192
24193         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
24194         referenced assemblies. Fixes #62135.
24195
24196         * exception.h exception.c (mono_get_exception_file_not_found2): New
24197         helper function.
24198
24199 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
24200
24201         * class.h class.c: Add mono_type_get_underlying_type ().
24202
24203 2004-09-09  Geoff Norton <gnorton@customerndna.com>
24204
24205         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
24206         Fix GetTypes() to support dynamically created assemblies.
24207
24208 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
24209
24210         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
24211         
24212         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
24213         previous patch.
24214
24215         * reflection.h reflection.c loader.c: Allow dynamic construction of
24216         pinvoke methods. Fixes #65571.
24217         
24218         * reflection.c (mono_reflection_get_type): Revert previous change since
24219         it causes regressions.
24220
24221 2004-09-08  Martin Baulig  <martin@ximian.com>
24222
24223         * class.c (class_compute_field_layout): Don't call
24224         mono_class_layout_fields() for open generic instances.
24225
24226 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
24227         * threads.c appdomain.c: fix typo in GC macro
24228
24229 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24230
24231         * threads.c: don't call mono_thread_detach() in start_wrapper(),
24232         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
24233
24234 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
24235
24236         * image.c (mono_image_close): Applied patch from 
24237         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
24238         assembly is loaded multiple times from data.
24239         
24240         * image.c (mono_image_open): Fix warning.
24241
24242 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
24243
24244         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
24245         once. Fixes #58334.
24246         
24247         * reflection.c (mono_reflection_create_runtime_class): Initialize
24248         klass->nested_classes. Fixes #61224.
24249
24250 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
24251
24252         * threads.c: sched_yield() on exit, to allow threads to quit.
24253
24254 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
24255
24256         * object.c (mono_unhandled_exception): Remove leftover debug code.
24257
24258 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
24259
24260         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
24261
24262 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
24263
24264         * marshal.c (emit_marshal_array): Really null terminate string arrays.
24265         
24266         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
24267
24268 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
24269
24270         * marshal.c (emit_marshal_array): Null terminate string arrays.
24271         
24272         * marshal.c (raise_auto_layout_exception): Fix warning.
24273
24274         * reflection.c (mono_param_get_objects): Initialize the default value
24275         with DBNull.Value, not null. Fixes #62123.
24276
24277 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
24278
24279         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
24280         throw an exception with a cute explanation.
24281
24282 2004-09-06  Dick Porter  <dick@ximian.com>
24283
24284         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
24285         Close the new process's thread handle, as we don't use it.  The
24286         handle stays around forever otherwise.
24287
24288 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
24289
24290         * object.c (arith_overflow): Fix warning.
24291
24292         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
24293         calling conventions in method refs. Fixes #65352.
24294
24295         * reflection.c: Fix warnings.
24296
24297 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
24298
24299         * icall.c: Add a new icall for Array.Clear
24300
24301 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
24302
24303         * object.c: When allocating an array, we have to throw
24304         an overflow exception if any of the lengths are < 0.
24305
24306 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
24307
24308         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
24309         properly. Also move implementation of string array marshalling to 
24310         managed code. Fixes #42316.
24311
24312 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24313
24314         * assembly.c: provide more information when loading an assembly fails.
24315
24316 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24317
24318         * filewatcher.c: don't expect the development fam package to be
24319         installed.
24320
24321 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
24322
24323         * marshal.c: Make a copy of the signature cookie since it will be
24324         freed by the caller.
24325         
24326         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
24327
24328         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
24329
24330         * metadata.c (mono_metadata_free_marshal_spec): New function to free
24331         marshal specs.
24332
24333         * marshal.c: More refactoring.
24334         
24335         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
24336         smaller functions.
24337
24338 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
24339
24340         * object.c: In mono_message_invoke, fill the output parameter array after
24341           calling the managed method (it was done before the call). This fixes
24342           bug #59299.
24343
24344 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
24345
24346         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
24347         as well.
24348
24349 2004-09-02  Martin Baulig  <martin@ximian.com>
24350
24351         * class.c (mono_class_instance_size): Don't allow generic type
24352         definitions or open generic instances.
24353         (mono_class_array_element_size): If we're a value type, call
24354         mono_class_instance_size() on the original class.
24355
24356         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
24357         handle generic instances.
24358
24359         * mono-debug-debugger.c (write_type): Handle generic instances
24360         like classes.
24361
24362 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
24363
24364         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
24365         the allocation request fails. Fixes #65089.
24366
24367         * object.c (mono_runtime_free_method): Do not call mono_free_method.
24368         
24369         * object.c (mono_runtime_free_method): New function to free a dynamic
24370         method.
24371
24372         * marshal.c (mono_delegate_free_ftnptr): New function to free the
24373         delegate trampoline.
24374
24375         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
24376         with hasthis as dynamic,
24377
24378         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
24379
24380         * domain.c (mono_jit_info_table_remove): New function to remove an
24381         entry from the jit info table.
24382
24383         * class-internals.h (MonoMethod): Add 'dynamic' field.
24384
24385         * loader.c: Fix warnings.
24386
24387 2004-09-01  Martin Baulig  <martin@ximian.com>
24388
24389         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
24390         instead of mono_debugger_lock() because the latter one is a no-op
24391         unless running in the debugger.
24392
24393 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
24394
24395         * class.c (class_compute_field_layout): Classes with auto-layout or
24396         reference fields are not blittable.
24397         
24398 2004-09-01  Dick Porter  <dick@ximian.com>
24399
24400         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
24401         mono_image_get_filename() to get the assembly location.
24402
24403         * icall.c:
24404         * metadata.h: Fix compile warnings
24405
24406 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
24407
24408         * class.c (class_compute_field_layout): System.Object is blittable.
24409
24410         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
24411         as in/out. Fixes #59909.
24412
24413 2004-09-01  Martin Baulig  <martin@ximian.com>
24414
24415         * metadata.h (MONO_TYPE_ISREFERENCE): Call
24416         mono_metadata_generic_inst_is_valuetype() if we're a generic
24417         instance to check whether our underlying type is a reference type.
24418
24419 2004-09-01  Martin Baulig  <martin@ximian.com>
24420
24421         * metadata.c (mono_type_size): If we're a generic instance, call
24422         mono_class_value_size() for value types.
24423
24424 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
24425
24426         * marshal.c: Implement more custom marshalling functionality. Fixes
24427         #64915.
24428
24429 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
24430
24431         * mono-debug.c, debug-mono-symfile.c: add some locking love.
24432
24433 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
24434
24435         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
24436
24437         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
24438
24439         * icall.c: Fix some warnings.
24440
24441         * threads.c (abort_appdomain_thread): Fix unref errors.
24442         (mono_thread_current): Fix THREAD_DEBUG define.
24443
24444 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
24445
24446         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
24447
24448         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
24449
24450 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
24451
24452         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
24453         string arrays.
24454
24455 2004-08-28  Martin Baulig  <martin@ximian.com>
24456
24457         * metadata.c
24458         (mono_metadata_generic_inst_is_valuetype): New public function.
24459
24460         * metadata.h (MONO_TYPE_ISSTRUCT): Call
24461         mono_metadata_generic_inst_is_valuetype() if we're a generic
24462         instance to check whether our underlying type is a valuetype.
24463
24464 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
24465
24466         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
24467         #63768.
24468
24469 2004-08-25  Martin Baulig  <martin@ximian.com>
24470
24471         * loader.c (mono_get_method_from_token): Abstract methods can also
24472         be generic and thus have type parameters.
24473
24474         * metadata-internals.h
24475         (MonoDynamicImage): Added `GPtrArray *gen_params'.
24476
24477         * reflection.c (mono_image_get_generic_param_info): Don't create a
24478         metadata row, just add an entry to the `gen_params' array.
24479         (build_compressed_metadata): Sort the `gen_params' array and then
24480         actually create the metadata.
24481
24482 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24483
24484         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
24485
24486 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
24487
24488         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
24489
24490 2004-08-24  Martin Baulig  <martin@ximian.com>
24491
24492         * class.cs (mono_class_is_subclass_of): Like an interface, a
24493         generic instance also derives from System.Object.
24494
24495 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
24496
24497         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
24498         custom modifiers to be in any order. Fixes #61990.
24499
24500 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
24501
24502         * object.c: Register mono_object_new_fast icall.
24503         
24504         * object.c (mono_class_get_allocation_ftn): Return to calling
24505         mono_object_new_fast, since it seems faster to compute the object 
24506         size in unmanaged code than passing it as a parameter.
24507
24508         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
24509
24510         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
24511         this function with Boehm as the oom handler, so we don't have to check
24512         the result of GC_malloc.
24513
24514         * object.c: Remove checks for oom.
24515
24516         * object.h object.c (mono_class_get_allocation_ftn): New function to
24517         return the icall which can be used to allocate an instance of a given
24518         class. 
24519
24520         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
24521
24522         * class-internals.h: Add 'enabled' field.
24523
24524 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
24525
24526         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
24527
24528 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
24529         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
24530         value 0x0010.
24531
24532 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
24533
24534         * appdomain.c: use the Tls function for appdomain too,
24535         at Zoltan's request. Actually return in mono_context_get
24536
24537         * appdomain.c, profiler.c, threads.c: use __thread
24538
24539 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
24540
24541         * appdomain.c threads.c: Call GC_CreateThread on windows.
24542
24543         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
24544         multiple libraries since this don't work on windows.
24545
24546 2004-08-18  Martin Baulig  <martin@ximian.com>
24547
24548         * class-internals.h
24549         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
24550         MonoMethodHeader.
24551
24552         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
24553         MonoMethodNormal since we also need it for abstract and interface
24554         methods.
24555
24556         * reflection.c
24557         (build_compressed_metadata): Sort the GenericParam table.
24558         (mono_image_create_token): Added `gboolean create_methodspec'
24559         argument; this is false when generating a MethodImpl token.
24560         (reflection_methodbuilder_to_mono_method): Abstract and interface
24561         methods may also have generic parameters.
24562
24563 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
24564
24565         * appdomain.c: thread local alloc
24566
24567 2004-08-17  Martin Baulig  <martin@ximian.com>
24568
24569         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
24570
24571         * icall.c
24572         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
24573         argument.
24574
24575         * class.c (mono_type_get_full_name): New public function.
24576         (mono_type_get_name): Don't include the type arguments.
24577
24578 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
24579
24580         * Makefile.am: Build static versions of libmetadata and libmonoruntime
24581         for inclusion into the mono executable.
24582
24583 2004-08-16  Martin Baulig  <martin@ximian.com>
24584
24585         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
24586         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
24587
24588 2004-08-14  Martin Baulig  <martin@ximian.com>
24589
24590         * class.c (dup_type): Also copy the `byref' field.
24591
24592 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
24593
24594         * reflection.c (create_dynamic_mono_image): Revert the last change 
24595         since it breaks bootstrap.
24596
24597 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
24598
24599         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
24600
24601         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
24602         not free them with g_free.
24603
24604 2004-08-11  Martin Baulig  <martin@ximian.com>
24605
24606         * reflection.c (mono_reflection_setup_internal_class): Also call
24607         mono_class_setup_mono_type() if we already have a `tb->type.type'.
24608
24609 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
24610
24611         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
24612         called during default (first) AppDomain creation. Keep track of
24613         Evidence when loading assemblies.
24614
24615 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
24616
24617         * opcodes.c, opcodes.h: reduce runtime relocations.
24618
24619 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
24620
24621         * culture-info.h, locales.c: fixes and chages to sue the new
24622         optimized format of the locale data.
24623         * culture-info-tables.h: regenerated.
24624
24625 2004-08-06  Geoff Norton <gnorton@customerdna.com>
24626         
24627         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
24628
24629 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
24630
24631         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
24632         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
24633         * domain-internals.h: icall declaration.
24634         * icall.c: icall registration.
24635         * object-internals.h: New fields in MonoAssembly for CAS.
24636
24637 2004-08-05  Duncan Mak  <duncan@ximian.com>
24638
24639         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
24640         CEE_LDELEM_ANY.
24641
24642 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
24643
24644         * reflection.c: fix to deal with object[] arrays in custom ctors
24645         (bug #62550).
24646
24647 2004-08-05  Martin Baulig  <martin@ximian.com>
24648
24649         * class.c (mono_class_array_element_size): Added support for
24650         generic instances and correctly handle "recursive" types.
24651
24652 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
24653
24654         * assembly.c: Fix warnings.
24655
24656 2004-08-04  Martin Baulig  <martin@ximian.com>
24657
24658         * class.c
24659         (mono_type_get_name_recurse): Added `gboolean include_arity'
24660         argument specifying whether or not we should include the generic
24661         arity in the type name.
24662         (_mono_type_get_name): New static function.
24663         (mono_class_setup_vtable): If we're a generic instance, don't
24664         include the generic arity in the names of explicit method
24665         implementations.        
24666
24667 2004-08-03  Martin Baulig  <martin@ximian.com>
24668
24669         * class.c (mono_type_get_name_recurse): Enclose the generic type
24670         arguments in `<', '>'.
24671
24672 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
24673
24674         * gc.c: make GC warning messages use the trace API, they are just
24675         noise to most of the users.
24676
24677 2004-08-03  Martin Baulig  <martin@ximian.com>
24678
24679         * debug-mono-symfile.c (read_string): Correctly read the string.
24680
24681 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
24682
24683         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
24684         
24685         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
24686         icalls.
24687         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
24688
24689 2004-07-30  Martin Baulig  <martin@ximian.com>
24690
24691         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
24692         Reflect latest symbol writer changes.   
24693
24694 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
24695
24696         * object.c: always create an object if null is passed
24697         to Invoke() where a valuetype is expected.
24698
24699 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
24700
24701         * marshal.c (mono_marshal_init): make managed
24702         signatures match native ones better for 64bits.
24703
24704 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24705
24706         * appdomain.c: hack to build correctly the private bin path on windows.
24707         Fixes bug #61991.
24708
24709 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
24710
24711         * assembly.c: Load mscorlib from the correct framework directory
24712           (mono/<version>/mscorlib.dll).
24713         * appdomain.h: Added prototypes for new functions.
24714         * internals.h: Added some prototypes.
24715         * domain.c: When initializing the runtime, get from the executable and
24716           the configuration files the runtime version that the app supports.
24717           Added support methods for reading app.exe.config. Added list of versions
24718           supported by the JIT. Added two new methods: mono_init_from_assembly,
24719           which initializes the runtime and determines the required version from
24720           the provided exe file, and mono_init_version, which initializes
24721           the runtime using the provided version.
24722         * icall.c: Get machine.config from version-specific directory.
24723         * reflection.c: When generating an image, embed the version number
24724           of the current runtime.
24725
24726 2004-07-28  Dick Porter  <dick@ximian.com>
24727
24728         * socket-io.c
24729         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
24730         returned sockaddr size before creating the remote address object.
24731         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
24732         61608.
24733
24734 2004-07-28  Dick Porter  <dick@ximian.com>
24735
24736         * locales.c (string_invariant_compare_char): Fix invariant char
24737         compares between upper and lower cases.  Fixes bug 61458.
24738
24739 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
24740         
24741         * marshal.c: actually cache stelem.ref wrappers.
24742         
24743 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
24744
24745         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
24746         sections and remove the mono_cli_rva_map () function.
24747
24748 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
24749
24750         * debug-mono-symfile.c: fix one more endianess issue, from a patch
24751         by Geoff Norton (<gnorton@customerdna.com>).
24752
24753 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
24754
24755         * class.c: fix class loads for pointer types (typeof(int) !=
24756         typeof(int*)).
24757
24758 2004-07-27  Martin Baulig  <martin@ximian.com>
24759
24760         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
24761         reading the debugging information from an external ".mdb" file.
24762
24763 2004-07-24  Martin Baulig  <martin@ximian.com>
24764
24765         * reflection.c (mono_image_get_type_info): Only write a class
24766         layout entry if we actually have a size or a packing size.
24767
24768 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
24769
24770         * reflection.c (type_get_fully_qualified_name): 
24771         insert cast to get type checking of ?: with non-gcc compilers
24772
24773 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
24774
24775         * rand.c: use g_getenv for both lookups of
24776         MONO_EGD_SOCKET
24777
24778 2004-07-17  Martin Baulig  <martin@ximian.com>
24779
24780         * reflection.c (mono_reflection_bind_generic_method_parameters):
24781         Set `gmethod->reflection_info'.
24782
24783 2004-07-17  Martin Baulig  <martin@ximian.com>
24784
24785         * class.c (mono_class_create_from_typedef): Insert the newly
24786         created class into the hash table before computing the interfaces
24787         since we could be called recursively.
24788
24789 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
24790
24791         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
24792         function to implement stelem.ref in managed code
24793         * class-internals.h, debug-helpers.c: a new wrapper type
24794         for the above.
24795
24796 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
24797
24798         * gc.c: allow GC handles to work even when no GC is compiled in.
24799         Fix part of bug #61134 (GetAddrOfPinnedObject).
24800
24801 2004-07-13  Peter Williams  <peter@newton.cx>
24802  
24803         * process.c (complete_path): Make sure we don't attempt to execute
24804         directories.
24805  
24806 2004-07-12  Geoff Norton <gnorton@customerdna.com>
24807
24808         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
24809           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
24810           and will add/subtract the hour if needed
24811
24812 2004-07-12  Martin Baulig  <martin@ximian.com>
24813
24814         * reflection.c (mono_field_get_object): If we have
24815         `field->generic_info', take the attributes from
24816         `field->generic_info->generic_type'.    
24817
24818 2004-07-12  Martin Baulig  <martin@ximian.com>
24819
24820         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
24821         This function must be called before initializing the runtime.
24822         (mono_debug_init_1): New function; call this after initializing
24823         the runtime, but before loading the assembly.  It tells the
24824         debugger to load corlib and the builtin types.
24825
24826         * mono-debug-debugger.c: Did some larger changes in the debugging
24827         code; support recursive class declarations, make sure we actually
24828         add all classes.
24829
24830 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24831
24832         * debug-helpers.c: undo my previous patch and fixed the real issue in
24833         ../mini/exceptions-x86.c
24834
24835 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24836
24837         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
24838         when no HOME env. variable was set and a NullRef was thrown in a .cctor
24839         called from other .cctors.
24840
24841 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
24842
24843         * loader.c: Removed the mono_loader_wine_init hack now that we are
24844         doing a managed version of Windows.Forms.
24845
24846 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
24847
24848         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
24849         threadpool.c, threads.c: remove static data from rootset.
24850
24851 2004-07-09  Dick Porter  <dick@ximian.com>
24852
24853         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
24854         Don't do any more processing if the matched length was 0.  It was
24855         increasing the size of the string before.  Fixes bug 61167.
24856
24857 2004-07-09  Dick Porter  <dick@ximian.com>
24858
24859         * socket-io.h:
24860         * socket-io.c
24861         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
24862         Add support for SO_PEERCRED if its available.
24863
24864 2004-07-09  Peter Bartok <pbartok@novell.com>
24865         * loader.c: winelib.exe.so error message is now only displayed if
24866         MONO_DEBUG is set. To help us avoid questions when people are trying
24867         out the new Managed.Windows.Forms.
24868
24869 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
24870
24871         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
24872         for isinst and castclass wrappers.
24873
24874         * class-internals.h icall.c: Move registration and lookup of JIT icalls
24875         to libmetadata from the JIT, so they could be used by the marshalling
24876         code and the interpreter.
24877
24878         * marshal.c: Register marshalling related JIT icalls here instead of
24879         in mini.c. Use CEE_MONO_ICALL instead of the family of 
24880         CEE_MONO_PROC<x> opcodes to call marshalling functions.
24881
24882         * metadata.h: Remove unneeded marshalling conversions.
24883
24884         * opcodes.c: Update for new opcodes.
24885         
24886 2004-07-08  Martin Baulig  <martin@ximian.com>
24887
24888         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
24889         (mono_debug_get_domain_data): Make this function static.
24890
24891 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
24892
24893         * gc.c, object.h: add nice GC handle API for embedders.
24894
24895 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
24896
24897         * reflection.c: more changes for the new api
24898
24899         * object.c: When we reflect on a field w/ a constant value, it
24900         will not have a memory location, so we must access metadata. Also,
24901         allow easier reading of strings so that we can read them from
24902         the constant data.
24903
24904         * class.c (mono_class_layout_fields): no need for literal fields here.
24905
24906         * class-internals.h: api changes for const fields
24907
24908         * icall.c (ves_icall_get_enum_info): use new apis for const fields
24909
24910 2004-07-06  Martin Baulig  <martin@ximian.com>
24911
24912         * mono-debug.h: Increment version number to 44.
24913
24914         * mono-debug.c (mono_debug_add_wrapper): The second argument is
24915         now a gpointer, rewrote this whole method.
24916
24917         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
24918         function.  Add information about the wrapper in a new "misc table".
24919
24920         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
24921         for the new misc table.
24922
24923 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
24924
24925         * metadata-internals.h image.c: Add a cache for helper signatures.
24926
24927         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
24928
24929 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
24930
24931         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
24932         delegates from a delegate. Fixes #61033.
24933         
24934         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
24935         marshalling of stringbuilder arrays. Fixes #59900.
24936
24937 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
24938
24939         * icall.c: Add EnumBuilder:setup_enum_type icall.
24940
24941 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
24942
24943         * icall.c: Added a new icall for the property version of
24944         OffsetOfStringData.
24945
24946 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
24947
24948         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
24949         it has a constant size across platforms.
24950
24951         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
24952         stack trace.
24953
24954 2004-06-29  Martin Baulig  <martin@ximian.com>
24955
24956         * mono-debug.c (mono_debug_add_method): Protect the whole function
24957         in mono_debugger_lock(), not just parts of it.
24958
24959 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
24960
24961         * reflection.c: make sure padding bytes in heaps are zeroed.
24962
24963 2004-06-24  David Waite  <mass@akuma.org>
24964
24965         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
24966         image.c, loader.c, locales.c, marshal.c, metadata.c,
24967         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
24968         string-icalls.c, threads.c: change to C90-style comments from C99 /
24969         C++ -style
24970
24971 2004-06-24  Dick Porter  <dick@ximian.com>
24972
24973         * threads.c
24974         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
24975         return createdNew.  Fixes bug 60412.
24976
24977         * threads-types.h: 
24978         * icall.c: Add createdNew parameter to CreateMutex icall
24979
24980 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
24981
24982         * reflection.c, object-internals.h: save default value in params.
24983
24984 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
24985
24986         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
24987         no need to build a new path combining that with the application base.
24988         Fixes bug #60442.
24989
24990 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
24991
24992         * reflection.c: fixed minor standard compliance issues.
24993
24994 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
24995
24996         * reflection.c: fixed issue with encoding some custom attributes
24997         (arrays in properties and fields, bug #60411).
24998
24999 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25000
25001         * reflection.c: fix start address when copying the public key token.
25002
25003 2004-06-23  Martin Baulig  <martin@ximian.com>
25004
25005         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
25006         the `exc' object in a static object to put it into the GC's root set.
25007
25008 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
25009
25010         * reflection.c: make mono_reflection_setup_internal_class ()
25011         callable a second time to setup a new parent class.
25012
25013 2004-06-23  Dick Porter  <dick@ximian.com>
25014
25015         * threads.c: Check for WAIT_IO_COMPLETION return values.
25016
25017 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
25018
25019         * appdomain.c: Removed the g_free on the public key token. Now copy 
25020         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
25021         * assembly.c: Added public key token string value when loading 
25022         assemblies. Fix bug #60439.
25023         * icall.c: Added missing informations (like public key) in 
25024         GetReferencedAssemblies. Fix #60519.
25025         * image.h: Changed definition for public key token from const char*
25026         public_tok_value to guchar public_key_token [17];
25027         * reflection.c: Updated for changes to public key token.
25028
25029 2004-06-22  Lluis Sanchez Gual
25030
25031         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
25032         for the field in base classes.
25033
25034 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
25035
25036         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
25037         mark headers as not supported, they are installed only for use by the
25038         debugger.
25039
25040 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
25041
25042         * *.c, *.h: avoid namespace pollution in public headers.
25043
25044 2004-06-21  Martin Baulig  <martin@ximian.com>
25045
25046         * exception.c (mono_get_exception_security): It's in
25047         "System.Security", not in "System".
25048
25049         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
25050         the exception classes.
25051
25052 2004-06-21  Martin Baulig  <martin@ximian.com>
25053
25054         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
25055         Protect the exception object from being finalized.
25056
25057 2004-06-21  Martin Baulig  <martin@ximian.com>
25058
25059         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
25060         public function.
25061
25062 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
25063
25064         * reflection.c: Load the assembly in mono_reflection_type_from_name,
25065         if it was not loaded before. Fix parts of #60439.
25066
25067 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
25068
25069         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
25070         code that was broken since Ben's change: wrappers are now
25071         dependent on the method signature only again.
25072
25073 2004-06-21  Martin Baulig  <martin@ximian.com>
25074
25075         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
25076         added interface support.
25077
25078 2004-06-21  Martin Baulig  <martin@ximian.com>
25079
25080         * class.c (mono_vtable_get_static_field_data): New public method.
25081
25082 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
25083
25084         * filewatcher.c : Windows build fix to be compliant with API changes.
25085
25086 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
25087
25088         * class.h, class.c: more accessors.
25089         * metadata.h, metadata.c: prepare for hiding MonoType and
25090         MonoMethodSignature: people should use the accessors from now on
25091         outside of the tree.
25092
25093 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
25094
25095         * *.c, *.h: more API cleanups.
25096
25097 2004-06-18  Jackson Harper  <jackson@ximian.com>
25098
25099         * assembly.c: Trace loading assemblies.
25100         * loader.c: Trace loading native libraries.
25101         * mono-config.c: Trace loading config files.
25102         
25103 2004-06-18  Dick Porter  <dick@ximian.com>
25104
25105         * locales.c: Tell ICU the lengths of strings, it can cope with
25106         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
25107
25108 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
25109
25110         * image.c: swapped name/filename;
25111
25112 2004-06-18  Martin Baulig  <martin@ximian.com>
25113
25114         * mono-debug-debugger.c (write_class): Write the parent class at
25115         the end of the header.
25116
25117 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
25118
25119         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
25120
25121 2004-06-17  Raja R Harinath  <rharinath@novell.com>
25122
25123         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
25124         (bundle_obj): New conditional define.
25125         (BUILT_SOURCES): Remove.
25126         ($(bundle_srcs)): Make parallel-make safe.
25127         (libmonoruntime_la_LIBADD): Make unconditional.
25128         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
25129         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
25130
25131 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
25132
25133         * culture-info-tables.h: It was inconsistent with the latest
25134           supp info files.
25135
25136 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
25137
25138         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
25139         be loaded.
25140
25141         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
25142         with gcc 2.95.
25143
25144 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
25145
25146         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
25147         cleaned up public header threads.h.
25148
25149 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
25150
25151         * Makefile.am, *.c, *.h: more API cleanups.
25152
25153 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
25154
25155         * Makefile.am: removed monosn from compilation.
25156         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
25157         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
25158         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
25159         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
25160         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
25161         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
25162
25163 2004-06-15  Jackson Harper  <jackson@ximian.com>
25164
25165         * assembly.c: Make locales lower case when searching the GAC for
25166         assemblies. gacutil will always make locales lowercase when
25167         installing so this effectively makes them case insensitive.
25168         
25169 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
25170
25171         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
25172         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
25173           parameter which allows to choose whether the wait can be interrupted or 
25174           not. Also added the method mono_monitor_enter(), which locks the monitor
25175           using an infinite wait and without allowing interruption.
25176           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
25177           interrupted.
25178         * object.h: Added new fields in MonoThread. suspend_event holds the event
25179           used to susped/resume the thread. synch_lock is the lock object to use for
25180           modifying the thread state.
25181         * threads.c: Use the new synch_lock object for locking, instead of "this",
25182           which can generate deadlocks.
25183           Moved thread state change in Thread.Sleep and Thread.Join from managed
25184           to unmanaged code. This avoids a deadlock when the thread was suspended
25185           just after acquiring the thread lock.
25186           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
25187           Implemented Thread.Suspend using an event instead of ThreadSuspend,
25188           which is not fully implemented in the io-layer.
25189         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
25190
25191 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
25192
25193         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
25194         threads-types.h: more API cleanups.
25195
25196 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
25197
25198         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
25199         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
25200         threadpool.c, threads.c: first pass at the exported API cleanup.
25201
25202 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
25203
25204         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
25205
25206 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
25207
25208         * icall.c: added internalGetHome.
25209
25210 2004-06-14  Dick Porter  <dick@ximian.com>
25211
25212         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
25213         possible to return successfully when '.' or '..' were the only
25214         entries in a directory, but were skipped.  The MonoIOStat was not
25215         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
25216         Fixes bug 59574.
25217
25218 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
25219
25220         * reflection.c: make binaries run on .Net 1.1 by default.
25221
25222 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
25223
25224         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
25225
25226 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
25227
25228         * marshal.c: keep track of struct size with explicit layout
25229         (bug #59979).
25230
25231 2004-06-12  Martin Baulig  <martin@ximian.com>
25232
25233         * mono-debug-debugger.c: Comment out a debugging g_message().
25234
25235 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
25236
25237         * reflection.c, reflection.h: do not free custom attrs that are cached.
25238         * icall.c: use braces to make code clearer.
25239
25240 2004-06-11  Martin Baulig  <martin@ximian.com>
25241
25242         * class.h (MonoInflatedField): New type.
25243         (MonoClassField): Replaced `MonoType *generic_type' with
25244         `MonoInflatedField *generic_info'.
25245
25246         * icall.c
25247         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
25248
25249 2004-06-11  Martin Baulig  <martin@ximian.com>
25250
25251         * reflection.c (mono_image_create_method_token): Correctly encode
25252         varargs methods.
25253
25254 2004-06-11  Martin Baulig  <martin@ximian.com>
25255
25256         * metadata.c (mono_metadata_parse_method_signature): When parsing
25257         a MethodDef which has VarArgs, also set sentinelpos if we don't
25258         have any parameters.
25259
25260 2004-06-11  Martin Baulig  <martin@ximian.com>
25261
25262         * verify.c (mono_method_verify): In CEE_CALL, use
25263         mono_method_get_signature() to get the method's signature, unless
25264         we're a PInvoke method.
25265
25266 2004-06-10  Jackson Harper  <jackson@ximian.com>
25267
25268         * assembly.c: Use <path>/lib/mono/gac for the extra paths
25269         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
25270         logical name as the supplied path is just a prefix to the gac not
25271         the direct path to it.
25272         
25273 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
25274
25275         * reflection.c: make the token for a created method match
25276         the token of the MethodBuilder it was created from
25277         (IKVM requires this behaviour now).
25278
25279 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
25280
25281         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
25282         reflection.c, socket-io.c: leak fixes.
25283
25284 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
25285
25286         * icall.c: handle sentinel pos in vararg methods in position different
25287         from 0.
25288
25289 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25290
25291         * culture-info-tables.h: freshly generated.
25292
25293 2004-06-09  Martin Baulig  <martin@ximian.com>
25294
25295         * loader.c (mono_get_method_constrained): Call `mono_class_init
25296         (constrained_class)'.   
25297
25298 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
25299
25300         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
25301         any methods. Fixes #59629.
25302
25303 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
25304
25305         * culture-info-tables.h: reflecting locale-builder updates.
25306
25307 2004-06-08  Dick Porter  <dick@ximian.com>
25308
25309         * object.h:
25310         * locales.c: Fixed compile warnings, including a real bug in
25311         CompareInfo_internal_compare.
25312         
25313 2004-06-08  Dick Porter  <dick@ximian.com>
25314
25315         * locales.c
25316         (ves_icall_System_Globalization_CompareInfo_internal_index):
25317         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
25318         Double-check the resuls of usearches, because ICU currently
25319         ignores most of the collator settings here.  Fixes bug 59720.
25320         
25321 2004-06-08  Dick Porter  <dick@ximian.com>
25322
25323         * locales.c
25324         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
25325         Fix memory leak and segfault-causing typo.  No idea how this one
25326         lasted so long without being noticed.
25327
25328 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
25329
25330         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
25331         any methods. Fixes #59629.
25332
25333 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25334
25335         * assembly.c:
25336         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
25337         own the critical section before). Removed dead code (that's done
25338         in the preload hook).
25339
25340         (mono_assembly_load_with_partial_name): call the preload hook.
25341
25342 2004-06-08  Martin Baulig  <martin@ximian.com>
25343
25344         * metadata.c (mono_metadata_signature_alloc): Default
25345         `sentinelpos' to -1.
25346
25347         * reflection.c (mono_image_get_array_token): Likewise.
25348
25349 2004-06-08  Martin Baulig  <martin@ximian.com>
25350
25351         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
25352
25353         * metadata.c (mono_metadata_parse_method_signature): When parsing
25354         a MethodDef which has VarArgs, set sentinelpos.
25355
25356         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
25357         `gint16' since we're using -1 for non-varargs methods.
25358
25359         * reflection.c
25360         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
25361         (method_encode_signature): Added varargs support.
25362         (method_builder_encode_signature): Likewise.
25363         (mono_image_get_varargs_method_token): New static method.
25364         (mono_image_create_method_token): New public method; this is
25365         called via an icall instead of mono_image_create_token() when
25366         calling a varargs method.       
25367
25368 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
25369
25370         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
25371
25372 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
25373
25374         * culture-info-tables.h : Reflecting the latest locale-builder that
25375           fixed empty array representation ({} to {0}).
25376
25377 2004-06-07  Jackson Harper  <jackson@ximian.com>
25378
25379         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
25380         looking up extra gac paths. This allows MONO_GAC_PATH to act
25381         exactly like a prefix.
25382         
25383 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
25384
25385         * reflection.c (mono_reflection_type_from_name): Make a copy of the
25386         type name before modifying it. Fixes #59405.
25387
25388 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
25389
25390         * culture-info.h: added fields for "all datetime patterns".
25391         * locales.c: (  ves_icall_System_Globalization_CultureInfo
25392           _construct_datetime_format ()): fill xxx_patterns fields.
25393         * object.h: added fields for "all datetime patterns" to
25394           MonoDateTimeFormatInfo.
25395         * culture-info-tables.h: reflecting locale-builder updates.
25396
25397 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
25398
25399         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
25400         the event has no add and remove methods. Fixes #59629.
25401
25402 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
25403
25404         * object.c: Fixed possible integer overflow when allocating large
25405         strings.
25406
25407 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
25408
25409         * culture-info-tables.h: reflecting locale-builder updates.
25410
25411 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
25412
25413         * culture-info-tables.h: reflecting locale-builder updates.
25414
25415 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
25416
25417         * culture-info-tables.h: reflecting locale-builder updates.
25418
25419 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
25420
25421         * threads.c: Made Thread.Sleep abortable.
25422
25423 2004-06-02  Martin Baulig  <martin@ximian.com>
25424
25425         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
25426
25427         * debug-mono-symfile.h: Bumped symbol file version number to 37.
25428
25429 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
25430
25431         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
25432
25433 2004-05-30  Jackson Harper  <jackson@ximian.com>
25434
25435         * reflection.c: Do not hardcode assembly versions or public key
25436         tokens anymore. All of this except the corlib section was dead
25437         code anyways.
25438         
25439 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
25440
25441         * object.c (mono_runtime_invoke_array): Automatically create boxed
25442         objects for byref valuetypes if needed. Fixes #59300.
25443         
25444         * object.c (mono_method_return_message_restore): Handle 
25445         MONO_TYPE_OBJECT as well.
25446
25447 2004-05-28  Jackson Harper  <jackson@ximian.com>
25448
25449         * reflection.c: The modified type encoding was causing build
25450         problems. Reverted for now.
25451         
25452 2004-05-28  Jackson Harper  <jackson@ximian.com>
25453
25454         * reflection.c/h: Take an assembly ref so that we dont create
25455         fully qualified names when encoding types in the same assembly as
25456         the custom attribute being emitted.
25457         * appdomain.c: Increment version number.
25458         
25459 2004-05-26  Duncan Mak  <duncan@ximian.com>
25460
25461         * icall.c
25462         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
25463         Set the full version number (major, minor, build, revision).
25464
25465 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
25466
25467         * marshal.c (emit_struct_conv): increment src/dst after blit
25468         (mono_marshal_get_managed_wrapper,
25469         mono_marshal_get_native_wrapper): make sure we have marshalling
25470         info before marshalling params (info computation affects
25471         blittable)
25472
25473         * class.c (class_compute_field_layout): correctly deal with
25474         blittable
25475         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
25476         value types (as per what windows dows by default)
25477         (mono_class_setup_mono_type): System.ValueType is blittable
25478         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
25479         blittable
25480
25481         * marshal.c (mono_marshal_load_type_info): flag types  as
25482         non-blittable if the native layout doesn't match the managed
25483         layout
25484
25485 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25486
25487         * appdomain.c: don't add stuff in the private search path that is
25488         above the application base. If application base is not set, there's
25489         no private search path.
25490
25491 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
25492
25493         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
25494         byref struct arguments in native->managed marshalling.
25495
25496 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
25497
25498         * marshal.c (mono_marshal_get_runtime_invoke): correctly
25499         cache methods using signature (special case for methods
25500         that are value type or string class)
25501         
25502         * image.c (mono_image_close): clean up allocated GSList's
25503         in runtime_invoke_cache.
25504
25505 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25506
25507         * mono-config.c: set the correct path for mono_cfg_dir on windows when
25508         there's no MONO_CFG_DIR environment variable defined.
25509
25510 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25511
25512         * threads.c: windows version must be >= 0x0500 to include OpenThread.
25513
25514 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
25515
25516         * threadpool.c: Really wait for 500ms after the async call, even if the wait
25517           is interrumped.
25518         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
25519           before waiting for it, and call CloseHandle after the wait to unref it.
25520           This will make sure that handles are not disposed too early.
25521
25522 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25523
25524         * appdomain.c:
25525         * appdomain.h:
25526         * icall.c: removed
25527         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
25528         needed now.
25529
25530         * object.c: se the application_base only for the domain that runs
25531         Main. Fixes bug #59216,
25532
25533 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25534
25535         * appdomain.c:
25536         * object.c: only the domain in which Main is run have
25537         SetupInformation.ConfigurationFile set, so moved a few lines from
25538         appdomain.c to object.c.
25539
25540 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25541
25542         * appdomain.c: we tried to load [name].(dll|exe), but according
25543         to bug #57710, we must also try [culture]/[name].(dll|exe) and
25544         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
25545         There's a test case attached to bug #58922.
25546
25547 2004-05-27  Dick Porter  <dick@ximian.com>
25548
25549         * icall.c:
25550         * file-io.c: Implemented icalls for locking and unlocking regions
25551         in a file.
25552         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
25553         FALSE on error (fixes both compiler warning and real bug.)
25554
25555 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
25556
25557         * culture-info-tables.h: reflecting locale-builder updates.
25558
25559           (Added missing ChangeLog entry for 05/26)
25560
25561 2004-05-27  Jackson Harper  <jackson@ximian.com>
25562
25563         * locales.c: Fix some cut and paste errors.
25564         
25565 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25566
25567         * mono-config.c: set the correct path for config. directory on windows.
25568
25569 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
25570
25571         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
25572           on win32.
25573
25574 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
25575
25576         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
25577         from pinvoke functions.
25578         
25579         * marshal.c (mono_ftnptr_to_delegate): Implement this.
25580
25581 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
25582
25583         * culture-info-tables.h: reflecting locale-builder updates.
25584
25585 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
25586
25587         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
25588         #59086.
25589
25590 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
25591
25592         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
25593         * icall.c: Modified icalls for RNG.
25594         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
25595         Windows (CryptoAPI).
25596
25597 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
25598
25599         * locales.c: Fix build.
25600
25601 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
25602
25603         * culture-info-tables.h: reflecting locale-builder updates.
25604
25605 2004-05-25  Jackson Harper  <jackson@ximian.com>
25606
25607         * locales.c: When creating the current culture use the $LANGs
25608         specific culture. So DateTimeFormat and NumberFormat entries are created.
25609         
25610 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
25611
25612         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
25613         a char array as parameter.
25614
25615 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
25616
25617         * image.c: In mono_image_open(), always use an absolute path name to
25618           look for already loaded images.
25619
25620 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
25621
25622         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
25623         missing in the windows build (like older cygwin include files).
25624
25625 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
25626
25627         * icall.c: Fixed check for possible integer overflow in Buffer_
25628         BlockCopy icall. Replaced comments style // by /* */.
25629
25630 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
25631
25632         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
25633         
25634         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
25635         check after MONO_VTADDR. Fixes pinvoke2.exe.
25636
25637         * marshal.h marshal.c metadata.h: Add beginnings of support for
25638         ftnptr -> delegate marshalling.
25639
25640 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
25641
25642         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
25643         * threads.c: Fix warnings.
25644
25645 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
25646
25647         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
25648         * icall.c: Registered icalls for Suspend and Resume.
25649         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
25650           Thread.Abort.
25651         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
25652         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
25653         * process.c: Use WaitForSingleObjectEx.
25654         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
25655           checkpoints.
25656         * threads.c, threads.h: Make use of new Ex wait methods. Improved
25657           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
25658           for Suspend and Resume. Added new mono_thread_stop, used for stoping
25659           background threads. Added basic support for Abort in Windows.
25660           Start new threads using a managed delegate invoke wrapper. This wrapper
25661           has an interruption checkpoint that is needed since an interruption
25662           can be requested before the thread leaves the unmanaged code that starts 
25663           the thread.
25664         * marshal.c: Added interruption checkpoint after every native call, and
25665           also before managed calls for wrappers called from unmanaged code to
25666           go into managed code.
25667         * object.h: Added new field in MonoThread to keep track of interruption
25668           requests.
25669
25670 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
25671
25672         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
25673         calls.
25674
25675 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25676
25677         * appdomain.c:
25678         * assembly.c:
25679         * gc.c:
25680         * locales.c:
25681         * mono-config.c:
25682         * rand.c: getenv -> g_getenv (windows!)
25683
25684         * process.c: complete_path is also used on non-windows platforms.
25685
25686 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25687
25688         * icall.c: new signature for Process_Start.
25689
25690         * process.[ch]: new signature for Process_Start. If we're on windows
25691         and UseShellExecute is false, we have to search for the program by
25692         ourselves if we don't get a full path.
25693
25694 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
25695
25696         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
25697         marshalling and call CleanUpNativeData if needed. Fixes #58646.
25698
25699 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25700
25701         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
25702         Fixes bug #58373.
25703
25704 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25705
25706         * process.c: use double quotes to quote program name and arguments on
25707         windows. Fixes bug #58575.
25708
25709 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25710
25711         * file-io.c: don't return "." and ".." when using windows Find*File.
25712
25713 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
25714
25715         * marshal.c: Don't pass wrappers to message init because method 
25716         addressed used to lookup metadata. part of remoting[2|3] fix.
25717
25718 2004-05-15  Jackson Harper  <jackson@ximian.com>
25719
25720         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
25721         path is essentially the same as MONO_PATH except that it points to
25722         GACs instead of lib directories.
25723         * loader.h: The user gac is gone so we dont need function to
25724         enable/disable it.
25725         * mono-config.c: user gac option is now gone.
25726         
25727 2004-05-15  Jackson Harper  <jackson@ximian.com>
25728
25729         * culture-info.h: Make defines more consistent, add calendar data
25730         to the culture info table.
25731         * culture-info-tables.h: Add basic calendar data. Basically
25732         everyone gets default gregorian until all the data is
25733         updated.
25734         * locales.c: Use the new consistent defines. Set calendar data for
25735         culture info objects.
25736         * object.h: add a field for calendar data to CultureInfo
25737         
25738 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
25739
25740         * image.c: image->runtime_invoke_cache is keyed on signatures now.
25741         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
25742         a signature.
25743         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
25744         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
25745         an extra param that is the pointer of the method to invoke. The IL for
25746         the invoke method is no longer specific to the method, but to the
25747         signature of the method. Thus, we can share the same code for multiple
25748         methods. This reduces the number of methods that have to be compiled.
25749
25750 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
25751
25752         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
25753
25754         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
25755
25756         * icall.c: Optimize Buffer.BlockCopy.
25757
25758 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25759
25760         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
25761         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
25762         quote). Changed them to "MMMM yyyy".
25763
25764 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
25765
25766         * rand.c
25767         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
25768
25769 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
25770
25771         * reflection.h: Updated after changes to managed structures.
25772
25773         * appdomain.c: Bump corlib version.
25774
25775 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25776
25777         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
25778         windows.
25779
25780 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25781
25782         * Makefile.am: link to ../os/libmonoos.la on windows.
25783
25784         * assembly.c:
25785                 -If MONO_DEBUG, warn about non-existing directories in
25786                 MONO_PATH.
25787                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
25788                 compile time variable.
25789                 -Removed init_default_path and call mono_set_rootdir from
25790                 libmonoos.a instead (windows only).
25791
25792         * assembly.h: declare mono_assembly_getrootdir().
25793
25794         * domain.c:
25795         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
25796
25797         * loader.c: s/getenv/g_getenv/
25798
25799 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
25800
25801         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
25802
25803         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
25804
25805         * metadata.h: Add new marshalling conversions.
25806
25807         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
25808         function.
25809
25810         * reflection.c (mono_reflection_get_type): Lookup the type in all
25811         modules of a multi-module assembly. Fixes #58291.
25812
25813 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
25814
25815         * threads.c: Before aborting a background, set the StopRequested
25816         state.  This avoids throwing the Abort exception.
25817         In mono_thread_manage, don't continue with the shutdown until all
25818         aborted threads have actually stopped.
25819
25820 2004-05-10  Jackson Harper  <jackson@ximian.com>
25821
25822         * locales.c: Remove the modifier from culture names.
25823         
25824 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25825
25826         * Makefile.am: monosn is not installed any more. It has been deprecated
25827         in favor of sn.
25828
25829 2004-05-07  Jackson Harper  <jackson@ximian.com>
25830
25831         * locales.c
25832         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
25833         Fix array construction, add bailout if the length is 0.
25834
25835 2004-05-07  Dick Porter  <dick@ximian.com>
25836
25837         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
25838         machine doesn't have a DNS entry.  Patch by Urs Muff
25839         (umuff@quark.com), fixes bug 57928.
25840
25841 2004-05-06  Jackson Harper  <jackson@ximian.com>
25842
25843         * reflection.c: Handle null PublicTokens properly. alloc mem for
25844         assembly names culture so we dont crash when freeing it.
25845         
25846 2004-05-06  Jackson Harper  <jackson@ximian.com>
25847
25848         * assembly.c: Check the usergac when loading with partial names.
25849         
25850 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
25851
25852         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
25853         does nothing for now (not required for Linux/Windows) but the class
25854         library can call it (and a newer or modified runtime could need it).
25855         * icall.c: Registred icall.
25856
25857 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25858
25859         * loader.c: prints a message on module loading error we set MONO_DEBUG
25860         environment variable.
25861
25862 2004-05-05  Jackson Harper  <jackson@ximian.com>
25863
25864         * appdomain.c: Handle PublicKeyToken=null properly.
25865         
25866 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
25867
25868         * environment.c|h: Added icall ves_icall_System_Environment_
25869         GetOSVersionString to get the current OS version as a string.
25870         * icall.c: Registred icall.
25871
25872 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
25873
25874         * object.c: in mono_object_get_virtual_method(), take into account that
25875         non-virtual methods don't have a slot in the vtable. Check needed when
25876         the object is a proxy.
25877
25878 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
25879
25880         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
25881         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
25882
25883         * object.c (mono_class_compute_gc_descriptor): Fix warning.
25884
25885         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
25886         passed when a valuetype is expected.
25887
25888         * object.c (mono_unhandled_exception): Only set the exit code if the
25889         exception happens in the main thread. Fixes thread5.exe.
25890
25891         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
25892         invalid names. Fixes #58047.
25893
25894 2004-05-03  Jackson Harper  <jackson@ximian.com>
25895
25896         * assembly.c: This line was committed accidently and is unneeded.
25897         
25898 2004-05-03  Jackson Harper  <jackson@ximian.com>
25899
25900         * icall.c: Add new icall for Assembly::LoadWithPartialName
25901         * assembly.c/.h: new function that probes the GAC to load partial
25902         assembly names by Paolo Molaro.
25903         
25904 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25905
25906         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
25907         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
25908         (type_get_fully_qualified_name): Added PublicKeyToken when building a
25909         full type name.
25910
25911 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25912
25913         * appdomain.c: fixed check for 'neutral' culture and removed warning.
25914         * reflection.c: fix bug when parsing a full type name and Version is not
25915         the last thing in the string.
25916
25917 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
25918
25919         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
25920         crashes when it is freed.
25921
25922 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25923
25924         * assembly.c: print the compat warning to stderr.
25925
25926 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
25927
25928         * assembly.c (mono_assembly_load_references): Add a compatibility
25929         hack to run old applications that might be still referencing the
25930         3300-based assemblies, only do this for System.xxx.
25931
25932 2004-05-01  Jackson Harper  <jackson@ximian.com>
25933
25934         * appdomain.c: If the culture is neutral we set it to "".
25935         
25936 2004-04-29  Jackson Harper  <jackson@ximian.com>
25937
25938         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
25939
25940 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
25941  
25942         * string-icalls.c: added low overhead function for copying chars
25943         * icall.c: added needed icall for the above function
25944  
25945 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25946
25947         * icall.c: fix return value of get_global_assembly_cache.  Implemented
25948         Environment.GetLogicalDrives.
25949
25950 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
25951
25952         * rand.c: try and talk to egd or prngd
25953         for random bytes if opening devices fail.
25954
25955 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
25956
25957         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
25958         alignment for the type using the native alignment of its members 
25959         instead of using klass->min_align.
25960
25961         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
25962
25963 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25964
25965         * file-io.c:
25966         * socket-io.c: added check for sys/aio.h.
25967
25968 2004-04-28  Dick Porter  <dick@ximian.com>
25969
25970         * threads.c: Don't abort a thread thats already aborting, when
25971         terminating everything.
25972
25973 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25974
25975         * icall.c: added 2 new async calls for Socket.
25976
25977         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
25978         IO on *nix systems.
25979
25980         * threadpool.c: removed unused variable.
25981
25982 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
25983
25984         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
25985
25986 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
25987
25988         * locales.c: put back string_invariant_tolower () and
25989         string_invariant_toupper ().
25990
25991 2004-04-26 David Waite <mass@akuma.org>
25992
25993         * file-io.h:
25994         * socket-io.h:
25995         * threads.h:
25996         * unicode.h: remove comma from end of enumeration declarations
25997
25998 2004-04-26 David Waite <mass@akuma.org>
25999
26000         * debug-mono-symfile.h:
26001         * decimal.c:
26002         * mono_debug.h:
26003         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
26004
26005
26006 2004-04-26  Jackson Harper  <jackson@ximian.com>
26007
26008         * appdomain.c: Increment version number.
26009         
26010 2004-04-26  Jackson Harper  <jackson@ximian.com>
26011
26012         * appdomain.c: Set assembly references public token value when
26013         PublicKeyToken is specified, not the hash_value. Free public token
26014         values when free assembly name data. Previously the public key
26015         token was hex decoded, however we are using hex encoded public key
26016         tokens, so this is not neccasary.
26017         * assembly.c: Lookup assemblies in the gac if their public token
26018         value is set. Add function to allow enabling user gac
26019         lookups. Specify whether or not the assembly was loaded from the
26020         GAC. Compare full assembly names when checking the cache for
26021         assemblies (Temporarily disabled see comment in code). Remove
26022         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
26023         specifies trace-loader they get extra info to stdout on the
26024         loading of assemblies.
26025         * image.h: Add a field for an assembly references public token
26026         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
26027         whether an assembly has been loaded from the GAC.
26028         * image.c: Remove a corlib -> mscorlib name mapping.
26029         * loader.h: Add function to enable/disable the user gac.
26030         * mono-config.c: Check if the usergac is enabled in the config
26031         file.
26032         * icall.c: New icall to determine whether or not an assembly has
26033         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
26034         * tabldefs.h: Add constant for assemblyref flag that specifies a
26035         full public key is used instead of a public token.
26036         * reflection.c: Remove mscorlib -> corlib mappings. Set
26037         PublicTokenValue instead of hash value. This value is a hex
26038         string so it does not need to be expanded.
26039
26040 2004-04-26  Martin Baulig  <martin@ximian.com>
26041
26042         * mono-debug-debugger.c (mono_debugger_initialize): Set
26043         `mono_debugger_initialized' before calling mono_debug_lock().
26044
26045 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
26046
26047         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
26048           InternalToUpper/InternalToLower.
26049         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
26050           removed invariant culture shortcut.  This is now done in managed code.
26051         * locales.c: (string_invariant_toupper/tolower) removed.
26052
26053 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26054
26055         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
26056         Added Poll internal call.
26057
26058         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
26059         call for Poll. Select was too heavy for polling a single socket.
26060
26061         * threadpool.[ch]: added mono_threadpool_cleanup.
26062         * threads.c: use it. Don't use Thread_Abort on windows.
26063
26064 2004-04-23  Martin Baulig  <martin@ximian.com>
26065
26066         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
26067
26068 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
26069
26070         * icall.c: Registred new icalls for key pair protection and added an
26071         icall for Environment.GetFolderPath on Windows.
26072         * security.c|h: Added new icalls for key pair protection.
26073
26074 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26075
26076         * socket-io.c: don't display the non-supported family warning for known
26077         families. Now this is not displayed on windows when checking support
26078         for IPv4/IPv6.
26079
26080 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26081
26082         * class.c: don't display the layout warning for static fields.
26083
26084 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
26085
26086         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
26087         * locales.c, locales.h: Added new icalls for culture-specific
26088         Char.ToLower and Char.ToUpper.
26089
26090 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26091
26092         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
26093         by David Waite.
26094
26095 2004-04-20  Martin Baulig  <martin@ximian.com>
26096
26097         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
26098         of the type name before passing it to mono_reflection_type_from_name().
26099
26100 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
26101
26102         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
26103         encodings here. Fixes #56965.
26104
26105 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
26106
26107         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
26108         fix test on strstr result not that I can see anything that
26109         relies on the result.
26110
26111 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
26112
26113         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
26114         Fixes #57081.
26115
26116         * marshal.c (mono_marshal_get_string_encoding): New helper function.
26117
26118         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
26119         function to determine which marshalling to use for strings. Fixes
26120         #56965.
26121
26122         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
26123
26124         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
26125
26126 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
26127
26128         * icall.c: #include mono-config.h
26129
26130 2004-04-15  Jackson Harper  <jackson@ximian.com>
26131
26132         * culture-info-tables.h: Fix date formats for en-US culture.
26133         
26134 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
26135
26136         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
26137         ThreadPool.SetMinThreads.
26138         * threadpool.c: Implemented ThreadPool.GetMinThreads and
26139         ThreadPool.SetMinThreads.
26140
26141 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
26142
26143         * mono-config.c: also load the .config file in the directory
26144         where the assembly was found.
26145
26146 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
26147
26148         * assembly.c: load per-assembly config files.
26149         * icall.c: decrapified code to get the config dir and moved to
26150         mono-config.c.
26151         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
26152         per-assembly config files. When doing a dll map lookup give precedence
26153         to the per-assembly data.
26154
26155 2004-04-14  Martin Baulig  <martin@ximian.com>
26156
26157         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
26158         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
26159         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
26160
26161         * mono-debugger-debugger.c: While the debugger is locked, remember
26162         whether the symbol tables have changes and send one single
26163         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
26164
26165 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
26166
26167         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
26168
26169         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
26170         function.
26171
26172         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
26173         account when marshalling string arrays. Fixes #56965.
26174
26175 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
26176
26177         * icall.c: Add new icalls mapping for security.
26178         * security.c|h: Add internal calls for WindowsIdentity,
26179         WindowsImpersonationContext and WindowsPrincipal.
26180
26181 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
26182
26183         * class.c: Added comment to ensure the System.MonoDummy class
26184         is removed when no longer necessary
26185
26186 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
26187
26188         * appdomain.c: Pass arguments to the bootstraping exceptions to
26189         minimize JITed methods at boot
26190
26191         * metadata.c (mono_exception_from_name_two_strings): Allow for the
26192         second string to be null.
26193
26194         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
26195         Change the protocol to minimize the JIT methods at startup.  Now
26196         it Returns the internal codepage, if the value of "int_code_page"
26197         is 1 at entry, and we can not compute a suitable code page
26198         number, returns the code page as a string.
26199
26200 2004-04-13  Jackson Harper  <jackson@ximian.com>
26201
26202         * culture-info-tables.h: Fix number of decimal digits for all
26203         english locales.
26204
26205 2004-04-13  Jackson Harper  <jackson@ximian.com>
26206
26207         * icall.c: Clairfy out of sync error message. It is not always
26208         your corlib that is out of sync.
26209
26210 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
26211
26212         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
26213         properties when only the set accessor is overriden. Fixes #55874.
26214
26215 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
26216
26217         * assembly.c (mono_assembly_load_references): Make this thread safe.
26218         Fixes #56327.
26219
26220 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
26221
26222         * monosn.c: Add missing initialization calls.
26223
26224 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
26225
26226         * locales.c:
26227         ves_icall_System_Globalization_CultureInfo_construct_number_format
26228         Fix g_assert so it compiles on fussier compilers re int/ptr
26229         mismatch
26230
26231 2004-04-08  Dick Porter  <dick@ximian.com>
26232
26233         * socket-io.h:
26234         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
26235         53992.  Also rearrange the code so that the internal calls return
26236         an error value and exceptions are thrown from managed code.
26237
26238         * icall.c: Add type info to the socket icalls.
26239
26240 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26241
26242         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
26243         owes me a beer.
26244
26245 2004-04-07  Martin Baulig  <martin@ximian.com>
26246
26247         * class.c (mono_class_from_generic_parameter): Don't default
26248         `klass->parent' to `mono_defaults.object_type'.
26249
26250 2004-04-07  Martin Baulig  <martin@ximian.com>
26251
26252         * reflection.c (mono_reflection_initialize_generic_parameter): Set
26253         `param->pklass->reflection_info'.       
26254
26255 2004-04-07  Jackson Harper  <jackson@ximian.com>
26256
26257         * culture-info-tables.h: Fix date separator symbol.
26258         
26259 2004-04-07  Martin Baulig  <martin@ximian.com>
26260
26261         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
26262         from System.Type to System.MonoType.
26263
26264 2004-04-07  Martin Baulig  <martin@ximian.com>
26265
26266         * reflection.h
26267         (MonoReflectionGenericParam): Added `has_reference_type' and
26268         `has_value_type' fields.
26269
26270         * reflection.c (mono_image_get_generic_param_info): Encode the
26271         correct flags if we have the `class' or `struct' constraint.
26272
26273 2004-04-07  Martin Baulig  <martin@ximian.com>
26274
26275         * reflection.h
26276         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
26277
26278 2004-04-07  Jackson Harper  <jackson@ximian.com>
26279
26280         * appdomain.c: Revert extra patches, just wanted to bump the
26281         version number.
26282         
26283 2004-04-07  Jackson Harper  <jackson@ximian.com>
26284
26285         * Makefile.am: Add culture-info private headers.
26286         * icall.c: Add new icalls for contructing locales.
26287         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
26288         * locales.h: Declare new culture info construction methods.
26289         * object.h: Add new fields used to avoid the CultureMap to
26290         MonoCultureInfo.
26291         * culture-info.h: Definition of structs used in the culture info
26292         tables.
26293         * culture-info-tables.h: Autogenerated tables that contain culture
26294         info data. This file was generated with the locale-builder tool.
26295         * appdomain.c: Incement corlib version number.
26296         
26297 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
26298
26299         * appdomain.c: (mono_runtime_init) move mono_thread_init
26300         to before mono_object_new calls so critical sections
26301         are initialized before use.
26302
26303 2004-04-07  Martin Baulig  <martin@ximian.com>
26304
26305         * icall.c
26306         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
26307         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
26308         (ves_icall_MonoGenericParam_initialize): Removed.
26309         (monogenericparam_icalls): Removed.
26310         (generictypeparambuilder_icalls): Added new table for
26311         System.Reflection.Emit.GenericTypeParameterBuilder.
26312
26313         * reflection.c
26314         (mono_reflection_define_generic_parameter): Removed.
26315         (mono_reflection_initialize_generic_parameter): This is now called
26316         from GenericTypeParameterBuilder's .ctor.
26317
26318 2004-04-06  Martin Baulig  <martin@ximian.com>
26319
26320         * class.c (mono_class_init): Don't inflate nested classes in a
26321         generic instance.
26322         (mono_type_get_name_recurse): Include the generic arguments for
26323         generic instances and generic type declarations.
26324         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
26325         (_mono_class_get_instantiation_name): Removed.
26326         (mono_class_create_generic): Always use `gklass->name' as our name.
26327
26328         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
26329
26330         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
26331         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
26332         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
26333         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
26334         closed generic methods here.
26335
26336         * reflection.c
26337         (mono_reflection_generic_inst_get_nested_types): Removed.
26338         (inflate_mono_method): Copy the generic parameters from the
26339         MonoMethodHeader into out MonoGenericMethod.
26340
26341 2004-04-06  Martin Baulig  <martin@ximian.com>
26342
26343         * row-indexes.h
26344         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
26345
26346         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
26347
26348         * reflection.c (build_compressed_metadata): If we have any entries
26349         in the GenericParam, MethodSpec or GenericParamConstraint tables,
26350         set the header version to 1.1.
26351
26352 2004-04-06  Martin Baulig  <martin@ximian.com>
26353
26354         * class.c (mono_class_init): If we're a generic instance,
26355         initialize our nested classes, too.
26356         (_mono_class_get_instantiation_name): Deal with the new `!%d'
26357         suffix. 
26358
26359 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26360
26361         * process.c: quote the argument passed to the shell on windows.
26362
26363 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
26364
26365         * threads.c (mono_alloc_special_static_data): Allow this to be
26366         called during startup.
26367
26368 2004-04-02  Martin Baulig  <martin@ximian.com>
26369
26370         * icall.c
26371         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
26372
26373 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
26374
26375         * icall.c: Fix build.
26376
26377 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
26378
26379         * Makefile.am: Added security.c|h.
26380         * icall.c: Added icall for get_UserName;
26381         * security.c: New file for security related icalls. Added function
26382         get_UserName for System.Environment (fix #56144).
26383         * security.h: New. Header file for security.c
26384
26385 2004-04-02  Dick Porter  <dick@ximian.com>
26386
26387         * icall.c: Deleted the icalls that were obsoleted some time ago
26388         by the ICU string code, and which were mixed into the icall
26389         rearranging.  Fixes bug 55969.
26390
26391         * string-icalls.h: 
26392         * string-icalls.c: Deleted the code that those icalls reference.
26393
26394 2004-04-01  Martin Baulig  <martin@ximian.com>
26395
26396         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
26397
26398         * class.c (mono_class_from_generic_parameter): Don't set 
26399         TYPE_ATTRIBUTE_INTERFACE.
26400         (my_mono_class_from_generic_parameter): Likewise.
26401
26402 2004-04-01  Martin Baulig  <martin@ximian.com>
26403
26404         * loader.c (find_method): Added an optional `MonoClass *ic'
26405         argument to search in a specific interface.
26406         (mono_get_method_constrained): New public function.
26407
26408 2004-04-01  Martin Baulig  <martin@ximian.com>
26409
26410         * reflection.c (mono_image_get_generic_field_token): Use the
26411         `handleref' cache here.
26412
26413 2004-04-01  Martin Baulig  <martin@ximian.com>
26414
26415         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
26416
26417         * reflection.c (create_generic_typespec): Use the `typespec' hash
26418         here, not the `typeref' one.    
26419
26420 2004-04-01  Martin Baulig  <martin@ximian.com>
26421
26422         * class.c (mono_class_inflate_generic_type): Moved the
26423         functionality into a new static inflate_generic_type() which
26424         returns NULL if it didn't do anything.  Only increment the
26425         `mono_stats.inflated_type_count' if we actually inflated
26426         something.
26427         (mono_class_get_full): Check the classes type to see whether we
26428         need to inflate it; also inflate MONO_TYPE_(M)VAR.
26429
26430 2004-04-01  Jackson Harper  <jackson@ximian.com>
26431
26432         * reflection.c: Set culture for assembly references.
26433         
26434 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
26435
26436         * reflection.[ch], icall.[ch], Fix support for pinning variables.
26437
26438 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26439
26440         * assembly.c:
26441         (do_mono_assembly_open): the critical section also covers
26442         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
26443
26444 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26445
26446         * threads.c:
26447         (mono_manage_threads): abort the background threads when finishing.
26448         Fixes bug #47232.
26449
26450 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26451
26452         * gc.c: only close the done_event handle if there was no timeout.
26453         C-ified comments.
26454
26455 2004-03-30  Martin Baulig  <martin@ximian.com>
26456
26457         * icall.c (icall_entries): It's called "System.Activator", not
26458         "System.Activation".    
26459
26460 2004-03-30  Martin Baulig  <martin@ximian.com>
26461
26462         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
26463         (mono_class_create_from_typespec): Likewise.
26464
26465 2004-03-30  Martin Baulig  <martin@ximian.com>
26466
26467         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
26468         `has_ctor_constraint' and `initialized'.
26469
26470 2004-03-30  Martin Baulig  <martin@ximian.com>
26471
26472         * reflection.c (encode_new_constraint): New static function to add
26473         the constructor constraint attribute to a type parameter.
26474         (encode_constraints): Call encode_new_constraint() if necessary.
26475
26476         * reflection.h
26477         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
26478
26479         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
26480         
26481 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
26482
26483         * reflection.c, icall.c: add support for pinning variables. 
26484
26485 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
26486
26487         * marshal.c (mono_marshal_get_managed_wrapper):
26488         init bool local with zero rather than null.
26489
26490 2004-03-29  Martin Baulig  <martin@ximian.com>
26491
26492         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
26493         the "official" behavior here.
26494         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
26495
26496 2004-03-29  Martin Baulig  <martin@ximian.com>
26497
26498         * icall.c: Reflect latest API changes.
26499
26500 2004-03-29  Martin Baulig  <martin@ximian.com>
26501
26502         * loader.c (mono_get_method_from_token): Also call
26503         mono_metadata_load_generic_params () for abstract and interface
26504         methods; replace the type arguments in the method signature with
26505         the ones which are loaded from the metadata.
26506
26507 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
26508
26509         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
26510         of the lock is not the current thread. MS.NET don't do it, in spite of
26511         what the documentation says. See bug #56157.
26512
26513 2004-03-28  Martin Baulig  <martin@ximian.com>
26514
26515         * class.c (mono_class_init): Don't call init_properties() and
26516         init_events() for generic instances; set `prop->parent' when
26517         inflating properties.
26518
26519         * reflection.c (mono_generic_inst_get_object): Call
26520         `mono_class_init (ginst->klass)'.
26521         (mono_type_get_object): Only create a MonoGenericInst if your
26522         generic type is a TypeBuilder.
26523         (do_mono_reflection_bind_generic_parameters): Only set
26524         `ginst->is_dynamic' if our generic type is a TypeBuilder.
26525
26526 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
26527
26528         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
26529         Fixes #56091.
26530
26531 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26532
26533         * icall.c: added Kill_internal icall.
26534         * process.[ch]: added Kill_internal icall.
26535
26536 2004-03-25  Martin Baulig  <martin@ximian.com>
26537
26538         * class.h (MonoStats): Added `generic_instance_count',
26539         `inflated_method_count', `inflated_type_count' and
26540         `generics_metadata_size'.       
26541
26542 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26543
26544         * reflection.c: no warnings now.
26545
26546 2004-03-25  Martin Baulig  <martin@ximian.com>
26547
26548         * class.c (mono_class_get_full): New public function; does a
26549         mono_class_get(), but also takes a `MonoGenericContext *'.
26550
26551         * loader.c (mono_field_from_memberref): Renamed to
26552         `field_from_memberref', made static and added `MonoGenericContext *'
26553         argument.
26554         (mono_field_from_token): Added `MonoGenericInst *' argument.
26555         (method_from_memberef): Likewise.
26556         (mono_get_method_from_token): Likewise.
26557         (mono_get_method_full): New public function; does a
26558         mono_get_method(), but also takes a `MonoGenericContext *'.
26559
26560         * verify.c (mono_method_verify): Get the method's generic context
26561         and pass it to mono_field_from_token(), mono_get_method_full() and
26562         mono_class_get_full().
26563
26564 2004-03-25  Martin Baulig  <martin@ximian.com>
26565
26566         * class.c (mono_class_inflate_generic_type): Take a
26567         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
26568         `MonoGenericMethod *'.
26569
26570 2004-03-25  Martin Baulig  <martin@ximian.com>
26571
26572         * loader.h (MonoMethodInflated): Store the MonoGenericContext
26573         instead of the MonoGenericMethod here.
26574
26575 2004-03-25  Martin Baulig  <martin@ximian.com>
26576
26577         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
26578         each time we create a new MonoGenericInst, we also create a new
26579         context which points back to us.
26580
26581         * class.c (inflate_method): Use `ginst->context' instead of
26582         creating a new context.
26583
26584         * loader.c (method_from_memberref): Use
26585         `klass->generic_inst->context' instead of creating a new context.
26586
26587 2004-03-25  Martin Baulig  <martin@ximian.com>
26588
26589         * class.h (MonoGenericContext): New struct.
26590         (MonoGenericMethod): Removed `generic_inst'.
26591
26592         * class.c (mono_class_inflate_generic_method): Take a
26593         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
26594
26595 2004-03-25  Martin Baulig  <martin@ximian.com>
26596
26597         * loader.h (MonoMethodInflated): New typedef.
26598
26599         * metadata.h (MonoMethodSignature): Removed `gen_method', make
26600         `generic_param_count' consume just 30 bits, added `is_inflated'
26601         and `has_type_parameters' flags (one bit each).
26602
26603         * class.c (mono_class_inflate_generic_method): Create a
26604         MonoMethodInflated instead of a MonoMethodNormal and set
26605         `is_inflated' in the method signature.
26606
26607         * class.h (MonoGenericMethod): Removed `generic_method'.
26608
26609 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
26610
26611         * image.c: Make sure the name of a MonoImage is always an absolute path.
26612           This fixes bug #54415.
26613
26614 2004-03-24  Martin Baulig  <martin@ximian.com>
26615
26616         * class.c (mono_class_setup_vtable): If we're a generic instance,
26617         use our generic type's vtable size.
26618
26619 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
26620
26621         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
26622         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
26623         problems.
26624
26625 2004-03-23  Martin Baulig  <martin@ximian.com>
26626
26627         * class.h (MonoDynamicGenericInst): Added `int count_events' and
26628         `MonoEvent *events'.
26629
26630         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
26631         (typebuilder_icalls): Added "get_event_info"; calls
26632         mono_reflection_event_builder_get_event_info(). 
26633
26634         * reflection.c (mono_reflection_generic_inst_initialize): Added
26635         `MonoArray *events'.
26636         (mono_reflection_event_builder_get_event_info): New function.
26637
26638 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
26639
26640         * object.h: add mono_type_initialization_init
26641
26642         * object.c (mono_runtime_class_init): 
26643         implement class constructor synchronization rules
26644         to cope with threading issues.  
26645         add mono_type_initialization_init
26646
26647         * appdomain.c (mono_runtime_init): call 
26648         mono_type_initialization_init
26649
26650         * class.h: removing initializing field from MonoVTable
26651
26652 2004-03-23  Martin Baulig  <martin@ximian.com>
26653
26654         * class.c (my_mono_class_from_generic_parameter): Use
26655         `param->name' if it's not NULL. 
26656
26657 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
26658
26659         * class.c: do not insert non-virtual methods in the vtable.
26660         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
26661         that means the method is non-virtual. This never would have
26662         happened before.
26663
26664 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
26665
26666         * profiler.c: Added lock for accessing coverage_hash.
26667
26668 2004-03-22  Martin Baulig  <martin@ximian.com>
26669
26670         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
26671         `method->method->signature->generic_param_count != 0' to make it
26672         work for interface methods.
26673
26674 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26675
26676         * process.c: quote the string passed to the shell using g_shell_quote.
26677
26678 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26679
26680         * threads.c:
26681         (mono_threads_manage): don't remove the finalizer thread and self
26682         from the threads hash table so that mono_thread_manage can be called
26683         more than once.
26684
26685 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26686
26687         * process.c: quote the arguments when UseShellExecute is true. Fixes
26688         bug #55790.
26689
26690 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26691
26692         * threads.c: set mono_thread_detach as a cleanup routine for every
26693         thread. This way it's always executed upon thread termination, either
26694         aborted or finished normally. No more xsp hangs!
26695
26696 2004-03-17  Martin Baulig  <martin@ximian.com>
26697
26698         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
26699         `int count_nested' and a `MonoType **nested'.
26700
26701         * reflection.c (mono_reflection_bind_generic_parameters): Moved
26702         most of the functionality into a new static
26703         do_mono_reflection_bind_generic_parameters() and don't take a
26704         `MonoType *nested_in' argument any more.  Don't compute nested
26705         types here.
26706         (mono_reflection_generic_inst_get_nested_types): New public method
26707         to get nested types.
26708
26709         * class.c (mono_class_create_generic): Set `klass->nested_in' if
26710         we're a nested class.
26711
26712         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
26713         mono_reflection_generic_inst_get_nested_types() to compute the
26714         nested types.
26715
26716 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
26717
26718         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
26719         descriptive error message under windows.
26720         
26721 2004-03-17  Martin Baulig  <martin@ximian.com>
26722
26723         * class.c (dup_type): Added `const MonoType *original' argument;
26724         copy the attrs from the original type.
26725
26726 2004-03-17  Martin Baulig  <martin@ximian.com>
26727
26728         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
26729         `m->generic_inst_cache' here.
26730
26731 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
26732
26733         * exception.h exception.c: Add stack_overflow_exception.
26734
26735 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26736
26737         * threadpool.c:
26738         (overlapped_callback): call SetEvent *after* invoking the callback.
26739         No need to call CloseHandle.
26740
26741 2004-03-16  Martin Baulig  <martin@ximian.com>
26742
26743         * reflection.c (mono_image_get_fieldref_token): Take a
26744         `MonoReflectionField *' instead of a `MonoClassField *' and a
26745         `MonoClass *'; store the `MonoReflectionField *' in the hash.
26746
26747 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26748
26749         * appdomain.c: don't add the culture to the filename we're looking for
26750         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
26751
26752 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26753
26754         * locales.c: don't ignore symbols when doing case insensitive compares.
26755         Thanks Dick! Fixes bug #54046.
26756
26757         * threads.c: surround 'threads' usage with enter/leave in
26758         mono_thread_manage.
26759
26760 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
26761
26762         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
26763         implicitly marshalled as [Out]. Fixes #55450.
26764
26765         (mono_marshal_get_runtime_invoke): Zero out the result if there is
26766         an exception.
26767
26768 2004-03-16  Martin Baulig  <martin@ximian.com>
26769
26770         * class.c (mono_class_from_generic_parameter): Use the actual
26771         parameter name. 
26772
26773 2004-03-16  Martin Baulig  <martin@ximian.com>
26774
26775         * reflection.c (type_get_signature_size): New static function.
26776         Compues the size of the type in a method signature.
26777         (method_get_signature_size): New static function; calls
26778         type_get_signature_size() to compute the actual size of the
26779         method's signature.
26780         (method_encode_signature): Use method_get_signature_size() to get
26781         the signature's size rather than using `nparams * 10'.
26782
26783 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26784
26785         * file-io.h: define here WapiOverlapped on windows. I don't want the
26786         regular OVERLAPPED one.
26787
26788         * file-io.c:
26789         * threadpool.c: somehow, BindIoCompletionCallback is not found.
26790         Disabling AIO on windows.
26791
26792 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26793
26794         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
26795         bug #55385.
26796
26797 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26798
26799         * appdomain.c: upgraded corlib version.
26800
26801         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
26802         and BeginWrite. Allow opening files for asynchrnous operations.
26803
26804         * file-io.h: new struct that maps FileStreamAsyncResult.
26805         * icall.c: added new icalls.
26806         * process.[ch]: support setting child process environment variables
26807         and use the SHELL or COMSPEC when UseShellExecute is true.
26808
26809         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
26810         callback for async. IO is here and also BindHandle.
26811
26812         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
26813         from here.
26814
26815 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
26816
26817         * reflection.c (create_custom_attr): Allow len == 0.
26818
26819         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
26820         computation on big-endian machines.
26821
26822 2004-03-13  Martin Baulig  <martin@ximian.com>
26823
26824         * class.h (MonoGenericInst): Added `int count_ifaces'.
26825
26826         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
26827         `ginst->count_ifaces' instead `klass->interface_count' since we
26828         may get called before the vtable is created.
26829
26830         * loader.c (mono_method_get_param_names): If we're a generic
26831         instance, return and don't initialize the class.
26832
26833         * reflection.c (mono_reflection_setup_generic_class): Don't call
26834         ensure_runtime_vtable().
26835         (mono_reflection_bind_generic_parameters): Set
26836         `ginst->count_ifaces'.
26837
26838 2004-03-11  Jackson Harper <jackson@ximian.com>
26839
26840         * icall.c:
26841         * unicode.c:
26842         * unicode.h: Remove unused System.Char icalls.
26843         
26844 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
26845
26846         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
26847         code when we P/Invoke the first library in Windows.Forms, instead
26848         of when we first open the assembly.
26849
26850         * assembly.c: Drop the lookup from here.
26851
26852 2004-03-10  Martin Baulig  <martin@ximian.com>
26853
26854         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
26855         class for properties, fields and events.  Finally fixes #54945.
26856
26857 2004-03-10  Martin Baulig  <martin@ximian.com>
26858
26859         * metadata.c (mono_metadata_class_equal): New static function;
26860         checks whether two generic instances or two generic parameters are
26861         equal.
26862         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
26863         compare classes.        
26864
26865 2004-03-10  Martin Baulig  <martin@ximian.com>
26866
26867         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
26868
26869         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
26870         argument and write it into the `reflection_info' field.
26871
26872         * icall.c
26873         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
26874         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
26875
26876 2004-03-09  Jackson Harper  <jackson@ximian.com>
26877
26878         * char-conversions.h: use 8 bits for numeric data its all we need
26879         * icall.c: numeric data is only 8 bits now.
26880
26881 2004-03-09  Martin Baulig  <martin@ximian.com>
26882
26883         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
26884
26885         * class.c (init_properties, init_events): Initialize the new
26886         `parent' field.
26887
26888         * reflection.c (typebuilder_setup_properties): Likewise.
26889         (typebuilder_setup_events): Likewise.
26890
26891         * reflection.h (MonoEventInfo): Replaced `parent with
26892         `declaring_type' and `reflected_type'.
26893
26894         * icall.c (ves_icall_get_property_info): Distinguish between
26895         declaring and reflected type.
26896         (ves_icall_get_event_info): Likewise.
26897
26898 2004-03-09  Martin Baulig  <martin@ximian.com>
26899
26900         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
26901         (ves_icall_Type_GetField): Correctly set field->klass.
26902
26903 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
26904
26905         * loader.h: Fix warning.
26906
26907 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
26908
26909         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
26910         library routine if present.  Notice that it will still continue
26911         executing even if its missing, for those working on the Gtk#
26912         edition of Windows.Forms.
26913
26914         * assembly.c (do_mono_assembly_open): If loading the
26915         System.Windows.Forms call mono_loader_wini_init.
26916
26917 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
26918
26919         * class.h: Added MonoRemoteClass struct.
26920         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
26921         function for MonoStrings.
26922         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
26923         Added internal call for getting the proxy type.
26924         * marshal.c: Get the type of transparent proxies from its remote_class.
26925         Added methods that generate the IL for type checks and casts:
26926         mono_marshal_get_isinst, mono_marshal_get_castclass, 
26927         mono_marshal_get_proxy_cancast.
26928         * marshal.h: Declaration of the previous new methods.
26929         * object.c: Added new moethods for creating and updating MonoRemoteClass
26930         instances: mono_remote_class, mono_upgrade_remote_class, 
26931         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
26932         * verify.c: FIx transparent_proxy_fields layout.
26933         * appdomain.c: Bump corlib version.
26934
26935 2004-03-04  Jackson Harper  <jackson@ximian.com>
26936
26937         * icall.c: Add icall to access char conversion tables.
26938         * char-conversions.h: Character conversion tables.
26939         * Makefile.am: Add char-conversions.h private header file.
26940         
26941 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
26942
26943         * appdomain.c (unload_thread_main): Increase unloading timeout to
26944         10 sec as a temporary workaround for Nant problems.
26945
26946 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
26947
26948         * gc.c: Add checks for GC_enable and GC_disable.
26949
26950         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
26951         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
26952         (bug #54988).
26953         
26954 2004-02-27  Martin Baulig  <martin@ximian.com>
26955
26956         * reflection.c (mono_reflection_bind_generic_parameters): Take a
26957         `MonoReflectionType *' instead of a `MonoType *'.
26958
26959 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
26960
26961         * gc.c (run_finalize): Avoid finalizing the object representing the
26962         finalizer thread.
26963         (finalizer_thread): Fix warning.
26964
26965 2004-02-25  Martin Baulig  <martin@ximian.com>
26966
26967         * class.c (_mono_class_get_instantiation_name): Added `int offset'
26968         argument for nested types.
26969         (mono_class_create_generic): Added support for nested generictypes.
26970
26971         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
26972         `GList *nested'.
26973
26974         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
26975
26976         * reflection.c (method_encode_signature): Increase the minimum
26977         value of `size' from 10 to 11.
26978         (mono_reflection_bind_generic_parameters): Take `int type_argc'
26979         and `MonoType **types' arguments instead of the `MonoArray
26980         *types'; added `MonoType *nested_in'.  Recursively instantiate
26981         nested classes. 
26982
26983 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
26984
26985         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
26986         stack_overflow_ex members which are used by exception handling.
26987
26988         * appdomain.c (mono_runtime_init): Initialize the new members.
26989
26990         * gc.c (mono_gc_enable): New helper function.
26991         * gc.c (mono_gc_disable): New helper function.
26992
26993 2004-02-23  Martin Baulig  <martin@ximian.com>
26994
26995         * icall.c: I must have been really stupid - make it actually work
26996         this time ;-)
26997
26998 2004-02-23  Martin Baulig  <martin@ximian.com>
26999
27000         * loader.c (method_from_memberref): Only inflate the method if
27001         it's in another klass.
27002
27003 2004-02-23  Martin Baulig  <martin@ximian.com>
27004
27005         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
27006         (mono_class_init): If we're a generic instance and an interface,
27007         compute `class->interface_id'; also create `class->interfaces'
27008         here and inflate them.
27009
27010         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
27011         `ginst->is_open'.
27012         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
27013
27014         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
27015
27016 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
27017
27018         * reflection.c (method_encode_code): Improved the error message
27019         generated by the exception.
27020
27021 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27022
27023         * icall.c: Martin did not do what he said in the ChangeLog for
27024         2004-02-18, but put back the changes for properties and events.
27025         Commenting those changes out again and adding comment to bug #54518.
27026         
27027         * process.c: removed warning.
27028
27029 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
27030
27031         * marshal.c (emit_struct_conv): Print an error message instead of
27032         asserting when a type does not have the StructLayout attribute.
27033
27034 2004-02-20  Martin Baulig  <martin@ximian.com>
27035
27036         * reflection.c (mono_type_get_object): Also use the cache for
27037         generic instances.
27038         (mono_reflection_bind_generic_parameters): Always compute
27039         `ginst->ifaces'.        
27040
27041 2004-02-20  Martin Baulig  <martin@ximian.com>
27042
27043         * class.h (MonoGenericMethod): Removed `klass'.
27044
27045         * class.c (mono_class_inflate_generic_method): Added `MonoClass
27046         *klass' argument.
27047
27048 2004-02-20  Martin Baulig  <martin@ximian.com>
27049
27050         * reflection.c (method_encode_methodspec): Actually use the
27051         uninflated signature for the memberref.
27052
27053 2004-02-20  Martin Baulig  <martin@ximian.com>
27054
27055         * class.h (MonoGenericMethod): Removed `declaring'.
27056
27057         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
27058         is NULL, compute it here.
27059
27060 2004-02-20  Martin Baulig  <martin@ximian.com>
27061
27062         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
27063
27064         * metadata.c (mono_metadata_generic_inst_hash): New method.
27065         (mono_metadata_generic_inst_equal): New method.
27066
27067         * reflection.c (mono_reflection_bind_generic_parameters): Use the
27068         `klass->image->generic_inst_cache' cache to avoid creating
27069         duplicate MonoGenericInst's.
27070
27071         * class.c (mono_class_inflate_generic_type): Use the cache.
27072
27073 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
27074
27075         * object.c: fixed gc descriptor calculation for embedded valuetypes.
27076
27077 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27078
27079         * icall.c: added Socket.WSAIoctl icall.
27080
27081         * socket-io.[ch]: implemented
27082         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
27083
27084 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
27085
27086         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
27087
27088 2004-02-18  Urs C Muff  <umuff@quark.com>
27089
27090         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
27091         this work on PPC and other big-endian architectures.
27092
27093         * debug-mono-symfile.h: Prepended the names of all the `guint32'
27094         fields with an underscore to make sure they're only accessed by
27095         the read32() macro.
27096
27097 2004-02-18  Martin Baulig  <martin@ximian.com>
27098
27099         * icall.c: Put the klass->refclass changes back for methods and
27100         fields, but not for properties and events.  We're currently not
27101         distinguishing between DeclaringType and ReflectedType for
27102         properties and events, that's what caused the regressions.
27103
27104 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27105
27106         * object.c:
27107         (mono_async_result_new): the handle can be NULL.
27108
27109         * threadpool.c: Use an event instead of a semaphore, don't initialize
27110         it until needed. This saves quite a few semaphores from being created
27111         when using the threadpool.
27112
27113 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
27114
27115         * object.c (mono_string_is_interned_lookup): Fix interning of long
27116         strings. Fixes #54473.
27117
27118         * domain.c (ldstr_equal): Optimize if the two strings are equal.
27119
27120         * icall.c: Revert the klass->refclass changes since they introduce
27121         regressions (bug #54518).
27122
27123 2004-02-18  Martin Baulig  <martin@ximian.com>
27124
27125         * class.c (mono_class_init): If we're a generic instance and don't
27126         come from a TypeBuilder, inflate our members here.
27127         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
27128         (mono_class_create_generic): New public method.
27129         (mono_class_initialize_generic): Removed.
27130         (get_instantiation_name): Renamed to
27131         _mono_class_get_instantiation_name() and made it public.
27132
27133 2004-02-18  Martin Baulig  <martin@ximian.com>
27134
27135         * class.c (mono_class_inflate_generic_type): Clear the new
27136         instance's `nginst->klass' when inflating a generic instance.
27137         (mono_class_is_subclass_of): Added (basic) support for generic
27138         instances.
27139
27140 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
27141
27142         * appdomain.h, domain.c: use a MonoCodeManager instead of a
27143         MonoMempool to hold compiled native code.
27144
27145 2004-02-17  Martin Baulig  <martin@ximian.com>
27146
27147         * class.h (MonoDynamicGenericInst): Added `count_properties' and
27148         `properties'.
27149
27150         * reflection.c (mono_reflection_generic_inst_initialize): Added
27151         `MonoArray *properties' argument.
27152
27153         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
27154
27155 2004-02-17  Martin Baulig  <martin@ximian.com>
27156
27157         * icall.c (ves_icall_Type_GetFields): Renamed to
27158         ves_icall_Type_GetFields_internal() and added a
27159         `MonoReflectionType *rtype' argument; pass it to
27160         mono_field_get_object() to set the field's "reflected" type.
27161         (ves_icall_Type_GetConstructors): Likewise.
27162         (ves_icall_Type_GetEvents): Likewise.
27163         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
27164         argument; pass it to mono_method_get_object() to set the method's
27165         "reflected" type.       
27166
27167 2004-02-17  Martin Baulig  <martin@ximian.com>
27168
27169         * class.h (MonoDynamicGenericInst): New type.
27170         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
27171
27172         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
27173         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
27174         (ves_icall_MonoGenericInst_GetFields): New interncall.
27175
27176         * class.c (mono_class_from_generic): Don't call
27177         mono_class_initialize_generic() if this is a dynamic instance;
27178         ie. it's being created from a TypeBuilder.
27179         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
27180         `class->byval_arg.type'.
27181
27182         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
27183         to `inflate_method' and made static.
27184         (mono_reflection_inflate_field): Removed.
27185         (mono_reflection_generic_inst_initialize): New public method.
27186
27187         * reflection.h (MonoReflectionGenericInst): Removed `methods',
27188         `ctors' and `fields'; added `initialized'.
27189
27190 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
27191
27192         * debug-helpers.c (mono_method_full_name): Fix output for empty
27193         namespaces.
27194
27195 2004-02-12  Martin Baulig  <martin@ximian.com>
27196
27197         * class.h (MonoClassField): Added `MonoType *generic_type'.
27198
27199         * reflection.c (mono_image_get_fieldref_token): Added support for
27200         instantiated generic types.
27201         (field_encode_inflated_field): Removed.
27202         (mono_image_get_inflated_field_token): Removed.
27203         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
27204
27205         * reflection.h (MonoReflectionInflatedField): Removed.
27206
27207 2004-02-12  Martin Baulig  <martin@ximian.com>
27208
27209         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
27210         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
27211
27212         * reflection.c (mono_image_get_methodspec_token): Take a
27213         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
27214         (mono_image_create_token): Check whether we have a
27215         `method->signature->gen_method' and call
27216         mono_image_get_methodspec_token() if appropriate.
27217         (inflated_method_get_object): Removed.
27218         (mono_reflection_bind_generic_method_parameters): Return a
27219         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
27220         (mono_reflection_inflate_method_or_ctor): Likewise.
27221
27222         * reflection.h (MonoReflectionInflatedMethod): Removed.
27223
27224 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
27225
27226         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
27227         for custom valuetype marshalling.
27228
27229         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
27230
27231 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27232
27233         * icall.c: fixed WSAGetLastError_internal name.
27234
27235 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
27236
27237         * threads.c (mono_thread_attach): Allow this to be called multiple
27238         times for a thread.
27239         
27240         * threads.c (build_wait_tids): Do not wait for ourselves.
27241
27242         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
27243         appdomain list is empty.
27244
27245         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
27246         memory returned by mono_string_builder_to_utf16, since it points into
27247         managed memory. Thanks to Bernie Solomon for noticing this.
27248
27249         * icall.c: Add AppDomainSetup icalls.
27250
27251         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
27252
27253         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
27254         types.
27255
27256         * reflection.c (reflection_methodbuilder_to_mono_method): Save
27257         custom attributes to the method_aux struct. Also fix array indexes etc.
27258
27259         * loader.c (mono_method_get_param_names): Make dynamic case work again.
27260         
27261 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
27262
27263         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
27264         (both static and runtime) and reduce startup time.
27265
27266 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
27267
27268         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
27269         AsAny marshalling conversion instead of crashing.
27270
27271         * marshal.c: Fix warnings.
27272
27273 2004-02-09  Martin Baulig  <martin@ximian.com>
27274
27275         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
27276
27277         * reflection.h (MonoReflectionInflatedMethod): Removed the
27278         `declaring' field, it's now in the unmanaged MonoGenericMethod.
27279
27280         * reflection.c (method_encode_methodspec): Removed the `method'
27281         argument; we get it from `gmethod->declaring'.
27282         (inflated_method_get_object): Removed the `declaring' argument.
27283
27284 2004-02-09  Martin Baulig  <martin@ximian.com>
27285
27286         * class.h (MonoGenericMethod): New type.
27287         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
27288         `generic_method'.
27289
27290         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
27291         a `MonoGenericMethod *gen_method' one.
27292
27293         * class.c (mono_class_inflate_generic_type): Take an additional
27294         `MonoGenericMethod * argument.  This is only non-NULL if we're
27295         inflating types for a generic method.   
27296         (mono_class_inflate_generic_signature): Renamed to
27297         inflate_generic_signature() and made static; take a
27298         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
27299         (inflate_generic_header): Take a `MonoGenericMethod *' argument
27300         instead of a `MonoGenericInst *' one.
27301         (mono_class_inflate_generic_method): Likewise.
27302
27303         * reflection.c (encode_generic_method_sig): Take a
27304         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
27305         (method_encode_methodspec): Likewise.
27306         (inflated_method_get_object): Likewise. 
27307
27308         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
27309         field with a `MonoGenericMethod *gmethod' one.  
27310
27311 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
27312
27313         * class.h (mono_class_has_parent): add parens to expansion
27314         so you can ! this.
27315
27316 2004-02-08  Martin Baulig  <martin@ximian.com>
27317
27318         * image.h (MonoImage): Removed `generics_cache'.
27319
27320         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
27321         instead of a `MonoType *' argument; removed the `inflate_methods'
27322         argument.  Don't inflate methods here.
27323
27324         * loader.c (find_method): If it's a generic instance, call
27325         mono_class_init() on the `sclass->generic_inst->generic_type'.
27326
27327         * metadata.c (mono_type_size): Make this work on uninitialized
27328         generic instances; call it on the `ginst->generic_type's class.
27329
27330         * reflection.c (mono_reflection_bind_generic_parameters): Call
27331         mono_class_from_generic() to create the `ginst->klass'.
27332
27333 2004-02-08  Martin Baulig  <martin@ximian.com>
27334
27335         * class.h (MonoClass): Changed type of `generic_inst' from
27336         `MonoType *' to `MonoGenericInst *'.
27337
27338 2004-02-08  Martin Baulig  <martin@ximian.com>
27339
27340         * icall.c (ves_icall_Type_BindGenericParameters): Just call
27341         mono_type_get_object(), this is now creating a `MonoGenericInst'
27342         for MONO_TYPE_GENERICINST.
27343         (ves_icall_MonoGenericInst_GetParentType): Likewise.
27344         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
27345
27346         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
27347         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
27348         (inflated_method_get_object): Added `MonoClass *refclass' argument.
27349         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
27350         and reflected type.
27351
27352         * reflection.h (MonoReflectionInflatedMethod): Removed
27353         `declaring_type' and `reflected_type'.
27354
27355 2004-02-08  Martin Baulig  <martin@ximian.com>
27356
27357         * class.h (MonoGenericInst): Added `MonoType *parent' and
27358         `MonoType **ifaces'.
27359
27360         * reflection.h (MonoReflectionGenericInst): Removed `klass',
27361         `parent' and `interfaces'.
27362
27363         * reflection.c (mono_reflection_bind_generic_parameters): Take a
27364         `MonoType *' argument and return a `MonoType *'.
27365
27366         * icall.c
27367         (ves_icall_MonoGenericInst_GetParentType): New interncall.
27368         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
27369
27370 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
27371
27372         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
27373         valuetype marshalling.
27374
27375 2004-02-06  Martin Baulig  <martin@ximian.com>
27376
27377         * class.c
27378         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
27379         (my_mono_class_from_generic_parameter): Likewise.
27380
27381 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
27382
27383         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
27384         contents of the symbol files lazily.
27385
27386         * object.h (MonoThread): Add 'name' and 'name_len' fields.
27387
27388         * threads.h threads.c icall.c: New icalls for getting and setting the
27389         threads name.
27390
27391 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
27392
27393         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
27394         Raise an exception when the domain is not found.
27395
27396 2004-02-03  Martin Baulig  <martin@ximian.com>
27397
27398         * reflection.c (mono_image_get_methodspec_token): Use the
27399         uninflated signature; fixes gen-33.
27400
27401 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
27402
27403         * gc.c threads.c: Make the finalizer thread a normal managed thread so
27404         the finalizer code can use thread functionality.
27405
27406         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
27407         the finalizer thread.
27408
27409         * threads.c: Make some functions more robust.
27410
27411         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
27412
27413         * metadata.h: Add new marshalling conventions.
27414
27415         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
27416         stringbuilder marshalling. Fixes #53700.
27417
27418         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
27419
27420         * reflection.c (mono_image_get_type_info): Save declarative security
27421         info.
27422
27423         * reflection.c (mono_image_get_field_info): Handle uninitialized 
27424         unmanaged fields as well.
27425
27426         * appdomain.c: Bump corlib version.
27427
27428 2004-02-01  Martin Baulig  <martin@ximian.com>
27429
27430         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
27431         method type arguments.  
27432
27433 2004-01-30  Duncan Mak  <duncan@ximian.com>
27434
27435         * marshal.h: Add prototype for
27436         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
27437         and
27438         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
27439         fix the build.
27440
27441 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
27442
27443         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
27444         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
27445
27446 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
27447
27448         * marshal.c (mono_marshal_get_native_wrapper): Add support for
27449         custom marshalling of valuetypes.
27450
27451         * marshal.c: Fix some warnings.
27452
27453 2004-01-29  Martin Baulig  <martin@ximian.com>
27454
27455         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
27456         for generic method parameters.
27457
27458         * reflection.c (method_encode_methodspec): Write the uninflated
27459         signature into the methodspec table.
27460         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
27461         is always the uninflated method.
27462         (reflection_methodbuilder_to_mono_method): Copy the generic
27463         parameters from the MethodBuilder into `header->gen_params'.
27464
27465 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
27466
27467         * class.c (mono_class_from_generic_parameter): Fix warning.
27468
27469 2004-01-27  Martin Baulig  <martin@ximian.com>
27470
27471         * class.c (mono_class_from_generic_parameter): Don't create
27472         `klass->methods' here.  
27473
27474 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
27475
27476         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
27477         extension since it does not work with libraries named lib<FOO>.dll.so.
27478
27479 2004-01-25  Martin Baulig  <martin@ximian.com>
27480
27481         * class.c (mono_class_inflate_generic_type): Added support for
27482         MONO_TYPE_GENERICINST.
27483
27484         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
27485         inflate methods on open constructed types.      
27486
27487 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27488
27489         * object.c: fire ProcessExit event in the root AppDomain after running
27490         Main. Fixes bug #53299.
27491
27492 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
27493
27494         * socket-io.c: include the new socket-wrappers.h header.
27495         Use the wrappers instead of the unix socket functions to make the code
27496         more clear.
27497
27498 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
27499
27500         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
27501
27502         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
27503         Fixes #22532.
27504
27505 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
27506
27507         * reflection.c (mono_image_create_pefile): Handle the case when the
27508         entry point is not a MethodBuilder.
27509
27510         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
27511         field to ReflectionMethod since it is not allways a builder.
27512
27513         * reflection.c (type_get_fully_qualified_name): New helper function to
27514         return the fully qualified name of a type.
27515
27516         * reflection.c (encode_marshal_blob): Always emit the fully qualified
27517         type name for custom marshallers.
27518
27519         * reflection.c (mono_marshal_spec_from_builder): Ditto.
27520
27521         * class.c (mono_class_setup_vtable): If a parent class already 
27522         implements an interface, use the implementing methods from that class.
27523         Fixes #53148.
27524
27525 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27526
27527         * threadpool.c: just return instead of ExitThread to allow for thread
27528         clean up earlier.
27529
27530 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
27531
27532         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
27533         when closing resource modules.
27534
27535         * reflection.c (mono_image_create_pefile): Handle the case when the
27536         entry point is not a MethodBuilder.
27537
27538         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
27539         field to ReflectionMethod since it is not allways a builder.
27540
27541 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
27542
27543         * marshal.c (mono_marshal_get_managed_wrapper): 
27544         mono_marshal_alloc takes native int so CONV_I
27545         the arg for 64bits.
27546
27547 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
27548
27549         * reflection.c (fixup_cattrs): New function to fixup the methoddef
27550         tokens in the cattr table. Fixes #53108.
27551
27552 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27553
27554         * loader.c: don't trim ".dll" before looking up in the config file.
27555         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
27556
27557 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
27558
27559         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
27560         Return the module which contains the resource as well.
27561         (ves_icall_System_Reflection_Module_Close): New icall.
27562
27563         * appdomain.c: Bump corlib version number.
27564
27565         * image.c (mono_image_addref): New public function.
27566
27567         * assembly.c: Call mono_image_addref.
27568
27569         * reflection.c (mono_module_get_object): Increase reference count of 
27570         the image.
27571
27572         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
27573         Fixes #22532.
27574
27575         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
27576         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
27577         proper exceptions on DllImport problems.
27578
27579 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
27580
27581         * class.c, metadata.c: eliminate CSIZE macro.
27582
27583 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
27584
27585         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
27586         * object.h: Added async_callback field in MonoAsyncResult.
27587         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
27588         * verify.c: Added async_callback in MonoAsyncResult layout.
27589
27590 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
27591
27592         * reflection.c (mono_reflection_get_custom_attrs): Add support
27593         for Modules.
27594
27595 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
27596
27597         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
27598         marshalling.
27599         (mono_marshal_method_from_wrapper): Add null pointer check.
27600
27601 2004-01-16  Martin Baulig  <martin@ximian.com>
27602
27603         * debug-mono-symfile.h: Set version number to 36 and reflect
27604         latest symbol writer changes.
27605
27606 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
27607
27608         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
27609         multi-dimensional arrays.
27610         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
27611         (mono_class_from_mono_type): Use bounded_array_class_get.
27612         
27613         * class.c (mono_bounded_array_class_get): New function which takes
27614         a 'bounded' bool argument to distinguish vectors from one dimensional
27615         arrays.
27616
27617         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
27618         bounded_array_class_get if the array has bounds.
27619
27620         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
27621         Search modules loaded using AssemblyBuilder:AddModule as well.
27622
27623 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27624
27625         * appdomain.c: increased corlib version.
27626         * filewatcher.c: removed g_print.
27627         * icall.c:
27628         (get_property_info): only allocate what is actually requested.
27629         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
27630
27631 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27632
27633         * Makefile.am: added filewatcher.[ch]
27634         * filewatcher.[ch]: FileSystemWatcher runtime support.
27635         * icall.c: added new FSW icalls.
27636
27637 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
27638
27639         * string-icalls.c: fix stringbuilder regression as suggested by
27640         Iain McCoy <iain@mccoy.id.au>.
27641
27642 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
27643
27644         * process.c (process_read_stringtable_block): Recognize '007f' as
27645         a language neutral stringtable block.
27646
27647 2004-01-12  Patrik Torstensson
27648
27649         * object.h (MonoStringBuilder) : Changed layout to support our
27650         new stringbuilder class.
27651         * marshal.c: Change marshalling to support the new layout of 
27652         string builder.
27653         * appdomain.c: increased version number because new layout of
27654         string builder.
27655
27656 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
27657
27658         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
27659         assembly name as an string instead of an AssemblyName, since it is
27660         easier to extract info from it.
27661
27662         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
27663         the culture subdirectories too. Fixes #52231.
27664
27665 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27666
27667         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
27668         It takes 2 new parameters with an optional name for the method to look
27669         for and case ignoring info.
27670
27671         * threadpool.c: removed unused variable.
27672
27673 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27674
27675         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
27676         It takes 2 new parameters with an optional name for the property to look
27677         for and case ignoring info.
27678         Fixes bug #52753.
27679
27680 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
27681
27682         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
27683         Fix #52451.
27684
27685 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27686
27687         * appdomain.c:
27688         * assembly.c: escape the uri before passing it to g_filename_from_uri.
27689         Fixes bug #52630.
27690
27691 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
27692
27693         * reflection.c: Add support for more than one unmanaged resource.
27694
27695         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
27696         in field->def_value, as done in all other cases.
27697
27698         * reflection.c (mono_reflection_get_custom_attrs): Add support for
27699         TypeBuilders.
27700
27701         * reflection.c (mono_reflection_create_runtime_class): Remove 
27702         errorneous assignment to klass->element_class, since it is already
27703         done in mono_reflection_setup_internal_class.
27704
27705 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27706
27707         * gc.c: added missing LeaveCriticalSection.
27708         * icall.c: indented a couple of lines.
27709         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
27710         if we call EndInvoke inside a callback. Fixes bug #52601.
27711
27712 2004-01-07  Martin Baulig  <martin@ximian.com>
27713
27714         * mono-debug-debugger.h
27715         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
27716
27717 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
27718
27719         * appdomain.c: Use messages in NotImplementedException.
27720
27721         * exception.c (mono_get_exception_not_implemented): Now this takes
27722         a message argument.
27723
27724         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
27725         exception instead of g_asserting an aborting when something is not
27726         implemented.
27727
27728         Add some inline docs.
27729
27730 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
27731
27732         * reflection.h: Update after changes to object layout.
27733
27734         * reflection.c: Implement saving of unmanaged aka win32 resources.
27735
27736         * appdomain.c: Bump version number.
27737
27738         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
27739         Handle missing domains gracefully.
27740
27741 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
27742
27743         * file-io.c : On Windows, there are much more invalid_path_chars.
27744
27745 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
27746
27747         * class.h, object.c: prepare for GetType () speedup.
27748
27749 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
27750
27751         * profiler.c: workaround for --profile null reference exception on
27752           cygwin. Patch by Patrik Torstensson.
27753
27754 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
27755
27756         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
27757         make work for unaligned access.
27758
27759 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
27760
27761         * class.c: small cleanup (class->fields [i] -> field).
27762         * image.c: check address of metadata is valid.
27763
27764 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
27765
27766         * assembly.h assembly.c (mono_assembly_loaded): New public function to
27767         search the list of loaded assemblies.
27768
27769         * reflection.c (mono_reflection_type_from_name): Use 
27770         mono_assembly_loaded instead of mono_image_loaded.
27771
27772         * reflection.c: Fix warnings.
27773
27774 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
27775
27776         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
27777         is dynamic. This is needed since an assembly can contain both dynamic and
27778         non-dynamic images.
27779
27780         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
27781         assembly->dynamic.
27782
27783         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
27784
27785         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
27786         to store modules loaded using AddModule.
27787
27788         * reflection.c (mono_image_fill_file_table): Generalize this so it works
27789         on Modules.
27790
27791         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
27792
27793         * reflection.c (mono_image_fill_export_table_from_module): New function to
27794         fill out the EXPORTEDTYPES table from a module.
27795
27796         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
27797         into a separate function. Also handle loaded non-dynamic modules.
27798
27799         * reflection.c (mono_image_basic_init): Fix memory allocation.
27800
27801         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
27802
27803         * assembly.c (mono_assembly_load_references): Make this public.
27804
27805 2003-12-19  Martin Baulig  <martin@ximian.com>
27806
27807         * class.c (mono_class_initialize_generic): Made this static, take
27808         a `MonoGenericInst *' instead of a `MonoClass *'.
27809         (mono_class_from_generic): Call mono_class_initialize_generic()
27810         unless we're already initialized or being called from
27811         do_mono_metadata_parse_generic_inst().
27812
27813         * class.h (MonoGenericInst): Added `initialized' and
27814         `init_pending' flags.
27815
27816         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
27817         `mono_class_init (gklass)' or mono_class_initialize_generic()
27818         here; set `generic_inst->init_pending' while parsing the
27819         `type_argv'.
27820
27821 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
27822
27823         * locales.c: include string.h for memxxx prototypes
27824
27825 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
27826
27827         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
27828         constructor when accessing literal fields.
27829
27830 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
27831
27832         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
27833
27834         * reflection.c (assembly_add_resource_manifest): New function to fill
27835         the MANIFESTRESOURCE table.
27836
27837         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
27838
27839         * reflection.h: Update to changes in class layout.
27840
27841         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
27842         Reenable call to mono_runtime_is_shutting_down ().
27843
27844         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
27845         determine if the runtime is shutting down.
27846
27847 2003-12-16  Jackson Harper <jackson@ximian.com>
27848
27849         * icall.c: comment out call to mono_runtime_is_shutting_down to
27850         fix build.
27851         
27852 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
27853
27854         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
27855         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
27856
27857 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
27858
27859         * reflection.c: move definition of swap_with_size
27860         to before its first call
27861
27862 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
27863
27864         * appdomain.c (mono_runtime_is_shutting_down): New public function.
27865
27866         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
27867         icall.
27868
27869         * object.c: Fix warnings.
27870
27871         * icall.c (ves_icall_Type_Get...): Only consider inherited static
27872         members if FlattenHierarchy is set.
27873
27874         * reflection.c (mono_image_add_decl_security): New function to emit
27875         declarative security.
27876
27877         * reflection.h reflection.c: Add support for declarative security.
27878
27879         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
27880         
27881 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
27882
27883         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
27884         
27885         * appdomain.c verify.c: Moved corlib version checking into its own
27886         function in appdomain.c since it needs to create vtables etc.
27887
27888 2003-12-13  Patrik Torstensson <p@rxc.se>
27889
27890         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
27891         instead of unwrapped server.
27892
27893 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
27894
27895         * verify.c (check_corlib): Fix field index.
27896
27897 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
27898
27899         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
27900         GetGacPath icall.
27901
27902 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
27903
27904         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
27905         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
27906         cope with sizeof(size_t) != sizeof(guint32).
27907
27908 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27909
27910         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
27911         in case of failure.
27912
27913 2003-12-10  Mark Crichton <crichton@gimp.org>
27914
27915         * icall.c: removed the GetNonZeroBytes.  We now handle this case
27916         in managed code.
27917
27918         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
27919
27920 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
27921
27922         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
27923         marked as deleted.
27924
27925 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
27926
27927         * verify.c (check_corlib): Handle the case when the version field is 
27928         initialized by a static constructor.
27929
27930 2003-12-08  Patrik Torstensson  <p@rxc.se>
27931
27932     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
27933
27934 2003-12-08  Martin Baulig  <martin@ximian.com>
27935
27936         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
27937         a MonoReflectionGenericParameter, also take the parameter index
27938         and name as arguments.
27939         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
27940         (ves_icall_MonoGenericParam_initialize): New interncall.
27941         (ves_icall_Type_make_byref_type): New interncall.
27942
27943         * reflection.h (MonoReflectionGenericParam): Derive from
27944         MonoReflectionType, not just from MonoObject.  Added `refobj' and
27945         `index' fields.
27946
27947         * reflection.c (mono_reflection_define_generic_parameter): Create
27948         and return a new MonoReflectionGenericParam; don't initialize the
27949         constraints here.
27950         (mono_reflection_initialize_generic_parameter): New public method;
27951         initializes the constraints and creates the `param->pklass'.
27952
27953 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
27954
27955         * reflection.h reflection.c: Use the new fields 'num_types', 
27956         'num_fields' and 'num_methods' to track the number of types etc.
27957
27958         * verify.c (check_corlib): Check corlib version number.
27959
27960 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
27961
27962         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
27963         function works on all methods.
27964
27965 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
27966
27967         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
27968         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
27969         the custom_type_info flag of the transparent proxy.
27970         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
27971         objects that supports IRemotingTypeInfo.
27972         * object.h: Added custom_type_info field in transparent proxy.
27973
27974 2003-12-06  Martin Baulig  <martin@ximian.com>
27975
27976         * class.c (mono_class_create_from_generic): Removed.
27977         (mono_class_from_generic): Check `ginst->klass' before doing
27978         anything else.  This is important to fully support "recursive"
27979         generic types.
27980
27981         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
27982         empty `generic_inst->klass' before doing anything else.
27983
27984 2003-12-06  Dick Porter  <dick@ximian.com>
27985
27986         * verify.c: 
27987         * object.h:
27988         * icall.c:
27989         * locales.c: Use C structs to access class fields.  Don't do a
27990         conversion between MonoString and UChar because both are
27991         platform-endian UTF-16.  Compare now takes startindex and count
27992         parameters.  Add a char overload for IndexOf.  Speed up the
27993         invariant string IndexOf.
27994
27995 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
27996
27997         * Makefile.am (monosn_LDADD): Fix parallel build.
27998
27999 2003-12-04  Martin Baulig  <martin@ximian.com>
28000
28001         * icall.c
28002         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
28003         (ves_icall_Type_make_array_type): New interncall.       
28004
28005 2003-12-04  Martin Baulig  <martin@ximian.com>
28006
28007         * locales.c: also change it in the !HAVE_ICU case.
28008
28009 2003-12-04  Dick Porter  <dick@ximian.com>
28010
28011         * icall.c:
28012         * locales.c: construct_compareinfo is now in CompareInfo, not
28013         CultureInfo.
28014
28015 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
28016
28017         * image.c (mono_image_load_file_for_image): Cache loaded images in the
28018         image->files array.
28019
28020         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
28021         table as well.
28022
28023         * assembly.c (mono_assembly_load_references): Only load references
28024         once.
28025
28026         * class.c (mono_class_from_name): Avoid linear search of the 
28027         EXPORTEDTYPE table.
28028
28029         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
28030
28031 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
28032
28033         * image.h (MonoImage): Add 'field_cache' field.
28034
28035         * loader.c (mono_field_from_token): Cache field lookups.
28036         
28037         * reflection.c (mono_module_get_object): Fix name property.
28038
28039         * icall.c (ves_icall_get_enum_info): Update after changes to 
28040         mono_metadata_get_constant_index ().
28041
28042         * icall.c: Get rid of get_type_info icall, use a separate icall for
28043         each type property to avoid needless memory allocations. Fixes #51514.
28044
28045         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
28046         to avoid needless binary searches.
28047
28048         * class.c (class_compute_field_layout): Move the initialization of
28049         field->def_value to mono_class_vtable ().
28050
28051         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
28052         non-corlib types.
28053
28054         * object.c (mono_object_allocate): Make it inline.
28055
28056         * object.c (mono_object_allocate_spec): Make it inline.
28057         
28058 2003-12-02  Dick Porter  <dick@ximian.com>
28059
28060         * locales.c (create_NumberFormat): NumberFormatInfo construction.
28061         Patch by Mohammad DAMT (mdamt@cdl2000.com).
28062
28063 2003-12-01  Dick Porter  <dick@ximian.com>
28064
28065         * threads.c: Fix signature and call in CreateMutex and
28066         CreateEvent.
28067
28068 2003-12-01  Dick Porter  <dick@ximian.com>
28069
28070         * icall.c: 
28071         * locales.c: Implement string compares and searching
28072
28073         * object.h: Add extra Thread field
28074
28075 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
28076
28077         * reflection.c (fixup_method): Add support for MonoCMethod.
28078
28079 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
28080
28081         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
28082
28083         * reflection.c (assembly_name_to_aname): Allow extra characters in
28084         assembly names. Fixes #51468.
28085
28086 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
28087
28088         * exception.c (mono_exception_from_name_domain): New helper function.
28089
28090         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
28091         exception object in the correct domain.
28092
28093         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
28094         formatting + make a copy a the input data.
28095
28096         * loader.c (mono_get_method_from_token): Methods which contain
28097         native code do not have entries in the ImplMap.
28098
28099         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
28100         Thanks to Gonzalo for spotting this.
28101         
28102         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
28103         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
28104
28105         * assembly.h (mono_assembly_load_from): Split the second part of 
28106         assembly loading into a new public function.
28107
28108         * exception.h (mono_get_exception_bad_image_format): New function.
28109
28110 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
28111
28112         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
28113         Enumerate all modules inside a dynamic assembly. Fixes #51293.
28114         
28115         * icall.c: Add new icall for creating dynamic methods.
28116
28117         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
28118
28119         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
28120
28121         * reflection.c (mono_reflection_create_dynamic_method): New icall to
28122         create a dynamic method.
28123
28124         * reflection.c (resolve_object): New helper function.
28125
28126         * reflection.c: Generalize ReflectionMethodBuilder and the functions
28127         which manipulate it so they can also work on dynamic methods.
28128
28129         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
28130         creating the MonoReflectionMethodAux structure if it is not needed.
28131         
28132         * reflection.h verify.c: Update after changes to object layout.
28133
28134         * reflection.c (method_builder_encode_signature): Fix compilation on
28135         gcc 2.95.x.
28136
28137 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
28138
28139         * appdomain.h: Added support for context static fields. Added static_data
28140           field to MonoAppContext and renamed thread_static_fields to a more
28141           generic special_static_fields in MonoAppDomain, since it can now contain
28142           context static fields.
28143         * domain.c: Updated hashtable name.
28144         * object.c: Replaced field_is_thread_static() for a more generic
28145           field_is_special_static() which also checks for context static attribute.
28146           In mono_class_vtable(), added support for static context fields.
28147         * threads.c: Changed methods that manage thread static fields to more
28148           generic methods so they can be reused both for thread and context static
28149           data.
28150         * threads.h: Declared some new methods.
28151
28152 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
28153
28154         * reflection.h: Update after changes to the managed types.
28155
28156         * reflection.c (encode_custom_modifiers): New helper function.
28157
28158         * reflection.c (method_encode_signature): Emit custom modifiers.
28159
28160         * reflection.c (field_encode_signature): Emit custom modifiers.
28161
28162 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
28163
28164         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
28165
28166         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
28167         implementation.
28168
28169         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
28170         icall.
28171
28172         * object.c (mono_field_get_value_object): New function.
28173
28174         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
28175         specific.
28176
28177 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
28178
28179         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
28180         return a preallocated out-of-memory exception instance.
28181
28182         * object.c (out_of_memory): Use the new function.
28183
28184         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
28185         flag is before the custom modifiers. Fixes #49802.
28186
28187 2003-11-16  Martin Baulig  <martin@ximian.com>
28188
28189         * class.c (mono_class_is_open_constructed_type): Implemented the
28190         MONO_TYPE_GENERICINST case.
28191
28192 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
28193
28194         * assembly.c (mono_assembly_fill_assembly_name): New function to
28195         fill out the MonoAssemblyName structure.
28196         (mono_assembly_open): Use the new function.
28197
28198         * icall.c (fill_reflection_assembly_name): New helper function.
28199
28200         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
28201         new function.
28202
28203         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
28204
28205 2003-11-15  Martin Baulig  <martin@ximian.com>
28206
28207         * class.c (mono_class_is_open_constructed_type): New public
28208         function; checks whether a type is an open constructed type,
28209         ie. whether it still contains type parameters.
28210         (mono_class_inflate_generic_type): If we're a type parameter and
28211         the inflated type is also a MONO_TYPE_(M)VAR, return the original
28212         type.
28213
28214         * class.h (MonoGenericInst): Added `guint32 is_open'.
28215
28216         * loader.c (method_from_methodspec): Check whether we're an open
28217         or closed constructed type and set `ginst->is_open'.
28218
28219         * reflection.c (mono_reflection_bind_generic_parameters): Check
28220         whether we're an open or closed constructed type and set
28221         `ginst->is_open'.
28222         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
28223         from open constructed types.
28224
28225 2003-11-15  Martin Baulig  <martin@ximian.com>
28226
28227         * reflection.c (mono_reflection_bind_generic_parameters): If we're
28228         a generic instance (instead of a generic type declaration) with
28229         unbound generic parameters, bind them to our actual types.
28230
28231 2003-11-14  Martin Baulig  <martin@ximian.com>
28232
28233         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
28234
28235         * reflection.c (mono_reflection_bind_generic_parameters): If we're
28236         an interface type, populate `res->interfaces' with instantiated
28237         versions of all the interfaces we inherit.
28238
28239 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
28240
28241         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
28242         when MONO_PATH is set but doesn't contain the install dir.
28243
28244 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28245
28246         * icall.c:
28247         (ves_icall_Type_GetInterfaces): don't return an interface twice when
28248         it's also implemented in base classes. Fixes bug #50927.
28249
28250 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
28251
28252         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
28253         if this method is called from a finalizer. Fixes #50913.
28254
28255 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
28256
28257         * threads.c: Implement VolatileRead/VolatileWrite
28258
28259         * icall.c: Add new icalls for VolatileRead/VolatileWrite
28260
28261 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
28262
28263         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
28264         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
28265         2.95.3.
28266
28267         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
28268         from Peter Ross (pro@missioncriticalit.com).
28269         
28270 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
28271
28272         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
28273
28274 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
28275
28276         * assembly.c (mono_assembly_load_references): Disable check because it
28277         triggers on older corlibs which lots of people have.
28278
28279 2003-11-12  Jackson Harper  <jackson@ximian.com>
28280
28281         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
28282         load corlib.dll if mscorlib.dll is not found.
28283         * assembly.h: Remove corlib name define.
28284         * class.c:
28285         * domain.c:
28286         * image.c: Change corlib name to mscorlib.
28287         
28288 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
28289
28290         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
28291
28292 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
28293
28294         * appdomain.h: Added loader_optimization here to sync with the C#
28295         code, and add disallow_binding_redirects field.
28296
28297 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
28298
28299         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
28300
28301         * reflection.c (mono_image_build_metadata): Fix crash on modules
28302         with no types.
28303
28304         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
28305
28306         * icall.c (ves_icall_get_method_info): Return callingConvention as
28307         well.
28308
28309         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
28310         namespaces from the EXPORTEDTYPE table as well.
28311
28312         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
28313         from all modules inside the assembly.
28314         
28315 2003-11-11  Martin Baulig  <martin@ximian.com>
28316
28317         * reflection.c (mono_reflection_bind_generic_parameters): Make
28318         this work for interfaces.
28319
28320 2003-11-11  Martin Baulig  <martin@ximian.com>
28321
28322         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
28323
28324 2003-11-11  Martin Baulig  <martin@ximian.com>
28325
28326         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
28327         "MonoInflatedMethod" and "MonoInflatedCtor".
28328
28329 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
28330
28331         * reflection.c (resolution_scope_from_image): Use the assembly table
28332         from the manifest module, since other modules don't have it.
28333
28334         * debug-helpers.c (mono_type_full_name): New helper function.
28335
28336         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
28337
28338         * image.c (mono_image_load_file_for_image): New public function which
28339         is a replacement for the load_file_for_image in class.c.
28340
28341         * assembly.c (mono_assembly_load_module): A wrapper for the function
28342         above which does assembly association and reference loading too.
28343
28344         * class.c (mono_class_from_name): Call mono_assembly_load_module.
28345
28346 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28347
28348         * appdomain.c: not all of the attributes for the full assembly name
28349         are required and the order doesn't matter. Fixes bug #50787.
28350
28351 2003-11-10  Dick Porter  <dick@ximian.com>
28352
28353         * locales.c: Use platform-endian UTF16
28354
28355 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
28356
28357         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
28358         
28359 2003-11-10  Martin Baulig  <martin@ximian.com>
28360
28361         * metadata.c
28362         (mono_metadata_load_generic_params): Make this actually work.
28363
28364         * reflection.c (mono_reflection_bind_generic_parameters): If our
28365         parent is a generic instance, pass all the `types' to it, no
28366         matter whether it has the same number of type parameters or not.
28367
28368 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
28369
28370         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
28371
28372         * assembly.c (mono_assembly_load_references): Move the image<->assembly
28373         assignment code to this function so it gets called recursively for all
28374         modules.
28375
28376         * image.c (load_modules): Remove the assembly assignment since it is
28377         now done by mono_assembly_load_references.
28378         
28379         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
28380         Add 'module' argument.
28381         (mono_module_get_types): New helper function.
28382         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
28383
28384 2003-11-08  Martin Baulig  <martin@ximian.com>
28385
28386         * class.c (mono_class_inflate_generic_method): Interface method
28387         don't have a header.
28388
28389         * reflection.c (mono_image_get_methodspec_token): Take an
28390         additional `MonoGenericInst *' argument instead of reading it from
28391         the header; this is necessary to support interfaces.
28392         (mono_image_create_token): Pass the `MonoGenericInst *' from the
28393         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
28394         (inflated_method_get_object): Take an additional `MonoGenericInst *'
28395         argument.
28396
28397         * reflection.h (MonoReflectionInflatedMethod): Added
28398         `MonoGenericInst *ginst'.
28399
28400 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
28401
28402         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
28403
28404 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
28405
28406         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
28407
28408 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
28409
28410         * reflection.c 
28411         (reflection_methodbuilder_from_method_builder):
28412         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
28413         initialize a ReflectionMethodBuilder structure.
28414         (mono_image_get_methodbuilder_token):
28415         (mono_image_get_ctorbuilder_token): New functions to emit memberref
28416         tokens which point to types in another module inside the same assembly.
28417
28418         * reflection.c: Use the new helper functions.
28419         
28420         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
28421
28422         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
28423         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
28424
28425         * reflection.c (resolution_scope_from_image): Emit a moduleref if
28426         neccesary.
28427
28428         * reflection.c (mono_image_build_metadata): Emit metadata only for the
28429         current module. Emit the manifest only for the main module.
28430
28431         * reflection.c (mono_image_create_token): Add assertion when a 
28432         memberref needs to be created.
28433
28434         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
28435
28436         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
28437         larger buffer for the custom attribute blob. Fixes #50637.
28438         
28439 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28440
28441         * threadpool.c: notify listener on async processing handles after
28442         invoking the async callback. Thanks to Zoltan.
28443
28444 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
28445
28446         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
28447         avoid code duplication.
28448
28449         * reflection.h (MonoDynamicImage): New type which is currently unused,
28450         but will be used through the ref.emit code in place of 
28451         MonoDynamicAssembly.
28452
28453         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
28454         object layout.
28455
28456         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
28457         a MonoDynamicImage instead of just a MonoImage.
28458         
28459         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
28460         icalls to ModuleBuilder but keep their semantics, so they will work
28461         with moduleb->assemblyb. This will change later.
28462         
28463 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
28464
28465         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
28466         object layout.
28467
28468         * reflection.c (mono_image_build_metadata): Avoid creation of a default
28469         main module, since it is now done by the managed code.
28470
28471 2003-11-03  Martin Baulig  <martin@ximian.com>
28472
28473         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
28474         `ginst->klass' here.
28475         (method_encode_methodspec): Don't use the `ginst->generic_method's
28476         klass if it's a generic instance, use `ginst->klass' in this case.
28477
28478 2003-11-03  Martin Baulig  <martin@ximian.com>
28479
28480         * reflection.c (mono_image_get_generic_method_param_info):
28481         Removed, use mono_image_get_generic_param_info() instead.
28482         (mono_image_get_type_info): Write the GenericParam table before
28483         the Method table.  This is neccessary because in the GenericParam
28484         table, type parameters of the class (ie. '!0' etc.) must come
28485         before the ones from its generic methods (ie. '!!0' etc).
28486
28487 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
28488
28489         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
28490
28491 2003-11-02  Martin Baulig  <martin@ximian.com>
28492
28493         * reflection.c (create_generic_typespec): Take a
28494         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
28495         the generic parameters from it.
28496
28497 2003-11-02  Martin Baulig  <martin@ximian.com>
28498
28499         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
28500         instead of a `MonoClassField *' since we just need the type.
28501         (create_generic_typespec): New static function.  Creates a
28502         TypeSpec token for a generic type declaration.
28503         (mono_image_get_generic_field_token): New static function.
28504         (mono_image_create_token): If we're a FieldBuilder in a generic
28505         type declaration, call mono_image_get_generic_field_token() to get
28506         the token.
28507
28508 2003-11-02  Martin Baulig  <martin@ximian.com>
28509
28510         * reflection.h
28511         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
28512         `MonoReflectionGenericInst *declaring_type' and
28513         `MonoReflectionGenericInst *reflected_type' fields.
28514
28515         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
28516         `MonoReflectionGenericInst *declaring_type' and a
28517         `MonoReflectionGenericInst *reflected_type' argument instead of a
28518         single `MonoReflectionGenericInst *type' one.  Set
28519         `res->declaring_type' and `res->reflected_type' from them.
28520         (mono_reflection_inflate_field): Likewise.      
28521
28522 2003-11-02  Martin Baulig  <martin@ximian.com>
28523
28524         * class.c (mono_class_setup_vtable): Don't store generic methods
28525         in the vtable.  
28526
28527 2003-11-02  Martin Baulig  <martin@ximian.com>
28528
28529         * reflection.h (MonoReflectionGenericInst): Added
28530         `MonoReflectionType *declaring_type'.
28531
28532         * reflection.c (mono_reflection_bind_generic_parameters): Use
28533         `if (tb->parent)' instead of `klass->parent'.
28534
28535 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
28536
28537         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
28538         with an empty ASSEMBLY table.
28539
28540         * reflection.c (mono_image_build_metadata): Avoid using the same loop
28541         variable in the inner and outer loops.
28542
28543 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
28544
28545         * metadata.h (mono_metadata_make_token): Put parentheses around macro
28546         argument.
28547
28548         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
28549         
28550         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
28551         icalls. Instead, do everything in managed code. This is needed since
28552         it is hard to restore the original domain etc. in unmanaged code in the
28553         presence of undeniable exceptions.
28554
28555         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
28556         New icalls to push and pop appdomain refs.
28557
28558 2003-10-31  Martin Baulig  <martin@ximian.com>
28559
28560         * class.c (inflate_generic_type): Renamed to
28561         mono_class_inflate_generic_type() and made it public.
28562
28563         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
28564         New interncall.
28565
28566         * loader.c (mono_field_from_memberref): Also set the retklass for
28567         typespecs.
28568
28569         * fielder.c (mono_image_get_inflated_field_token): New static
28570         method; creates a metadata token for an inflated field.
28571         (mono_image_create_token, fixup_method): Added support for
28572         "MonoInflatedField".
28573         (fieldbuilder_to_mono_class_field): New static function.
28574         (mono_reflection_inflate_field): New public function.
28575
28576         * reflection.h
28577         (MonoReflectionGenericInst): Added `MonoArray *fields'.
28578         (MonoReflectionInflatedField): New typedef.     
28579
28580 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
28581
28582         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
28583         for Solaris and other platforms without s6_addr16
28584
28585 2003-10-30  Martin Baulig  <martin@ximian.com>
28586
28587         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
28588         argument instead of two.
28589         (mono_class_inflate_generic_signature): Likewise.
28590         (inflate_generic_header): Likewise.
28591         (mono_class_inflate_generic_method): Likewise.  In addition, if
28592         `ginst->klass' is set, it becomes the new `method->klass'.
28593
28594         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
28595         field.
28596
28597         * reflection.c (encode_generic_method_sig): Write a 0xa as the
28598         first byte. [FIXME]
28599         (method_encode_methodspec): If we have generic parameters, create
28600         a MethodSpec instead of a MethodRef.
28601         (fixup_method): Added support for "MonoInflatedMethod" and
28602         "MonoInflatedCtor".
28603         (mono_image_create_token): Added support for "MonoInflatedMethod"
28604         and "MonoInflatedCtor".
28605         (inflated_method_get_object): New static function; returns a
28606         managed "System.Reflection.MonoInflatedMethod" object.
28607         (mono_reflection_bind_generic_method_parameters): Return a
28608         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
28609         (mono_reflection_inflate_method_or_ctor): Likewise.
28610         (mono_image_get_generic_method_param_info): Initialize unused
28611         fields to zero.
28612         (mono_image_get_generic_param_info): Likewise.
28613
28614         * reflection.h (MonoReflectionInflatedMethod): New public
28615         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
28616         "S.R.MonoInflatedCtor" classes.
28617
28618         * loader.c (method_from_memberref): If we're a TypeSpec and it
28619         resolves to a generic instance, inflate the method.
28620
28621 2003-10-28  Dick Porter  <dick@ximian.com>
28622
28623         * object.c (mono_runtime_run_main): Convert command-line arguments
28624         into utf8, falling back to the user's locale encoding to do so.
28625
28626 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
28627
28628         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
28629         at this time.
28630
28631         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
28632
28633         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
28634         up icalls at method definition time. Partially fixes #33569.
28635
28636 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
28637
28638         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
28639         marshalling of arrays. Fixes #50116.
28640
28641         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
28642
28643         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
28644         points to a vtable in the dying appdomain.
28645
28646         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
28647         listeners into unmanaged code inside the lock.
28648
28649         * object.c (mono_class_vtable): Turn off typed allocation in non-root
28650         domains and add some comments.
28651
28652 2003-10-25  Martin Baulig  <martin@ximian.com>
28653
28654         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
28655
28656         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
28657
28658         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
28659         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
28660         currently parsing.  Create the generic class and store it in
28661         `generic_inst->klass' before parsing the type arguments.  This is
28662         required to support "recursive" definitions; see mcs/tests/gen-23.cs
28663         for an example.
28664         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
28665         to support recursive typespec entries.
28666
28667         * class.c (mono_class_setup_parent): If our parent is a generic
28668         instance, we may get called before it has its name set.
28669         (mono_class_from_generic): Splitted into
28670         mono_class_create_from_generic() and mono_class_initialize_generic().
28671
28672 2003-10-25  Martin Baulig  <martin@ximian.com>
28673
28674         * icall.c (ves_icall_Type_BindGenericParameters): Return a
28675         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
28676         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
28677         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
28678
28679         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
28680         (create_typespec): Likewise.
28681         (mono_reflection_bind_generic_parameters): Return a
28682         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
28683         (mono_reflection_inflate_method_or_ctor): New public function.
28684
28685         * reflection.h (MonoReflectionGenericInst): New typedef.        
28686
28687 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
28688
28689         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
28690         inside the domain lock. Fixes #49993.
28691         
28692         * object.c (mono_class_vtable): When typed allocation is used, 
28693         allocate vtables in the GC heap instead of in the mempool, since the
28694         vtables contain GC descriptors which are used by the collector even
28695         after the domain owning the mempool is unloaded.
28696
28697         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
28698
28699         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
28700         reflect what it does. Also invalidate mempools instead of freeing
28701         them if a define is set.
28702
28703         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
28704         of the appdomain.
28705         
28706         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
28707         hold the finalizable objects in this domain.
28708
28709         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
28710         appdomain.
28711
28712         * appdomain.c (mono_domain_set): New function to set the current
28713         appdomain, but only if it is not being unloaded.
28714
28715         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
28716         appdomain which is being unloaded.
28717         
28718         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
28719         unloading of the root appdomain.
28720
28721         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
28722         icall to execute a method in another appdomain. Intended as a 
28723         replacement for InternalSetDomain, which can confuse the code 
28724         generation in the JIT.
28725
28726         * appdomain.c (mono_domain_is_unloading): New function to determine
28727         whenever an appdomain is unloading.
28728
28729         * appdomain.c (mono_domain_unload): New function to correctly unload
28730         an appdomain.
28731
28732         * assembly.c (mono_assembly_load_references): Check that an assembly
28733         does not references itself.
28734
28735         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
28736         domain manually, it asks the finalizer thread to do it, then waits for
28737         the result. Also added a timeout.
28738
28739         * icall.c: Register the new icalls.
28740
28741         * threads.h threads.c: Export the mono_gc_stop_world and 
28742         mono_gc_start_world functions.
28743         
28744         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
28745         function to fill out the mempool with 0x2a.
28746
28747 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
28748
28749         * reflection.h (MonoReflectionMethodAux): New structure to store
28750         information which is rarely used, thus is not in the MonoMethod
28751         structure.
28752
28753         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
28754         store the aux info.
28755
28756         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
28757         and marshalling info into the aux structure.
28758
28759         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
28760         from the aux structure.
28761
28762         * loader.c (mono_method_get_param_names): Retrieve the param names from
28763         the aux structure.
28764         
28765 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
28766
28767         * exception.h exception.c: Add AppDomainUnloadedException && fix 
28768         warning.
28769
28770 2003-10-21  Dick Porter  <dick@ximian.com>
28771
28772         * socket-io.c
28773         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
28774         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
28775
28776 2003-10-21  Martin Baulig  <martin@ximian.com>
28777
28778         * reflection.c (mono_reflection_bind_generic_parameters):
28779         `klass->parent' is NULL for interfaces.
28780
28781 2003-10-21  Martin Baulig  <martin@ximian.com>
28782
28783         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
28784
28785 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
28786
28787         * exception.c (mono_exception_from_name_msg): New helper function for
28788         creating exceptions and initializing their message field.
28789
28790         * exception.c: Simplify functions using the new helper.
28791
28792         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
28793         New function.
28794
28795         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
28796         mono_raise_exception, since otherwise gcc doesn't generate the function
28797         epilog for raise_exception, confusing the stack unwinding in the JIT.
28798         Fixes #45043.
28799
28800         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
28801         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
28802         Fixes #49499.
28803
28804 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28805
28806         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
28807         utf8.
28808
28809 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
28810
28811         * icall.c: Removed GetUninitializedObject method because
28812           AllocateUninitializedClassInstance does the same.
28813
28814 2003-10-18  Martin Baulig  <martin@ximian.com>
28815
28816         * class.c (inflate_generic_signature): Renamed to
28817         mono_class_inflate_generic_signature() and made it public.
28818         (my_mono_class_from_generic_parameter): New static function; if we
28819         don't already have the generic parameter's MonoClass, create a
28820         very simple one which is just used internally in the runtime and
28821         not passed back to managed code.
28822
28823         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
28824
28825         * metadata.h (MonoMethodSignature): Moved the
28826         `MonoGenericParam *gen_params' to the MonoMethodHeader.
28827         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
28828
28829         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
28830         ves_icall_MonoMethod_GetGenericArguments(); this is now an
28831         interncall on the MonoMethod class, not on MethodInfo.
28832         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
28833         calling mono_reflection_bind_generic_method_parameters() directly.
28834
28835         * loader.c (mono_method_get_signature): If this is a MethodSpec;
28836         return the already computed `method->signature'.
28837         (method_from_methodspec): New static function to load a method
28838         from a MethodSpec entry.
28839         (mono_get_method_from_token): Call the new method_from_methodspec()
28840         for MethodSpec tokens.  
28841         (mono_get_method_from_token): If we're a generic method, load the
28842         type parameters.
28843
28844         * reflection.c (mono_image_get_memberref_token): Allow
28845         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
28846         table.
28847         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
28848         (mono_image_create_token): First check whether it's a generic
28849         method (so we'd need to create a MethodSpec), then do the other
28850         two alternatives.
28851         (mono_reflection_bind_generic_method_parameters): Return a
28852         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
28853         called directly from the interncall.
28854
28855 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
28856
28857         * reflection.c (load_public_key): Move loading of the public key
28858         into managed code.
28859
28860         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
28861
28862         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
28863         fields.
28864
28865         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
28866         culture, hash_alg and public_key. Fixes #49555.
28867
28868 2003-10-17  Martin Baulig  <martin@ximian.com>
28869
28870         * class.h (MonoGenericInst): Moved this declaration here and added
28871         `MonoMethod *generic_method'.
28872
28873         * icall.c
28874         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
28875         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
28876
28877         * metadata.c (mono_metadata_type_equal): Two types of
28878         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
28879         index; ie. don't compare the address of the `MonoGenericParam'
28880         structure.
28881         (mono_metadata_load_generic_params): Removed the `MonoMethod
28882         *method' argument.
28883
28884         * metadata.h (MonoGenericInst): Moved declaration to class.h.
28885         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
28886
28887         * reflection.c (method_encode_signature): Encode the number of
28888         generic parameters.
28889         (encode_generic_method_sig): New static function.
28890         (method_encode_methodspec): New static function; creates an entry
28891         in the MethodSpec table for a generic method.
28892         (mono_image_get_methodspec_token): New static function.
28893         (mono_image_create_token): Call mono_image_get_methodspec_token()
28894         for generic methods.
28895         (mono_reflection_bind_generic_method_parameters): New public
28896         function.  Instantiates a generic method.
28897
28898 2003-10-16  Martin Baulig  <martin@ximian.com>
28899
28900         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
28901         *gen_params' here from MonoMethodHeader.
28902
28903         * metadata.c (mono_metadata_parse_method_signature): If we have
28904         generic parameters, initialize `method->gen_params' and then set
28905         the correct `type->data.generic_param' in all the parameters.
28906
28907 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
28908
28909         * threads.c (mono_threads_get_default_stacksize): New function to 
28910         return the default stacksize.
28911
28912         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
28913         termination of the finalizer thread, since the previous method had
28914         race conditions. Fixes #49628.
28915
28916         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
28917         as for the other managed threads.
28918
28919 2003-10-16  Martin Baulig  <martin@ximian.com>
28920
28921         * class.c (inflate_generic_signature): Copy `generic_param_count'
28922         and `gen_params'.
28923
28924         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
28925         New interncall.
28926
28927         * metadata.c (mono_metadata_parse_method_signature): Actually set
28928         the `method->generic_param_count' here.
28929         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
28930
28931 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
28932
28933         * object.h: Add a new field to TypedRef to simplify the implementation
28934         of the REFANY opcodes in the JIT.
28935
28936         * icall.c: Make use of the new field.
28937
28938         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
28939         dynamically.
28940
28941 2003-10-15  Martin Baulig  <martin@ximian.com>
28942
28943         * class.c (mono_class_from_gen_param): Renamed to
28944         mono_class_from_generic_parameter() and moved most of the
28945         functionality from mono_reflection_define_generic_parameter()
28946         here; ie. we create a "real" class here.
28947         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
28948         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
28949         previously been called.
28950
28951         * class.h (MonoGenericParam): Moved the declaration of this struct
28952         here from metadata.h and added `MonoMethod *method'.
28953
28954         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
28955         interncall.
28956
28957         * loader.c (mono_get_method_from_token): If we have any generic
28958         parameters, call mono_metadata_load_generic_params() to read them
28959         from the MONO_TABLE_GENERICPAR.
28960
28961         * metadata.c (mono_metadata_load_generic_params): Added
28962         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
28963
28964         * metadata.h (MonoMethodSignature): Replaced
28965         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
28966         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
28967
28968         * reflection.c (mono_reflection_define_generic_parameter): Moved
28969         most of the functionality into the new
28970         mono_class_from_generic_parameter(); set the `method' field if
28971         we're a method parameter.       
28972
28973 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
28974
28975         * marshal.c (emit_struct_conv): if native size is 0
28976         emit no code.
28977
28978 2003-10-14  Martin Baulig  <martin@ximian.com>
28979
28980         * icall.c: The generics API has changed in the spec since it was
28981         added to System.Type; these modifications make it match the spec
28982         again.
28983         (ves_icall_Type_GetGenericParameters): Renamed to
28984         `ves_icall_Type_GetGenericArguments'.
28985         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
28986         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
28987         `ves_icall_MonoType_get_HasGenericArguments'.
28988         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
28989         `ves_icall_MonoType_get_IsGenericParameter'.
28990         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
28991         this is no interncall anymore.
28992         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
28993         `ves_icall_TypeBuilder_get_IsGenericParameter'.
28994
28995 2003-10-14  Martin Baulig  <martin@ximian.com>
28996
28997         * reflection.c (mono_reflection_bind_generic_parameters): Also
28998         inflate generic methods if we're reading the class from IL.
28999
29000 2003-10-13  Martin Baulig  <martin@ximian.com>
29001
29002         * reflection.c (mono_reflection_define_generic_parameter): This
29003         method isn't called directly from the icall anymore; take a
29004         `MonoReflectionAssemblyBuilder *' so we can use this for type and
29005         method generic parameters.
29006         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
29007         (method_builder_encode_signature): Encode generic parameters.
29008         (mono_image_get_method_info): Write generic params to the
29009         MONO_TABLE_GENERICPARAM table.
29010
29011         * reflection.h (MonoReflectionMethodBuilder): Added
29012         `MonoArray *generic_params'.
29013
29014         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
29015
29016         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
29017         wrapper for mono_reflection_define_generic_parameter().
29018         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
29019
29020 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
29021
29022         * marshal.h: Add missing function to fix build.
29023
29024         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
29025         the SetLastError pinvoke attribute.
29026
29027         * marshal.c (mono_marshal_set_last_error): New helper function called
29028         by the generated code.
29029         
29030         * marshal.c (mono_mb_emit_branch): New helper function.
29031
29032         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
29033
29034         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
29035         classes as parameters and return values of delegates. Fixes #29256. 
29036
29037 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
29038
29039         * locales.c: use gint32 in non HAVE_ICU case
29040
29041 2003-10-11  Martin Baulig  <martin@ximian.com>
29042
29043         * mono-debug.c (mono_debug_add_method): Added a workaround for
29044         bug #48591.
29045
29046 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
29047
29048         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
29049         delegates passed to native code must use the STDCALL calling 
29050         convention. Fixes #35987.
29051
29052 2003-10-10  Martin Baulig  <martin@ximian.com>
29053
29054         * class.c (inflate_generic_type): If we're inflating for a generic
29055         type instance (and not for a generic method), return
29056         MONO_TYPE_MVAR unchanged.
29057
29058 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29059
29060         * string-icalls.c: Join ignores null strings in the source array.
29061         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
29062         * threads.c: GetAvailableTheads is slightly more accurate.
29063
29064 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
29065
29066         * threads.h threads.c : add mono_threads_set_default_stacksize
29067         and pass default to CreateThread calls.
29068
29069 2003-10-09  Dick Porter  <dick@ximian.com>
29070
29071         * icall.c:
29072         * locales.h:
29073         * locales.c: Internal calls for constructing CultureInfo and
29074         related objects from libicu (if its available.)
29075
29076 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
29077
29078         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
29079
29080 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29081
29082         * threadpool.c: added an argument to async_invoke_thread that is the
29083         item to process, pass the MonoAsyncResult to the thread start function
29084         when creating a new thread. This way we don't need to acquire any lock
29085         when we're creating a new thread. Readded a semaphore for faster
29086         response times (instead of that Sleep i added).
29087
29088 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
29089
29090         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
29091         get daylight change dates better on Windows, fix handling
29092         of platforms without tm_gmtoff.
29093
29094 2003-10-06  Martin Baulig  <martin@ximian.com>
29095
29096         * class.c (inflate_generic_method): Renamed to
29097         mono_class_inflate_generic_method() and made public.
29098         (mono_class_init): Don't inflate the generic methods here.
29099         (mono_class_from_generic): Added `gboolean inflate_methods'
29100         argument.  Inflate the methods here.
29101
29102         * loader.c (mono_method_get_param_names): Ignore instances of
29103         generic types for the moment.
29104
29105         * reflection.c (fixup_method): Added support for inflated methods.
29106         (mono_image_create_token): Use mono_image_get_methodref_token()
29107         for inflated methods.
29108         (mono_custom_attrs_from_param): Ignore instances of generic types
29109         for the moment.
29110         (mono_reflection_bind_generic_parameters): New public function.
29111         Moved all the functionality from
29112         ves_icall_Type_BindGenericParameters() here and added support for
29113         dynamic types.
29114         (mono_reflection_define_generic_parameter): Initialize
29115         `klass->methods' here.
29116
29117         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
29118         functionality into mono_reflection_define_generic_parameter().
29119         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
29120         TypeBuilder, return that TypeBuilder.
29121
29122 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29123
29124         * appdomain.c: removed mono_delegate_semaphore.
29125
29126         * threadpool.c:
29127         (mono_thread_pool_add): moved hash table creation inside and the thread 
29128         creation outside of the critical region.
29129         (mono_thread_pool_finish): removed obsolete code.
29130         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
29131         continue or exit the thread depending on the queue.
29132
29133 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
29134
29135         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
29136         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
29137         handle more bool marshalling options
29138
29139 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
29140
29141         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
29142         arrays of structs. Also add a more descriptive error message when
29143         a structure member is marshalled as LPArray.
29144
29145 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
29146
29147         * marshal.c (mono_marshal_get_native_wrapper): Add support for
29148         marshalling arrays of complex types. Fixes #29098. Also remove an
29149         usused and incomplete function.
29150
29151 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
29152
29153         * gc.c: report heap_size - free_bytes as total memory allocated
29154         (bug#49362).
29155
29156 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
29157
29158         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
29159         fix timezone handling problems on Windows.
29160         
29161         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
29162         asserts when the year is outside the range handled by ms the functions.
29163
29164         * class.c (setup_interface_offsets): If the class is an interface,
29165         fill out its interface_offsets slot.
29166
29167 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29168
29169         * threadpool.c: mark threadpool threads as background.
29170
29171 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
29172
29173         * decimal.c - define DECINLINE to nothing if not using GCC
29174
29175 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
29176
29177         * assembly.c: More refcount fixes.
29178
29179 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29180
29181         * string-icalls.c: if we're not trimming, return the same string.
29182         When not splitting, don't create a new string.
29183
29184 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29185
29186         * image.c:
29187         (mono_image_open): increment the ref_count inside the critical section.
29188
29189 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
29190
29191         * image.c (mono_image_open): Fix reference counting bug.
29192
29193 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
29194
29195         * marshal.c (mono_marshal_type_size) struct alignment changed for 
29196         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
29197         64bits. Avoid leak in mono_marshal_get_native_wrapper when
29198         mono_lookup_pinvoke_call throws.        
29199
29200 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
29201
29202         * reflection.c (mono_reflection_parse_type): Fix #49114.
29203
29204         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
29205         temporary workaround for cygwin header problem.
29206
29207         * object.c (mono_object_isinst): Synchronize this with the code
29208         generated by the JIT for casts.
29209
29210 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
29211
29212         * reflection.c (encode_type): Fix #38332.
29213
29214 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
29215
29216         * marshal.c (mono_marshal_method_from_wrapper): New function to return
29217         the original method from the wrapper method.
29218
29219 2003-09-25  Martin Baulig  <martin@ximian.com>
29220
29221         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
29222         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
29223         (ves_icall_Type_get_IsGenericInstance): New interncall.
29224
29225 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
29226
29227         * object.c: fix cast warning in big endian code.
29228
29229 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
29230
29231         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
29232         
29233 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29234
29235         * assembly.c: don't call check_env from mono_assembly_load. It's
29236         already done once in mono_assemblies_init and may cause headaches when
29237         multiple threads are loading assemblies.
29238
29239 2003-09-19  Martin Baulig  <martin@ximian.com>
29240
29241         * reflection.c (mono_reflection_define_generic_parameter): Don't
29242         allocate `klass->methods', set `klass->flags' to
29243         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
29244
29245 2003-09-18  Martin Baulig  <martin@ximian.com>
29246
29247         * class.c (mono_class_init): Don't create `class->methods' if it's
29248         already initialized.
29249
29250         * metadata.c (mono_metadata_load_generic_params): Make this
29251         actually work.
29252
29253         * reflection.c (mono_reflection_define_generic_parameter): Set
29254         parent class and interfaces from the constraints.
29255
29256         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
29257         to keep this struct in sync with the declaration in TypeBuilder.cs.
29258
29259 2003-09-17  Martin Baulig  <martin@ximian.com>
29260
29261         * metadata.h (MonoType): Replaced the data's `int type_param'
29262         field with `MonoGenericParam *generic_param'.
29263         (MonoGenericParam): Added `MonoClass *klass'.
29264
29265         * class.c (mono_class_from_gen_param): Removed the
29266         `MonoImage *image' and `int type_num' arguments.
29267
29268         * metadata.c (mono_metadata_parse_generic_param): New static
29269         method; creates a MonoGenericParam which just contains the index.
29270         (do_mono_metadata_parse_type): Call
29271         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
29272         MONO_TYPE_MVAR.
29273
29274         * reflection.c (mono_image_typedef_or_ref): Generic type
29275         parameters may be in the same assembly, but never use a typedef
29276         for them.
29277         (mono_reflection_define_generic_parameter): We're now creating a
29278         "real" class for the type parameter; it's now safe to call
29279         mono_class_from_mono_type() on the class'es type, it'll do the
29280         right thing.
29281
29282 2003-09-16  Martin Baulig  <martin@ximian.com>
29283
29284         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
29285         `symfile->range_entry_size' and `symfile->class_entry_size' here;
29286         the `symfile' data structure must be fully initialized before it
29287         gets added to the table.
29288
29289 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
29290
29291         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
29292
29293         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
29294         class init trampolines.
29295
29296 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
29297
29298         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
29299         to the built-in profiler to turn off time and allocation profiling
29300         respectively.
29301
29302 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
29303
29304         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
29305         g_direct_equal.
29306
29307         * debug-helpers.c (mono_method_full_name): Print the wrapper type
29308         in human readable form.
29309
29310 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
29311
29312         * reflection.c icall.c: Fixed warnings.
29313
29314         * image.c (load_class_names): Use a temporary hash table to hold the
29315         namespaces in order to avoid doing many string comparisons.
29316
29317         * image.h: Fix typo.
29318
29319         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
29320         Pass NULL instead of g_direct_equal to the GHashTable constructor 
29321         since the NULL case is short-circuited inside g_hash_table_lookup, 
29322         leading to better performance.  
29323
29324         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
29325         obtain the first custom attribute for a given index. Depends on the
29326         CustomAttribute table being sorted by the parent field.
29327
29328         * reflection.c (mono_custom_attrs_from_index): Use the new function 
29329         for better performance.
29330
29331 2003-09-07  Martin Baulig  <martin@ximian.com>
29332
29333         * class.c (mono_class_init): If we're a generic instance, inflate
29334         all our methods instead of loading them from the image.
29335         (mono_class_from_generic): Set `class->methods = gklass->methods'.
29336
29337 2003-09-07  Martin Baulig  <martin@ximian.com>
29338
29339         * mono-debug-debugger.c: Added support for constructors.
29340
29341 2003-09-06  Martin Baulig  <martin@ximian.com>
29342
29343         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
29344         New interncall.
29345
29346         * reflection.c (mono_reflection_setup_generic_class): Call
29347         ensure_runtime_vtable() to create the vtable.
29348
29349 2003-09-05  Martin Baulig  <martin@ximian.com>
29350
29351         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
29352         MONO_TYPE_MVAR.
29353
29354 2003-09-04  Martin Baulig  <martin@ximian.com>
29355
29356         * reflection.c (mono_reflection_define_generic_parameter): Generic
29357         parameters start with zero.
29358
29359 2003-09-04  Martin Baulig  <martin@ximian.com>
29360
29361         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
29362
29363         * reflection.h (MonoReflectionGenericParam): New typedef.
29364         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
29365         the generic parameters from the managed TypeBuilder.
29366
29367         * reflection.c (mono_reflection_define_generic_parameter): New function.
29368         (mono_reflection_create_runtime_class): Encode generic parameters.
29369         (mono_reflection_setup_generic_class): New function; this is
29370         called after adding adding all generic params to the TypeBuilder.
29371         (encode_type): Added MONO_TYPE_VAR.
29372
29373 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
29374
29375         * class.h class.c (mono_class_needs_cctor_run): Moved this method
29376         here from the JIT.
29377
29378         * assembly.h assembly.c: Moved the AOT loading code into an assembly
29379         load hook.
29380
29381 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
29382
29383         * reflection.h reflection.c class.h class.c: Delete duplicate 
29384         definition of mono_type_get_name () from reflection.c and export the
29385         one in class.c.
29386
29387         * class.c: Class loading fixes from Bernie Solomon 
29388         (bernard@ugsolutions.com).
29389
29390         * reflection.c: Endianness fixes from Bernie Solomon 
29391         (bernard@ugsolutions.com).
29392         
29393 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
29394
29395         * assembly.h assembly.c: Define a file format version for AOT
29396         libraries.
29397         
29398         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
29399
29400         * appdomain.h (MonoJitInfo): New field to determine whenever the
29401         code is domain neutral.
29402         
29403 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
29404
29405         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
29406
29407 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
29408
29409         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
29410         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
29411         Avoid caching the result since strings must be domain specific. Fixes
29412         #48050.
29413
29414 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
29415
29416         * marshal.c (mono_marshal_init): Make this callable multiple times
29417         since it is hard to find a correct place to call it.
29418
29419         * object.c (mono_runtime_class_init): Execute static constructors in
29420         the correct appdomain.
29421
29422         * image.c (build_guid_table): Handle the case when multiple images have
29423         the same GUID.
29424
29425 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29426
29427         * icall.c: added a couple of icalls for System.Web.
29428
29429 2003-08-28  Martin Baulig  <martin@ximian.com>
29430
29431         * icall.c (ves_icall_Type_BindGenericParameters): Use
29432         `klass->generic_inst' instead of `&klass->byval_arg' in the
29433         mono_type_get_object() call.  The returned type must be
29434         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
29435
29436 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
29437
29438         * NOTES: New file.
29439
29440         * object.c (mono_class_proxy_vtable): Make it thread safe.
29441
29442         * pedump.c: Fix warning.
29443
29444         * object.c appdomain.h: Get rid of metadata_section. 
29445         It is no longer needed and it was causing deadlocks with domain->lock.
29446
29447         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
29448
29449 2003-08-26  Martin Baulig  <martin@ximian.com>
29450
29451         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
29452
29453 2003-08-26  Martin Baulig  <martin@ximian.com>
29454
29455         * pedump.c (main): Call mono_metadata_init(),
29456         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
29457         and mono_loader_init().
29458
29459 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
29460
29461         * loader.h: Add missing include to fix build.
29462
29463         * image.h: mono_image_load_references is no more.
29464
29465         * assembly.c: Reworked assembly loading to make it really thread safe.
29466         After these changes, the assembly returned by mono_assembly_open is
29467         fully initialized, i.e. all its references assemblies are loaded.
29468
29469         * assembly.c (mono_image_load_references): Renamed to 
29470         mono_assembly_load_references, and made private, since clients no
29471         longer need to call it.
29472
29473         * class.c: Removed calls to mono_assembly_load_references, since it was
29474         a source of deadlocks.
29475
29476         * loader.h loader.c class.h class.c: Protect data structures using a 
29477         new lock, the loader lock.
29478
29479         * class.c (mono_class_setup_vtable): Create temporary hash tables and
29480         GPtrArrays only when needed.
29481
29482         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
29483         into empty structures by mcs. Fixes pinvoke7.cs.
29484         
29485         * domain.c (mono_init): Call a new initialization function.
29486
29487         * appdomain.c (mono_runtime_init): Call the new initializer function
29488         of the marshal module.
29489
29490         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
29491         inserted into empty structures by mcs. Fixes pinvoke7.cs.
29492
29493         * marshal.h marshal.c: Added locks around the wrapper caches to make
29494         this module thread safe.
29495
29496         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
29497         this argument. Fixes pinvoke1.exe.
29498
29499 2003-08-25  Lluis Sanchez <lluis@ximian.com>
29500
29501         * object.h: Added call_type field to MonoMethodMessage and the corresponding
29502         enumeration of values. Removed fields to store remote call output values in
29503         MonoAsyncResult. Not needed any more.
29504         * object.c: Initialize call_type and async_result fields in mono_message_init.
29505         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
29506         dispatching the message.
29507         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
29508         async call to finish. To do it use a message with EndInvoke call type.
29509
29510 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
29511
29512         * loader.h loader.c (mono_method_hash_marhal_info): New function which
29513         determines whenever a method has marshalling info.
29514
29515 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29516
29517         * assembly.c: fix the build on windows.
29518
29519 2003-08-22 Lluis Sanchez <lluis@ximian.com>
29520
29521         * object.cs: Fixed bug #47785.
29522
29523 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
29524
29525         * string-icalls.c (StringReplace): If their are no occurances of
29526         the old string found return a reference to the supplied
29527         string. This saves some memory and matches MS behavoir.
29528         
29529 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29530
29531         * socket-io.c: fixed compilation for systems that define AF_INET6
29532         and don't define SOL_IP/SOL_IPV6.
29533
29534 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
29535
29536         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
29537         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
29538
29539         * rawbuffer.c rawbuffer.h: Make this module thread safe.
29540
29541         * domain.c: Make this module thread safe.
29542
29543         * domain.c (mono_init): Call new initialization function.
29544
29545         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
29546         reference types too. Fixes #38812.
29547
29548         * image.c (mono_image_init): Fixed warnings.
29549
29550         * class.c (mono_class_from_typeref): Handle assembly load failure
29551         correctly.
29552
29553         * appdomain.c (add_assemblies_to_domain): Handle the case when
29554         the references of an assembly are not yet loaded.
29555
29556         * metadata.c image.c assembly.c: Moved initialization of global
29557         variables to a separate function called at startup since lazy 
29558         initialization of these variables is not thread safe.
29559         
29560         * image.c assembly.c: Made this module thread safe by adding locks in 
29561         the appropriate places.
29562
29563         * domain.c (mono_init): Call the new initialization functions of the
29564         three modules.
29565
29566 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
29567
29568         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
29569           make a direct call. It is proxy's work to make the call asynchronous.
29570           mono_delegate_end_invoke(): If the targe is a proxy, just collect
29571           the return values.
29572         * object.cs: mono_method_call_message_new(): read AsyncResult and
29573           state object from parameters list, if this info is requested.
29574         * object.h: Added fields to store remote call output values in
29575           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
29576
29577 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
29578
29579         * object.h: add needed fields to MonoThread.
29580         * threads.c, threads.h: allow registering a function to cleanup data
29581         allocated per thread by the JIT.
29582
29583 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
29584
29585         * loader.h: portability fix by Bernie Solomon
29586         * <bernard@ugsolutions.com>.
29587
29588 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
29589
29590         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
29591         return a MonoArray. This simplifies the code and also ensures that
29592         the cache allways contains an object reference as a value.
29593
29594         * icall.c (ves_icall_get_parameter_info): Simplified using the new
29595         function.
29596
29597 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29598
29599         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
29600         fixes a problem with byte ordering when getting the address family for
29601         a socket.
29602
29603 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
29604
29605         * .cvsignore: Added monosn.
29606
29607         * reflection.h reflection.c loader.c: Added support for parameter
29608         marshalling to dynamically created types. Fixes #47295.
29609
29610 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
29611
29612         * rand.c: remove useless warnings.
29613
29614 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
29615
29616         * class.c: implemented ldtoken for methods and fieldrefs.
29617
29618 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29619
29620         * threadpool.c: when mono_async_invoke was called, no one took care of
29621         monitoring the queue. So if the method invoked took some time and we
29622         got new async invoke requests after 500 ms (the thread created waited
29623         that long in WaitForSingleObject), the new async invoke was not called
29624         until the previous one finished.
29625
29626         This is fixed now. Thanks to Totte for helping with it.
29627
29628 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29629
29630         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
29631
29632 2003-08-11  Martin Baulig  <martin@ximian.com>
29633
29634         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
29635
29636 2003-08-06  Martin Baulig  <martin@ximian.com>
29637
29638         * mono-debug-debugger.c: Added support for static fields,
29639         properties and methods.
29640
29641 2003-08-06  Martin Baulig  <martin@ximian.com>
29642
29643         * mono-debug-debugger.c: Don't store the MonoString's vtable to
29644         make this work for applications with multiple application domains.
29645
29646 2003-08-04  Martin Baulig  <martin@ximian.com>
29647
29648         * mono-debug-debugger.c: Completely reworked the type support; the
29649         most important thing is that we're now just using one single
29650         `MonoType' instance per type.
29651
29652 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
29653
29654         * mono-endian.h, mono-endian.c, icall.c: Added icall
29655         ves_icall_System_Double_AssertEndianity to assert double word endianity
29656         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
29657
29658 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
29659
29660         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
29661         support, icalls and fixes.
29662
29663 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
29664
29665         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
29666         classes that are a punctuation character in .NET is not the same a
29667         g_unichar_ispunct.
29668
29669 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
29670
29671         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
29672
29673 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
29674
29675         * icall.c: Add new MemCopy internalcall.
29676         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
29677         Simplified code; It is not necessary to handle all the cases here,
29678         as the C# code takes care of it.  Only handle the case of the name
29679         resource embedded into the assembly.
29680
29681         Changed signature to return the data pointer and the size of the
29682         data. 
29683
29684 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
29685
29686         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
29687         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
29688
29689 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
29690
29691         * socket-io.c: ignore EINTR error in select.
29692
29693 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
29694
29695         * class.h, class.c: removed unused subclasses field in MonoClass.
29696
29697 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
29698
29699         * icall.c: improve fix of get_base_definition(). If the parent class
29700           doesn't have the mehod, look at the parent of the parent.
29701         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
29702           to check if a parameter is an in or out parameter
29703           (PARAM_ATTRIBUTE_IN is not set by default).
29704           mono_method_return_message_restore(): Use mono_class_value_size to
29705           get the size of a value type. mono_type_stack_size (parameterType)
29706           does not return the correct value if parameterType is byRef.
29707           mono_load_remote_field(), mono_load_remote_field_new(),
29708           mono_store_remote_field(), mono_store_remote_field_new():
29709           raise exception if the remote call returns an exception.
29710
29711 2003-07-28  Martin Baulig  <martin@ximian.com>
29712
29713         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
29714         method.  This is a wrapper around mono_runtime_invoke() which
29715         boxes the instance object if neccessary.
29716
29717 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
29718
29719         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
29720         metadata.h, row-indexes.h, verify.c: first cut of generics support.
29721
29722 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
29723
29724         * icall.c: disable mcs bug workaround.
29725
29726 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
29727
29728         * object.c (mono_runtime_class_init): Take the metadata_section
29729         mutex before obtaining the domain mutex.
29730
29731         * appdomain.h: Added definition of metadata_section mutex here. 
29732
29733         * object.c: define metadata_mutex here.
29734
29735 2003-07-24  Ravi Pratap  <ravi@ximian.com>
29736
29737         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
29738         fixed.
29739
29740 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
29741
29742         * reflection.c: Fix bug #46669
29743
29744 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29745
29746         * exception.c:
29747         * exception.h:
29748         * icall.c:
29749         * object.h: fill in the type name for TypeLoadException.
29750
29751 2003-07-23  Ravi Pratap  <ravi@ximian.com>
29752
29753         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
29754         relationship between TypeBuilders while compiling corlib) and bug
29755         45993 (Array types returned from the runtime while compiling
29756         corlib were from the loaded corlib).
29757
29758 2003-07-22  Martin Baulig  <martin@ximian.com>
29759
29760         * mono-debug-debugger.c: Reworked the type support a bit more;
29761         distinguish between types and classes.
29762
29763 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
29764
29765         * icall.c: add IsArrayImpl icall.
29766
29767 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
29768
29769         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
29770         initializing real_size only once. Also fix bug #46602.
29771
29772 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
29773
29774         * object.c: Renamed mono_metadata_section to metadata_section.
29775
29776 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
29777
29778         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
29779           empty array if the type is an array. Fixed.
29780           ves_icall_MonoMethod_get_base_definition: if the base method
29781           is abstract, get the MethodInfo from the list of methods of
29782           the class.
29783         * reflection.c: ParameterInfo.PositionImpl should be zero-based
29784           and it was 1-based. Fixed in mono_param_get_objects.
29785
29786 2003-07-20  Martin Baulig  <martin@ximian.com>
29787
29788         * mono-debug.h: Set version number to 31.
29789         (mono_debug_init): Added `MonoDomain *' argument.
29790
29791         * mono-debug-debugger.c: Reworked the type support; explicitly
29792         tell the debugger about builtin types; pass the `klass' address to
29793         the debugger.
29794
29795 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
29796
29797         * image.c: Allow new metadata tables to be loaded without a
29798         warning. Also update the warning message to give the new constant value.
29799                 
29800 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
29801
29802         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
29803         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
29804         array type representation changes.
29805
29806 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
29807
29808         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
29809         on Environment.Exit () call.
29810
29811 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
29812
29813         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
29814         requires a matching corlib.
29815
29816 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
29817
29818         * Changelog: My editor decided to add a CR to each line. Sorry about that.
29819           Committed again without the CRs.
29820         
29821 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
29822
29823         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
29824           getting it from the "this" socket instance. Did not work
29825           if the socket is a subclass of Socket.
29826           Also fixed bug #35371.
29827
29828 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
29829
29830         * metadata.c: fixed size for TypedByRef.
29831         * loader.c: when searching for a method, consider the vararg amrker.
29832         * unicode.c, decimal.c: constify some arrays.
29833
29834 2003-07-15  Dick Porter  <dick@ximian.com>
29835
29836         * socket-io.c: Fixed compilation for gcc < 3.2.
29837
29838         Fixed compilation for machines that don't have AF_INET6 (thanks to
29839         Bernie Solomon <bernard@ugsolutions.com> for that part.)
29840
29841         Fixed compile warnings.
29842         
29843         Fixed formatting and line endings.
29844
29845 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
29846
29847         * socket-io.h:
29848         * socket-io.c: Added IPv6 support.
29849
29850 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
29851
29852         * class.c (mono_class_is_assignable_from): New function to implement
29853         the is_assignable_from logic. Used by mono_object_isinst, 
29854         Type::IsAssignableFrom () and the interpreter.
29855
29856         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
29857         Object, even interfaces.
29858         
29859         * object.c (mono_object_isinst): Implement in terms of 
29860         is_assignable_from.
29861
29862         * icall.c (ves_icall_type_is_assignable_from): New icall.
29863
29864 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
29865
29866         * domain.c (foreach_domain): fix compiler warning.
29867
29868 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
29869
29870         * image.c (load_metadata_ptrs): use g_strndup because strndup is
29871         not available on all plattforms
29872
29873 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
29874
29875         * image.h image.c: Store the metadata version string in MonoImage.
29876         * icall.c: New icall to retrieve the image version.
29877         * reflection.c (create_dynamic_image): Fill in the image version field
29878         * reflection.c (build_compressed_metadata): Use the image version
29879         from the image structure.
29880
29881 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29882
29883         * appdomain.c: modified comment.
29884         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
29885         That will be its last iteration when mono_gc_cleanup is called from
29886         mono_runtime_cleanup and before the domain is unloaded.
29887
29888         Fixes bug #45962.
29889
29890 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
29891
29892         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
29893         attributes.
29894
29895 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
29896
29897         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
29898         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
29899         Bernie Solomon <bernard@ugsolutions.com>.
29900
29901 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
29902
29903         * object.c, object.h: provide mono_object_new_fast() for faster
29904         allocation in some special cases.
29905
29906 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
29907
29908         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
29909         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
29910
29911 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
29912
29913         * threadpool.c: fix leaks.
29914
29915 2003-07-01  Dick Porter  <dick@ximian.com>
29916
29917         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
29918         using MonoGHashTables.  Fixes threadpool bug posted to list.
29919
29920 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
29921
29922         * image.h, image.c: added support to load an assembly from a byte array.
29923         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
29924         assembly bundle support.
29925
29926 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
29927
29928         * threadpool.c (mono_thread_pool_add): keep a reference to the
29929         AsyncResult to prevent GC
29930
29931 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
29932
29933         * class.c: leak fix.
29934
29935 2003-06-25  Dick Porter  <dick@ximian.com>
29936
29937         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
29938         for the async object, the WaitHandle object will close the handle.
29939         Fixes bug 45321.
29940
29941 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
29942
29943         * class.c: in mono_array_class_get (), lookup from the hash with the
29944         same type we insert: this works around a bug in
29945         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
29946         lluis. The real fix will have to wait for after the release.
29947
29948 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
29949
29950         * icall.c: fix memory leak when getting type members.
29951
29952 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
29953
29954         * reflection.c: added more pubtoken special cases.
29955
29956 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
29957
29958         * class.c: handle field offset correctly when class size
29959         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
29960
29961 2003-06-20  Martin Baulig  <martin@ximian.com>
29962
29963         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
29964         *image' field.
29965
29966 2003-06-20  Martin Baulig  <martin@ximian.com>
29967
29968         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
29969
29970 2003-06-20  Martin Baulig  <martin@ximian.com>
29971
29972         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
29973         just distinguish between variables in registers and variables at
29974         an offset relative to a register.
29975
29976 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29977
29978         * icall.c: #ifdef out latest changes until mcs is fixed.
29979
29980 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
29981
29982         * icall.c: return members in metadata order.
29983
29984 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
29985
29986         * icall.c: avoid infinite loop in GetTimeZoneData.
29987
29988 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
29989
29990         * icall.c: added Marshal.Prelink/All icalls.
29991
29992 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
29993
29994         * object.c, object.h: fix warnings and do some overflow checking
29995         when creating arrays.
29996
29997 2003-06-17  Dick Porter  <dick@ximian.com>
29998
29999         * file-io.h:
30000         * file-io.c: File attributes need to be tweaked slightly when
30001         passed from the managed to the w32 world.
30002
30003 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
30004         * profiler.h profiler-private.h profiler.c: Rework last patch
30005         based on suggestion by Paolo.
30006         
30007 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
30008
30009         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
30010         instruction level coverage data collection.
30011         * profiler.h profiler.c (: Added new callback function which can be
30012         used by the profiler to limit which functions should have coverage
30013         instrumentation.
30014         * profiler.c (mono_profiler_load): Call g_module_build_path to
30015         generate the file name of the profiler library.
30016
30017 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
30018
30019         * profiler.c, profiler.h, profiler-private.h: added basic block 
30020         coverage profiling API.
30021
30022 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
30023
30024         * reflection.c (mono_reflection_create_runtime_class): Add support
30025         for events in dynamically generated code.
30026
30027         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
30028         not allocated.
30029
30030 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
30031
30032         * icall.c: when getting timezone info, return reasonable values if we
30033         can't get the actual data.
30034
30035 2003-06-14  Dick Porter  <dick@ximian.com>
30036
30037         * threads.c (start_wrapper): Remove the reference to the thread
30038         object in the TLS data, so the thread object can be finalized.
30039         This won't be reached if the thread threw an uncaught exception,
30040         so those thread handles will stay referenced :-( (This is due to
30041         missing support for scanning thread-specific data in the Boehm GC
30042         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
30043
30044 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
30045
30046         * reflection.c: ensure streams and tables are first allocated with
30047         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
30048
30049 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
30050
30051         * icall.c: fixed GetElementType for byrefs (bug# 44792).
30052
30053 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
30054
30055         * reflection.c (mono_reflection_create_runtime_class): Add support for
30056         properties to dynamically created classes.
30057         * reflection.c: Fix a few places where non-MonoObjects were inserted
30058         into the tokens hashtable.
30059
30060 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
30061
30062         * object.c: some support to handle out of memory exceptions.
30063
30064 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
30065
30066         * marshal.c (mono_marshal_get_native_wrapper): support reference
30067         return types
30068
30069 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
30070
30071         * object.h, object.c: more portability stuff from Bernie Solomon.
30072         Unexport mono_object_allocate(). Added mono_object_unbox ().
30073         Set exitcode when an unhandled exception is thrown.
30074
30075 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
30076
30077         * marshal.c (mono_marshal_get_native_wrapper): use custom
30078         marshaler for return types.
30079
30080 2003-06-10  Dick Porter  <dick@ximian.com>
30081
30082         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
30083         ip_mreq is available
30084
30085 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
30086
30087         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
30088         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
30089         by Bernie Solomon <bernard@ugsolutions.com>.
30090
30091 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
30092
30093         * gc.c (mono_gc_init): Avoid error message on shutdown when
30094         GC_DONT_GC=1 is used.
30095
30096         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
30097         New icall to return the GUID of a module.
30098
30099 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
30100
30101         * class.c: ensure instance size always includes the parent's size
30102         even whem class size is set explicitly (fixes bug#44294).
30103
30104 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
30105
30106         * profiler.h, profiler.c: made the simple profiler thread-safe,
30107         get more accurate timing info. Allow the loading of an
30108         externally-developed profiler module.
30109
30110 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
30111
30112         * marshal.c (mono_marshal_get_native_wrapper): improved
30113         class/byref arguments.
30114         (mono_marshal_get_native_wrapper): better string marshaling support.
30115
30116 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
30117
30118         * class.c: ensure .pack and .size are handled correctly and
30119         simplified layout of static fields.
30120
30121 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
30122
30123         * appdomain.c
30124         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
30125
30126         * loader.c (mono_lookup_pinvoke_call): look for modules in the
30127         current directory (fix bug 44008)
30128
30129 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
30130
30131         * marshal.c (mono_marshal_get_native_wrapper): started support for
30132         custom marshalers.
30133         (mono_delegate_to_ftnptr): consider marshalling specifications
30134
30135 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
30136
30137         * reflection.c, reflection.h: emit custom marshal info.
30138
30139 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30140
30141         * object.c: free the GError.
30142         * icall.c: added CloseEvent_internal.
30143         * threads.[ch]:
30144         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
30145         call.
30146
30147 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
30148
30149         * loader.c (mono_method_get_signature): Add support for dynamic
30150         assemblies.
30151
30152 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
30153
30154         * reflection.c: fixed bug #43905.
30155
30156 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
30157
30158         * class.c, domain.c, icall.c, metadata.h, object.h: support for
30159         handling TypedReference and ArgIterator.
30160         * loader.c, loader.h: added function to get signature at call site.
30161
30162 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
30163
30164         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
30165         data readonly. Buglets and warning fixes. Some MethodSpec support.
30166
30167 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
30168
30169         * class.h, class.c, object.c: remove relative numbering support.
30170
30171 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
30172
30173         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
30174         free the string, until we get a chance to fix Gtk#
30175
30176 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30177
30178         * marshal.c: revert last patch.
30179
30180 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
30181
30182         * icall.c: updates for new mono_class_vtable() not calling
30183         the type constructor anymore.
30184
30185 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
30186
30187         * object.h, object.c: separate vtable creation from type
30188         initialization. Make running the .cctor thread safe.
30189
30190 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
30191
30192         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
30193
30194 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
30195
30196         * loader.c (mono_get_method): consider calling convention
30197
30198 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
30199
30200         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
30201         to return the invisible global type for a module.
30202
30203         * reflection.c (mono_image_build_metadata): Emit global fields too.
30204
30205 2003-05-20  Peter Williams  <peterw@ximian.com>
30206
30207         * loader.c (mono_lookup_internal_call): Add a few newlines.
30208
30209 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
30210
30211         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
30212         literal strings.
30213
30214         * appdomain.c (set_domain_search_path): Recalculate search path when
30215         AppDomainSetup.PrivateBinPath changes.
30216
30217         * object.c (mono_class_compute_gc_descriptor): It turns out some
30218         parts of the class libs (like System.Thread) holds pointers to
30219         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
30220         to treat native int a pointer type here.
30221         
30222 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
30223
30224         * appdomain.h, domain.c: add hashtable for jump target resolution.
30225
30226 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
30227
30228         * reflection.h reflection.c icall.c: Added new icalls 
30229         GetManifestResourceInfoInternal, GetModulesInternal and support
30230         infrastructure.
30231
30232 2003-05-16  Dick Porter  <dick@ximian.com>
30233
30234         * icall.c:
30235         * file-io.h:
30236         * file-io.c: Implement System.IO.MonoIO::GetTempPath
30237
30238 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
30239
30240         * object.c: mono_store_remote_field: little fix to previous patch.
30241
30242 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
30243
30244         * class.c: add constructors to array classes.
30245         * icall.c: special case array construction for InternalInvoke (),
30246
30247 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
30248
30249         * class.h class.c reflection.c object.c: Added support for field
30250         defaults in dynamically generated classes.
30251
30252 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
30253
30254         * reflection.c: properly encode charset for ddlimport.
30255
30256 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
30257
30258         * threads.c: allow compiling without GC.
30259
30260 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
30261
30262         * appdomain.h, object.c, object.h, threads.c, threads.h: added
30263         handling of thread static data.
30264
30265 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
30266
30267         * reflection.h, reflection.c: added mono_custom_attrs_free ().
30268
30269 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
30270
30271         * class.c (mono_array_class_get): always set the serializable flags
30272         (mono_array_class_get): always set the SEALED attribute for array types
30273
30274 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
30275
30276         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
30277         attributes (fix for bug 42021).
30278
30279 2003-05-12  Dick Porter  <dick@ximian.com>
30280
30281         * gc.c: Don't run finalizers when the finalizer thread is
30282         finishing up, because the default domain has already been
30283         destroyed.
30284
30285 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
30286
30287         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
30288         value is null, we should throw an exception.   This is slightly
30289         different than the other conventions used for the constructor.
30290
30291 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30292
30293         * socket-io.c: fixed windows build.
30294
30295 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30296
30297         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
30298
30299 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
30300
30301         * object.c (mono_string_new_wrapper): Compatibility fix for MS
30302         compilers.
30303
30304 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
30305
30306         * class.c (mono_class_layout_fields): Add experimental GC aware
30307         auto layout facility. Requires class library changes to work correctly.
30308
30309         (mono_class_setup_vtable): Avoid overriding explicit interface
30310         method implementations. Fixes iface3.exe test.
30311
30312         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
30313         object reference.
30314         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
30315         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
30316
30317         * metadata.h: Add new type classification macro which determines
30318         whenever the type holds an object reference.
30319
30320 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
30321
30322         * marshal.c (mono_marshal_get_native_wrapper): cleanups
30323
30324 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
30325
30326         * gc.c (finalizer_thread): Work around a GC bug.
30327
30328 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
30329
30330         * marshal.c (emit_struct_conv): allow unions
30331
30332         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
30333
30334 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
30335
30336         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
30337
30338 2003-05-06  Martin Baulig  <martin@ximian.com>
30339
30340         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
30341
30342 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30343
30344         * socket-io.c:
30345         (Select_internal): allow NULLs, don't create arrays if not needed.
30346         Coupled with Socket.cs changes.
30347
30348         * threadpool.c:
30349         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
30350         register a finalizer for it that will close the semaphore handle. This
30351         fixes the leak and make Lupus' test run with > 4080 loops.
30352
30353 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
30354
30355         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
30356         Jerome Laban (bug #42287)
30357
30358 2003-05-02  Martin Baulig  <martin@ximian.com>
30359
30360         * debug-mono-symfile.h
30361         (MonoSymbolFile): Moved declaration into mono-debug.h.
30362         (MonoDebugMethodJitInfo): Likewise.
30363         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
30364         argument.
30365         (_mono_debug_address_from_il_offset): Take a
30366         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
30367
30368         * mono-debug.h
30369         (MonoDebugDomainData): New struct.
30370         (mono_debug_get_domain_data): New function.
30371         (mono_debug_add_method): Take an additional `MonoDomain *'
30372         argument.
30373         (mono_debug_source_location_from_address): Likewise.
30374         (mono_debug_il_offset_from_address): Likewise.
30375         (mono_debug_address_from_il_offset): Likewise.
30376
30377 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
30378
30379         * reflection.c: one more check for null type in custom attrs.
30380
30381 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30382
30383         * reflection.c: avoid warning (comparison is always false due to limited
30384         range of data type).
30385
30386 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30387
30388         * icall.c: throw an exception in Type.GetField if the argument 'name'
30389         is NULL.
30390
30391 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
30392
30393         * reflection.c: fixed handling of enums in named arguments to custom
30394         attributes (bug #42123).
30395
30396 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
30397
30398         * reflection.c: use the right array element type and handle
30399         a null for a Type argument, too.
30400
30401 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
30402
30403         * reflection.c: handle arrays as arguments to custom attributes.
30404
30405 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
30406
30407         * reflection.c: handle a string value in a custom attr
30408         ctor that takes an object.
30409
30410 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
30411
30412         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
30413         (fix bug #42063)
30414
30415 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
30416
30417         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
30418
30419 2003-04-27  Martin Baulig  <martin@ximian.com>
30420
30421         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
30422         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
30423         MONO_DEBUGGER_EVENT_BREAKPOINT.
30424         (mono_breakpoint_trampoline_code): Removed.
30425         (mono_debugger_event_handler): The last argument is now a
30426         `guint32'.
30427         (mono_debugger_insert_breakpoint_full): Removed the
30428         `use_trampoline' argument.
30429         (mono_debugger_method_has_breakpoint): Likewise.
30430         (mono_debugger_trampoline_breakpoint_callback): Renamed to
30431         mono_debugger_breakpoint_callback(); take the method and
30432         breakpoint number as arguments.
30433
30434 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
30435
30436         * metadata.c: fix off by one when loading parameters attributes.
30437
30438 2003-04-24  Martin Baulig  <martin@ximian.com>
30439
30440         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
30441
30442 2003-04-24  Martin Baulig  <martin@ximian.com>
30443
30444         * mono-debug-debugger.c: Moved all code which interacts with the
30445         Mono Debugger here.
30446
30447         * debug-mono-symfile.c: This code now just deals with the symbol
30448         file itself, the debugger code is now in mono-debug-debugger.c.
30449
30450 2003-04-23  Martin Baulig  <martin@ximian.com>
30451
30452         * mono-debug.c (mono_debug_source_location_from_il_offset):
30453         New method; like mono_debug_source_location_from_address(), but
30454         takes an IL offset instead of a machine address.
30455
30456 2003-04-23  Martin Baulig  <martin@ximian.com>
30457
30458         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
30459         `line' field; this is now computed by the debugger.
30460
30461 2003-04-23  Martin Baulig  <martin@ximian.com>
30462
30463         * mono-debug.[ch]: New files.  This is the new debugging interface.
30464
30465         * mono-debug-debugger.[ch]: New files.  Moved all code which
30466         interacts with the Mono Debugger here.
30467
30468 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
30469
30470         * domain.c (mono_init): initialize mono_defaults.monitor_class
30471
30472 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
30473
30474         * reflection.c (method_encode_code): Add a spicy exception to help
30475         future compiler authors.
30476
30477 2003-04-21  Martin Baulig  <martin@ximian.com>
30478
30479         * icall.c
30480         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
30481         Make this work with relative pathnames; g_filename_to_uri() needs
30482         an absolute filename.
30483
30484 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
30485
30486         * icall.c: Track name changes in Object and ValueType.
30487
30488 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
30489
30490         * metadata.c (mono_type_stack_size): size should be a multiple of
30491         sizeof (gpointer)
30492
30493 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30494
30495         * gc.c:
30496         (internal_domain_finalize): moved into mono_domain_finalize. No need
30497         to create another thread because the finalizers will be run in the
30498         finalizer thread.
30499         
30500         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
30501         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
30502         to be run (MS does this too).
30503
30504 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
30505
30506         * object.c (mono_class_compute_gc_descriptor): Update comment.
30507
30508         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
30509
30510         * image.h: Add synchronized wrapper cache.
30511
30512         * image.c (do_mono_image_open): Initialize cache.
30513
30514         * reflection.c (create_dynamic_mono_image): Initialize cache.
30515
30516 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30517
30518         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
30519         ves_icall_System_Buffer_ByteLengthInternal.
30520
30521 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
30522
30523         * reflection.c: setup klass->nested_in earlier. Allow
30524         a dash in the assembly name.
30525
30526 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
30527
30528         * metadata.c (mono_type_to_unmanaged): dont access
30529         type->data.klass for MONO_TYPE_OBJECT
30530         (mono_type_to_unmanaged): consider System.Delegate class
30531
30532 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
30533
30534         * class.c: just setup supertypes in the proper place instead of
30535         initializing the full element class for arrays.
30536
30537 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
30538
30539         * class.c: ensure the element class of arrays is initialized.
30540         Setup the supertype info for array classes, too.
30541
30542 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
30543
30544         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
30545
30546 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30547
30548         * Makefile.am: re-added -m option when running cygpath. This way,
30549         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
30550         separator.
30551         * mono-config.c: same codepath for locating mono config file for WIN32
30552         and the rest.
30553         * assembly.c: if mono_assembly_setrootdir is called, don't override
30554         the value set.
30555
30556 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30557
30558         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
30559         MONO_ASSEMBLIES variable.
30560
30561 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
30562
30563         * icall.c: added Assembly::GetNamespaces() icall.
30564
30565 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30566
30567         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
30568
30569 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
30570
30571         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
30572         * object.c: fixed bug in the construction of vtable for proxies
30573
30574 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
30575
30576         * object.c (mono_array_new): Mark mono_array_new as an icall.
30577
30578 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30579
30580         * class.c: fixed test for public method when overriding interfaces.
30581         Closes bug #40970.
30582
30583 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
30584
30585         * appdomain.h, domain.c: added mono_domain_foreach() to
30586         be able to access the currently loaded appdomains.
30587         * object.c: make string interning work across sppdomains.
30588         Mark some functions for use as icalls.
30589
30590 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
30591
30592         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
30593
30594         * reflection.h reflection.c: Allocate long living data using 
30595         GC_MALLOC_ATOMIC so the collector does not need to scan it.
30596
30597         * reflection.c: Double the allocation size in streams instead of
30598         increasing it, to prevent unneccesary copying on large assemblies.
30599         
30600         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
30601         creation if the assembly does not have the Run flag set.
30602
30603 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
30604
30605         * class.h: avoid the C++ keywords in header files (Jerome Laban
30606         spotted and fixed this).
30607
30608 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30609
30610         * object.c:
30611         (mono_unhandled_exception): fill in the arguments for the
30612         UnhandledException event. Only trigger that event for the default
30613         domain (as MS does).
30614
30615 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
30616
30617         * object.c: Improve typed allocation stuff based on suggestions from
30618         Paolo. Also turn it on if the GC library supports it.
30619
30620 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
30621
30622         * object.c object.h class.h: Added experimental typed allocation
30623         facility using the interfaces in gc_gcj.h.
30624
30625         * os/gc_wrapper.h: Added new include files.
30626         
30627 2003-04-03  Martin Baulig  <martin@ximian.com>
30628
30629         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
30630         which is not yet enabled by default.
30631
30632         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
30633         functions.
30634         (mono_gc_lock, mono_gc_unlock): New static functions.
30635
30636         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
30637         functions; stop/start the world for the garbage collector.  This
30638         is using the windows API; we need to complete the SuspendThread()/
30639         ResumeThread() implementation in the io-layer to make this work on Unix.
30640         (mono_gc_push_all_stacks): New public function; tells the garbage
30641         collector about the stack pointers from all managed threads.
30642
30643 2003-04-03  Martin Baulig  <martin@ximian.com>
30644
30645         * object.h (MonoThread): Added `gpointer stack_ptr'.
30646
30647         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
30648
30649 2003-04-03  Martin Baulig  <martin@ximian.com>
30650
30651         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
30652
30653 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
30654
30655         * reflection.c (typebuilder_setup_fields): Initialize field.first and
30656         field.last.
30657
30658 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
30659
30660         * loader.c (mono_lookup_internal_call): Report the corlib that is
30661         out of sync.
30662
30663 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
30664
30665         * icall.c (ves_icall_type_GetTypeCode): fixed check for
30666         System.DBNull (it's class not valuetype).
30667
30668 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
30669
30670         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
30671         if the array method was already assigned a token (fixes bug#40646).
30672
30673 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
30674
30675         * reflection.c (mono_reflection_get_type): Attempt type resolve even
30676         if no assembly is given.
30677
30678 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
30679
30680         * metadata.h: Added the new tables.
30681
30682         * row-indexes.h: Added definitions for new tables.
30683
30684         * metadata.c: Add schemas for new tables, and add support for
30685         computing the sizes of them.
30686
30687         * class.c: Update for handling the new type cases.
30688
30689 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
30690
30691         * metadata.h (MONO_TYPE_IS_VOID): new macro
30692
30693 2003-03-31  Martin Baulig  <martin@ximian.com>
30694
30695         * threads.h (MonoThreadCallbacks): Added `thread_created'.
30696
30697         * threads.c (mono_thread_new_init): Call `thread_created' in the
30698         mono_thread_callbacks.
30699
30700 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
30701
30702         * loader.h: added marshalbyrefobject_class to mono_defaults
30703         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
30704         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
30705           generation of output parameters.
30706           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
30707         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
30708           contextbound and the target object belongs to the context of the caller.
30709         * object.h: added context and unwrapped_server variables in MonoRealProxy.
30710         * object.c: Implemented support for interfaces and abstract classes
30711           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
30712           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
30713
30714 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
30715
30716         * class.h class.c (mono_class_is_subclass_of): New function.
30717         
30718         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
30719         routines for most common case (calls from ArrayList::ToArray).
30720
30721         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
30722         routine so programs which call Environment::Exit() can be profiled.
30723
30724         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
30725         Added MONO_ARCH_SAVE_REGS.
30726
30727         * icall.c (ves_icall_type_is_subtype_of): Use new function.
30728
30729 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
30730
30731         * blob.h: Add a couple of new MonoType types definitions.
30732
30733         * tabledefs.h: Add a couple of new call convs.
30734
30735 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
30736
30737         * reflection.h (MonoReflectionDynamicAssembly): track changes in
30738         the layout of the class.
30739
30740         * reflection.c (alloc_table): double the size on overflow to avoid
30741         unnecessary copying.
30742
30743         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
30744         avoid filling out metadata tables and blobs. Also set mb->ilgen to
30745         null so it can be garbage collected.
30746         
30747 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
30748
30749         * reflection.c (mono_reflection_get_type): Return the resolved type
30750         only if it is in the assembly we searched.
30751
30752         * reflection.c (ensure_runtime_vtable): Initialize method slots.
30753
30754         * class.c (mono_class_setup_vtable): Set the slot of the overriding
30755         method.
30756
30757 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30758
30759         * appdomain.c:
30760         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
30761         the right one is 'file:///blah', but MS allows it.
30762         * assembly.c:
30763         (mono_assembly_open): allow 'file://blah'
30764
30765         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
30766
30767 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
30768
30769         * socket-io.c: fixes bug #40310.
30770
30771 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
30772
30773         * reflection.c (mono_reflection_parse_type): handle deeply nested
30774         types correctly.
30775
30776         * reflection.c (mono_image_create_token): Use unique token values
30777         since they will be put into a hash table.
30778
30779         * class.c (mono_class_setup_vtable): If a method occurs in more than
30780         one place in the vtable, and it gets overriden, then change the
30781         other occurances too.
30782
30783         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
30784         object as return type.
30785
30786 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
30787
30788         * icall.c: Deleted "ToString" implementation for double and float
30789         because they are full implemented in managed code.
30790
30791 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
30792
30793         * reflection.c, reflection.h: implemented and exported functions
30794         to retrieve info about custom attributes.
30795
30796 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30797
30798         * appdomain.c: moved Uri handling to assembly.c
30799         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
30800         work when using a file Uri in *nix and windows.
30801
30802         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
30803         GetReferencedAssemblies.
30804
30805 2003-03-18  Dick Porter  <dick@ximian.com>
30806
30807         * icall.c: Rename a couple of internal calls
30808
30809         * threads.c: Set the thread state to Stopped when a thread exits.
30810         Fixes bug 39377.
30811
30812 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
30813
30814         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
30815         New icall.
30816
30817         * object.c (mono_class_vtable): fix warning.
30818
30819 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
30820
30821         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
30822
30823         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
30824         memory.
30825         (method_encode_clauses): Create exception info structures in the right
30826         order.
30827         (mono_reflection_setup_internal_class): Initialize supertypes field.
30828
30829         * class.c object.c: Handle interfaces which implement other interfaces 
30830         correctly.
30831
30832         * class.h class.c: Move the supertypes array initialization code into 
30833         a separate function so it can be used for dynamic types too. Also call
30834         it earlier, in mono_class_init(), since it can be used before the
30835         type is initialized.
30836
30837 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30838
30839         * Makefile.am:
30840         * assembly.c:
30841         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
30842
30843         * appdomain.c:
30844         * appdomain.h:
30845         * marshal.c:
30846         * object.c: remove warnings.
30847
30848 2003-03-13  Martin Baulig  <martin@ximian.com>
30849
30850         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
30851         (MonoDebugLexicalBlockEntry): New types.
30852
30853         * debug-mono-symfile.c
30854         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
30855
30856 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30857
30858         * process.c: ret can be any non-zero value accroding to MS doc.
30859
30860 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
30861
30862         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
30863         fixing a warning for a miss-used prototype, would have cause
30864         random memory corruption.
30865
30866 2003-03-07  Martin Baulig  <martin@ximian.com>
30867
30868         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
30869         getting really annoying ....
30870
30871 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
30872
30873         * reflection.c (fixup_method): added support for array methods.
30874
30875 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
30876
30877         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
30878         (pointed out by Michael Adams).
30879
30880 2003-03-04  Dick Porter  <dick@ximian.com>
30881
30882         * icall.c: Temporarily reverted the Double and Single ToString()
30883         change, because it broke nunit.
30884
30885 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
30886
30887         * object.h, threads.h: make include files compatible with C++
30888         (patch by Jerome Laban <jlaban@wanadoo.fr>).
30889
30890 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
30891
30892         * icall.c: Erased ToString helper functions for Double and Single.
30893         Now, that implementations ar all in managed code (Double and Single
30894         Formatters).
30895
30896 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
30897
30898         * appdomain.c: Added method for initializing the default context of
30899         a domain. Added internal call for getting the default context.
30900         * appdomain.h: Added context variable in MonoDomain struct.
30901         * domain.c: mono_domain_set also sets the default context of the domain
30902         * icall.c: Mapped internal method InternalGetDefaultContext.
30903         * object.c: mono_object_get_virtual_method returns always a remoting
30904         wrapper if the object is a transparent proxy.
30905         mono_runtime_invoke_array: when creating an object by calling the
30906         constructor, if the created object is a proxy, then the constructor should
30907         be called using the a remoting wrapper.
30908
30909 2003-03-03  Dick Porter  <dick@ximian.com>
30910
30911         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
30912         variable so it compiles on solaris.  Problem spotted by
30913         Christopher Taylor <ct@cs.clemson.edu>
30914
30915 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30916
30917         * appdomain.c:
30918         (get_info_from_assembly_name): don't leak value.
30919
30920         * icall.c:
30921         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
30922         result.
30923
30924 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
30925
30926         * assembly.c: export mono_image_load_references ().
30927         * class.c: handle function pointers. mono_class_from_name() now
30928         supports nested type names directly.
30929
30930 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
30931
30932         * reflection.h reflection.c: Encode already created dynamic methods 
30933         and fields correctly as a DEF instead of a REF.
30934
30935         * reflection.c: Get rid of the force_ref argument to 
30936         mono_image_typedef_or_ref since it was wrong in the first place.
30937
30938         * string-icalls.c: add error checking to string constructors according
30939         to the MSDN docs.
30940
30941         * reflection.c: Emit types in the order their TypeBuilders were 
30942         created. Previously, a new table index was assigned to each type before
30943         the tables were emitted. This was wrong because the signature blob
30944         might already refer to a type by its original table index.
30945
30946 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
30947
30948         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
30949         change.
30950         
30951 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30952
30953         * Makefile.am: make assemblies dir have \ instead of / on windows.
30954
30955 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
30956
30957         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
30958         iterate over the NESTEDCLASS table using a linear search since the
30959         table is not guaranteed to be sorted by the secondary key.
30960
30961         * class.c (mono_class_create_from_typedef): fixed up call to
30962         mono_metadata_nesting_typedef.
30963         
30964 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
30965
30966         * marshal.c (mono_string_to_byvalstr): clear the memory as
30967         suggested by Jerome Laban <jlaban@wanadoo.fr>
30968
30969 2003-02-26  Dick Porter  <dick@ximian.com>
30970
30971         * process.c: Cope with padding in .rsrc blocks
30972
30973 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
30974
30975         * metadata.h: reverted the filter_len change, it breaks reflection
30976         
30977 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
30978
30979         * metadata.h: added a new field to store the filter_len
30980         
30981
30982 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
30983
30984         * reflection.c: handle custom attributes for types and members
30985         created with Reflection.Emit (bug#38422).
30986
30987 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
30988
30989         * reflection.c: define RTSpecialName automatically for constructors for
30990         compatibility with MS.NET.
30991
30992         * reflection.c (mono_reflection_create_runtime_class): initialize
30993         nested_in field of dynamically created classes.
30994
30995 2003-02-22  Martin Baulig  <martin@ximian.com>
30996
30997         * debug-mono-symfile.h: Incremented version number.
30998
30999 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
31000
31001         * object.h icall.c process.c: fix warnings.
31002
31003 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
31004
31005         * appdomain.h appdomain.c:
31006         (mono_domain_try_type_resolve): split the 
31007         name_or_tb argument into a name and a tb argument.
31008         (mono_domain_has_type_resolve): new function to check whenever the
31009         application has registered a TypeResolve event handler.
31010         
31011         * icall.c reflection.h reflection.c: move the type resolve logic into
31012         mono_reflection_get_type () so it will be invoked when 
31013         Assembly::GetType () is called.
31014
31015         * reflection.c:
31016         (mono_reflection_get_type): renamed to get_type_internal.
31017         (mono_reflection_get_type): fixed type name generation so it works 
31018         for nested types too.
31019         (mono_reflection_get_type): call has_type_resolve () to avoid the 
31020         costly type name generation if there is no resolve event handler.
31021
31022 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
31023
31024         * class.c, image.c: load exported types from file references.
31025
31026 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
31027
31028         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
31029           used to cache the managed methods used to create proxies and make 
31030           remote invocation of methods.
31031         * class.h: Added in MonoVTable a flag to indicate that a class needs 
31032           to be remotely created.
31033         * object.c: Modified the method mono_class_vtable(). It now initializes 
31034           the remote flag of the vtable. Modified mono_object_new_specific(), 
31035           so now it checks the remote flag.
31036         * icall.c: Added a couple of internal methods, one for enabling instance 
31037           creation interception for a type, and one for creating objects bypassing
31038           the remote check.
31039
31040 2003-02-18  Martin Baulig  <martin@ximian.com>
31041
31042         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
31043         New interncall to get a method's metadata token.
31044
31045         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
31046         New interncall for the debugger.
31047
31048 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
31049
31050         * class.c (mono_class_setup_vtable): allocate supertype array
31051
31052 2003-02-18  Martin Baulig  <martin@ximian.com>
31053
31054         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
31055
31056 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31057
31058         * reflection.c:
31059         (assembly_name_to_aname): jump over unknown properties (i've found
31060         something like: 'type, assembly, version=xxx, custom=null, public...',
31061         so now will ignore custom=null and still get the rest of the values).
31062
31063 2003-02-17  Dick Porter  <dick@ximian.com>
31064
31065         * threads.c: Have Thread.Start() wait for a semaphore to signal
31066         that the thread has set up all its local data.  This fixes bug
31067         34323, where Abort() raced the new thread's TLS data.
31068
31069         Also removes the handle_store() call from start_wrapper, because
31070         threads are now always created suspended and there is no longer a
31071         race between the parent and child threads to store the info.
31072
31073 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
31074
31075         * image.c: explain the #- heap issue in a message, hopefully
31076         avoiding FAQs on mono-list.
31077
31078 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31079
31080         * icall.c:
31081         (GetEntryAssembly): if the domain has not invoked
31082         AppDomain.ExecuteAssembly yet, return the assembly of the default
31083         AppDomain.
31084
31085 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
31086
31087         * class.c (mono_ldtoken): make it work in dynamic assemblies.
31088
31089 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
31090
31091         * metadata.c, reflection.c: simple speedup to type hash
31092         and equals code.
31093
31094 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
31095
31096         * image.c, image.h, class.c, assembly.c: move module loading
31097         to MonoImage. When loading metadata, consider alignemnet from
31098         the start of metadata, not from the metadata address in memory.
31099
31100 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
31101
31102         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
31103         AssemblyBuilder objects. Factored out custom attribute creation into
31104         a separate function.
31105         (create_custom_attr): new function to create custom attributes.
31106
31107 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
31108
31109         * Makefile.am: Got tired of typing the full pathname to pedump.
31110         Until there is another option, am installing this.
31111
31112 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
31113
31114         * class.c (class_compute_field_layout): always set field->parent 
31115         (mono_ldtoken): use mono_defaults.fieldhandle_class;
31116
31117 2003-02-11  Dick Porter  <dick@ximian.com>
31118
31119         * threads-types.h:
31120         * monitor.c: Rewrote Monitor, making lock much faster and
31121         Pulse/Wait work as specified.  Also uses much fewer handles, and only
31122         creates them as needed.
31123
31124         * exception.c: Added SynchronizationLockException
31125
31126         * threads.c: Deleted old Monitor implementation.  The new one is
31127         in a new file.
31128
31129 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
31130
31131         * class.c: handled TypedReference type code. Set the correct size for
31132         class data. Setup interface_offsets for interface classes, too.
31133
31134 2003-02-09  Martin Baulig  <martin@ximian.com>
31135
31136         * debug-mono-symfile.h: Reflect latest symbol writer changes.
31137
31138 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
31139
31140         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
31141         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
31142         * object.c: fixed mono_object_get_virtual_method () for interfaces.
31143         * verify.c: check for code that runs after the end of the method.
31144
31145 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
31146
31147         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
31148         "System.Math::Round2".
31149         * sysmath.h: Added Floor, Round and Round2 definitions.
31150         * sysmath.c: Modified certain functions that were not 100% compliant
31151         with MS.NET (math precision) and added the implementation of Floor,
31152         Round and Round2.
31153
31154 2003-02-07  Martin Baulig  <martin@ximian.com>
31155
31156         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
31157
31158 2003-02-07  Martin Baulig  <martin@ximian.com>
31159
31160         * debug-mono-symfile.c: Reflected latest symwriter changes.
31161         (mono_debug_create_mono_symbol_file): Removed.
31162         (mono_debug_open_mono_symbol_file): Take an argument which
31163         specifies whether to create a dynamic symbol file.
31164
31165 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
31166
31167         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
31168
31169 2003-02-05  Martin Baulig  <martin@ximian.com>
31170
31171         * reflection.c (mono_image_build_metadata): Make this public,
31172         protect it against being called multiple times, don't create
31173         resources and don't build the compressed metadata here.
31174         (mono_image_create_pefile): Do this here.
31175
31176         * icall.c
31177         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
31178
31179 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31180
31181         * socket-io.c: fixed bug #36322.
31182
31183 2003-02-06  Piers Haken <piersh@friskit.com>
31184
31185         * appdomain.[ch]:
31186         * class.h:
31187         * debug-mono-symfile.c:
31188         * icall.c:
31189         * loader.c:
31190         * mono-config.c:
31191         * monosn.c:
31192         * reflection.c:
31193         * socket-io.c: warning cleanups
31194
31195 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
31196
31197         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
31198         function. works like remoting invoke, but does a check for the Proxy first.
31199
31200 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
31201
31202         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
31203
31204 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
31205
31206         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
31207         array of pointers.
31208         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
31209         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
31210
31211         * object.c (mono_store_remote_field_new): used by the new jit
31212         instead of mono_store_remote_field
31213         (mono_load_remote_field_new): used by the new jit
31214         instead of mono_load_remote_field
31215
31216 2003-02-05  Patrik Torstensson
31217
31218         * appdomain.c: changed unload to take the domain id instead
31219         of domain
31220         
31221         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
31222
31223
31224 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31225
31226         * appdomain.c: don't look for assemblies in ApplicationBase if
31227         PrivateBinPathProbe is set.
31228
31229 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31230
31231         * object.c: make the first argument in main_args contain the absolute
31232         path to the assembly. Fixes bug #37511.
31233
31234 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31235
31236         * icall.c: get correct UTC offset for countries not using daylight
31237         time saving. Fixes bug #30030.
31238
31239 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31240
31241         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
31242         and 1 are the family).
31243
31244 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
31245
31246         * icall.c (ves_icall_InternalExecute): removed wrong assertion
31247
31248         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
31249
31250 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
31251
31252         * reflection.c: added support for SignatureHelper tokens, which is
31253         needed by the Calli opcode.
31254
31255         * reflection.h: track changes to SignatureHelper class.
31256
31257         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
31258
31259 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31260
31261         * appdomain.c: fixed loading assemblies from PrivateBinPath.
31262
31263 2003-02-03  Patrik Torstensson
31264         * appdomain.[c|h], domain.c : 
31265          - Added support for getting a domain via domain id
31266          - Support for setting and getting domain from System.AppDomain 
31267            (used in cross appdomain channel)
31268          - Added support for get/set for a MonoAppContext on a thread 
31269            (Context class in System.Runtime.Remoting.Contexts),
31270          - Removed hack in Get/SetData and ExecuteAssembly.
31271         
31272         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
31273         the managed world to get control when a proxy is created.
31274
31275         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
31276         
31277 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
31278
31279         * icall.c
31280         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
31281         Populate the codebase field as well.
31282
31283 2003-02-02  Martin Baulig  <martin@ximian.com>
31284
31285         * debug-mono-symfile.c
31286         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
31287         (mono_debug_symfile_add_method): Allow interncalls.
31288
31289 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31290
31291         * icall.c: throw parse exception if strtod fails or the string is empty.
31292
31293 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
31294
31295         * marshal.c: handle object type separately from defined
31296         class types.
31297
31298 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
31299
31300         * marshal.c: handle NATIVE_LPSTR for strings when it's
31301         explicitly specified.
31302
31303 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
31304
31305         * reflection.c, reflection.h, icall.c: setup the reflection
31306         handle cache for ModuleBuilders and AssemblyBuilders.
31307
31308 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
31309
31310         * reflection.c (reflection_methodbuilder_to_mono_method): set
31311         pinvoke flag
31312
31313 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31314
31315         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
31316
31317 2003-01-29  Dick Porter  <dick@ximian.com>
31318
31319         * threads.c: No need for the fake_thread kludge now that Thread
31320         doesn't run a class constructor
31321         
31322 2003-01-29  Dick Porter  <dick@ximian.com>
31323
31324         * threads.c: Use g_direct_hash instead of the rather bogus
31325         g_int_hash
31326
31327 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
31328
31329         * marshal.c (mono_marshal_get_native_wrapper): add check for null
31330         (fix pinvoke12.exe)
31331         (mono_marshal_get_struct_to_ptr): generate valid IL code
31332         (mono_marshal_get_ptr_to_struct): generate valid IL code
31333         (*): correctly set sig->pinvoke, we need to memdup the signature
31334         to do that
31335
31336 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
31337
31338         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
31339         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
31340
31341 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
31342
31343         * profiler.c: provide more callers information.
31344
31345 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
31346
31347         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
31348
31349         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
31350
31351         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
31352
31353 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
31354
31355         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
31356         exception instead of going into an infinite loop on dates which it 
31357         can't yet handle.
31358
31359         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
31360         out-of-range exception if needed.
31361
31362         * class.c (mono_class_setup_vtable): allow a virtual method to provide
31363         an implementation for an interface method and to override an inherited
31364         method at the same time. 
31365         Imagine a scenario when a virtual method is used to override a
31366         virtual abstract method in a parent class, and this same method 
31367         provides an implementation for an method inherited from an interface. 
31368         In this case, the interface resolution code will set im->slot, which 
31369         means that the virtual method override pass will skip this method 
31370         which means a pointer to the abstract method inherited from the parent
31371         will remain in the vtable of this non-abstract class.
31372
31373         * class.c: (mono_class_setup_vtable): continue search for a real 
31374         method if only an abstract method is found.     
31375
31376 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
31377
31378         * reflection.c: add size to encoding for ByValStr and ByValArray
31379         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
31380
31381 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
31382
31383         * class.c (mono_class_setup_vtable): pass the override info as an
31384         argument.
31385
31386         * class.c (mono_class_setup_vtable): set the slot of overriding methods
31387         correctly.
31388         
31389         * reflection.c (ensure_runtime_vtable); add support for method 
31390         overrides.
31391         
31392 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
31393
31394         * reflection.c (resolution_scope_from_image): Hack to work to work with
31395         dynamic assemblies.
31396
31397         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
31398         added a 'force_ref' argument to force this function to allways return 
31399         a TypeRef. This is needed by mono_image_get_memberref_token ().
31400         
31401 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
31402
31403         * reflection.c (mono_image_get_type_info): interfaces really don't have
31404         a parent.
31405
31406         * reflection.c (mono_image_basic_init): fill out missing fields of
31407         image structure.
31408
31409         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
31410         dynamic assemblies. This is required so dynamic assemblies show up in
31411         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
31412         Type::GetType() etc. This is consistent with MS behaviour.
31413
31414         * image.c image.h reflection.c: add newly created classes to the name 
31415         cache so mono_class_get () will find them.      
31416
31417 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
31418
31419         First part of changes to get IKVM.NET running under mono.
31420         
31421         * appdomain.h, appdomain.c: added new function 
31422         mono_domain_try_type_resolve() which will emit TypeResolve events. 
31423         This function will call AppDomain::DoTypeResolve to do the actual work.
31424
31425         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
31426         moved existing code dealing with dynamic tokens to a new function 
31427         called mono_reflection_lookup_dynamic_token (). This function will 
31428         raise TypeResolve events when appropriate. Since reflection.c is not 
31429         part of libmetadata, a new hook function called 
31430         mono_lookup_dynamic_token() is added to class.c which will call this.
31431
31432         * assembly.h assembly.c: make the invoke_load_hook function public,
31433         so it can be called for dynamic assemblies.
31434
31435         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
31436
31437         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
31438         type isn't found.
31439
31440         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
31441         MonoGHashTable, since it contains pointers to objects which the GC 
31442         needs to track.
31443
31444         * assembly.c (search_loaded): remove unused variable.
31445         
31446 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
31447
31448         * object.c: fixed issue exposed by gcc-generated IL programs
31449         that use RVA data for pointers.
31450
31451 2003-01-25  Martin Baulig  <martin@ximian.com>
31452
31453         * threads.c (start_wrapper): Moved the initialization of
31454         `start_func' above the mono_new_thread_init() call to which we
31455         pass it as argument.
31456
31457 2003-01-24  Martin Baulig  <martin@ximian.com>
31458
31459         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
31460         the MonoThread pointer.
31461
31462 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
31463
31464         * icall.c: Rename `PowImpl' to Pow.
31465
31466 2003-01-23  Dick Porter  <dick@ximian.com>
31467
31468         * threads.c (start_wrapper): Create a Thread object if needed, so
31469         the Main() thread can do the class initialisation in a subthread
31470         that has been set up to allow managed code execution.
31471
31472         Pass the thread ID instead of the MonoThread pointer to the thread
31473         start and attach callbacks.  This change is required, because the
31474         jit thread start callback must be called _before_ the Thread
31475         object can be created.
31476         
31477         (mono_thread_init): Removed much object creation code that is no
31478         longer needed.  No managed code is called from here now.
31479
31480         * object.c (mono_runtime_exec_managed_code): Create a subthread
31481         for Main, and call back to the runtime to use it.
31482         Set the exit code when Main exits.
31483
31484         * gc.c: Make sure domain finalisation happens in a subthread.
31485         Re-enable threaded GC, fixing bug 31333 (again).
31486
31487         * environment.c: System.Environment internall calls (so far just
31488         ExitCode is here, the others are still in icall.c)
31489
31490         * appdomain.c (mono_runtime_cleanup): All threads running managed
31491         code should have finished before mono_runtime_cleanup() is
31492         reached, so no need to clean up threads.
31493
31494 2003-01-22  Martin Baulig  <martin@ximian.com>
31495
31496         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
31497         `gpointer func' arguments.      
31498         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
31499         but added `MonoThread *thread' argument.
31500         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
31501
31502         * threads.c (mono_new_thread_init): Added `gpointer func' argument
31503         and pass it to the mono_thread_start_cb callback.
31504         (mono_install_thread_callbacks): New public function to install a
31505         set of callbacks which are set by the debugger.
31506         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
31507
31508 2003-01-22  Martin Baulig  <martin@ximian.com>
31509
31510         * Makefile.am: Install debug-mono-symfile.h.
31511
31512 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
31513
31514         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
31515
31516 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
31517
31518         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
31519         * class.c (mono_ptr_class_get): correctly set access levels of pointers
31520         (mono_array_class_get): correctly set access levels of arrays
31521
31522 2003-01-20      Patrik Torstensson
31523         * image.h (MonoAssemblyName): changed major, minor, build, revision
31524         from signed to unsigned.
31525
31526 2003-01-20  sean kasun <skasun@azstarnet.com>
31527
31528         * reflection.c (load_cattr_value): Now this handles
31529         MONO_TYPE_SZARRAY.  Fixes bug #35629
31530
31531 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
31532
31533         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
31534         integer value
31535
31536 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31537
31538         * decimal.c: fixed bug #26056.
31539
31540 2003-01-17  Martin Baulig  <martin@ximian.com>
31541
31542         * gc.c: Raise an ExecutionEngineException instead of using g_error().
31543
31544 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31545
31546         * exception.[ch]:
31547         (mono_get_exception_type_initialization): new function.
31548
31549         * object.c: throw a TypeInitializationException when an exception is
31550         thrown invoking the class constructor.
31551
31552 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31553
31554         * reflection.c: fixed attribute reading.
31555
31556 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31557
31558         * icall.c:
31559         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
31560         provided, look for the type in the calling assembly and then in
31561         mscorlib; if the assembly name is provided, only try that one.
31562
31563 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
31564
31565         * object.c: register the vtable before there is a chance it's
31566         queried again recursively.
31567
31568 2003-01-13  Duncan Mak  <duncan@ximian.com>
31569
31570         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
31571         gc-internal.h. 
31572         
31573 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
31574
31575         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
31576
31577 2003-01-11  Martin Baulig  <martin@ximian.com>
31578
31579         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
31580         this to 20 for the release.
31581
31582 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
31583
31584         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
31585
31586         * loader.c (mono_method_get_marshal_info): bug fix
31587
31588         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
31589         structures with explicit layout
31590
31591 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
31592
31593         * profiler.c: made the output more readable (and sorted). 
31594         Added caller information for the allocation profiler.
31595
31596 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
31597
31598         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
31599
31600 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31601
31602         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
31603         to get value types.
31604         
31605 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
31606
31607         * object.c, profiler.h, profiler.c, profiler-private.h:
31608         Added object allocation profiler.
31609
31610 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
31611
31612         * reflection.h, reflection.c: handle global methods.
31613         Compress blob entries.
31614
31615 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
31616
31617         * marshal.c: fix compilation.
31618
31619 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
31620
31621         * loader.c (mono_method_get_marshal_info): impl.
31622
31623         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
31624
31625 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31626
31627         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
31628         for reference types.
31629
31630 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
31631
31632         * loader.c: fixed off by one error in loaded parameter names.
31633
31634 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
31635
31636         * marshal.c (mono_marshal_get_icall_wrapper): like
31637         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
31638         instead of a MonoMethod.
31639
31640 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31641
31642         * decimal.c: fixed bug #36537.
31643
31644 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
31645
31646         * marshal.c: throw a missing method exception if a
31647         P/Invoke method is not found.
31648
31649 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
31650
31651         * icall.c: allow a null this for constructors.
31652
31653 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
31654
31655         * icall.c: raise the proper exceptions if the arguments to the
31656         internal Invoke are incorrect.
31657
31658 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
31659
31660         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
31661
31662 2003-01-03  Martin Baulig  <martin@ximian.com>
31663
31664         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
31665
31666 2002-12-31  Martin Baulig  <martin@ximian.com>
31667
31668         * debug-mono-symfile.c: Completely rewrote the type section.
31669         Instead of using individual malloc()ed fields, we use one big
31670         continuous memory area and offsets into this area.
31671         See the comments in the source code for details.
31672
31673 2002-12-30  Martin Baulig  <martin@ximian.com>
31674
31675         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
31676
31677 2002-12-30  Martin Baulig  <martin@ximian.com>
31678
31679         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
31680         line number table in this data blob instead of using an external
31681         pointer.
31682
31683 2002-12-28  Martin Baulig  <martin@ximian.com>
31684
31685         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
31686
31687 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
31688
31689         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
31690         as a boxed return type.
31691
31692 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
31693
31694         * appdomain.c
31695         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
31696         g_build_filename to properly get separators on the filename created.
31697
31698         * object.h: Small change, introduce MonoMarshalByRefObject to
31699         track the layout of that structure in the C# universe as we make
31700         changes there.
31701
31702 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
31703
31704         * object.c: removed assert to allow static fields on interfaces.
31705         * loader.c: a TypeSpec may be used for any type, not just arrays.
31706
31707 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31708
31709         * class.c, class.h: added mono_class_array_element_size ().
31710         Ignore static methods in interfaces.
31711
31712 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31713
31714         * threads.c: fixed the build under cygwin.
31715
31716 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
31717
31718         * reflection.c: handle nullref constants. Allocate keys for
31719         reflection handles with the GC.
31720
31721 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
31722
31723         * threads.c, threads.h: added mono_thread_get_abort_signal()
31724         to get a suitable signal for thread abort.
31725
31726 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
31727
31728         * metadata.c: fix handling of ExportedType table.
31729
31730 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31731
31732         * icall.c: added WriteWindowsDebugString internal call.
31733
31734 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31735
31736         * reflection.h: added fields to match C# implementation.
31737
31738 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31739
31740         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
31741
31742 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
31743
31744         * gc.h, gc-internal.h: Rename header for GC internal calls to
31745         gc-internal.h from gc.h as to not clash with Boehm GC having its
31746         header installed as <gc.h> in outside include paths.
31747         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
31748         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
31749
31750 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31751
31752         * icall.c: assign minor, build and revision in FillName.
31753
31754 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
31755
31756         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
31757         Added support for running code generated by Reflection.Emit.
31758
31759 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31760
31761         * appdomain.c: check for NULL argument in LoadFrom.
31762
31763 2002-12-10  Dick Porter  <dick@ximian.com>
31764
31765         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
31766
31767 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31768
31769         * appdomain.c: fix buglet when building exe file name.  Handle full
31770         assembly name (needed after latest changes to AssemblyName).
31771         * image.c:
31772         (mono_image_close): free some hashtables.
31773
31774 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
31775
31776         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
31777         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
31778         on some systems (redhat 7.3) 
31779
31780 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
31781
31782         * threads.c: delete the critical section of a sync block,
31783         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
31784
31785 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
31786
31787         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
31788
31789 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31790
31791         * appdomain.[ch]: handle the assembly preload event to try loading the
31792         assemblies using the paths we have in the current domain.
31793
31794         * assembly.[ch]: created an assembly preload hook that is called to try
31795         loading the assembly by other means that the ones provided here.
31796
31797         * domain.c: initialize the domain search path.
31798
31799         From now on, assemblies (TODO: except corlib and System) are loaded
31800         according to these rules when using mono_assembly_load ():
31801
31802                 1. It tries to load the assembly from the ApplicationBase
31803                 of the current domain appending .dll and .exe (TODO: have to
31804                 try loading from name/name.dll and name/name.exe).
31805
31806                 2. It tries the search path specified in PrivateBinPath for the
31807                 current domain (if any).
31808
31809                 3. Previous behavior.
31810
31811 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
31812
31813         * icall.c: implemented GetInterfaceMap() related icall.
31814         * domain.c, loader.h: load MethodInfo in mono_defaults.
31815
31816 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
31817
31818         * gc.c: disable the finalizer thread for now, untill all the issues
31819         with it are resolved.
31820
31821 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31822
31823         * string-icalls.c: handle embedded nulls in string ctor when the
31824         length is specified.
31825
31826 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
31827
31828         * class.c: look for explicit interface implementation in parent
31829         classes, too.
31830
31831 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
31832
31833         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
31834
31835 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
31836
31837         * gc.c: protect handles with a critical section.
31838
31839 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31840
31841         * icall.c:
31842         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
31843         parameters. If no assembly specified, try getting the type from all
31844         the assemblies in the current domain, else, load the assembly and get
31845         the type from it.
31846
31847 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31848
31849         * marshal.c: applied patch from Aleksey Demakov that fixes
31850         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
31851
31852 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31853
31854         * icall.c: fixed get_location.
31855
31856 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
31857
31858         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
31859         declarations to make it work with older gcc. 
31860
31861         * loader.c (mono_get_method): set signature->pinvoke for native calls
31862
31863 2002-11-20  Dick Porter  <dick@ximian.com>
31864
31865         * threads.c (mono_thread_init): Set the main thread's handle
31866
31867 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
31868
31869         * gc.c: allow compilation without GC support. Changed to match the
31870         mono coding style.
31871
31872 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
31873
31874         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
31875
31876 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
31877
31878         * reflection.c: set a public key token on the core assemblies.
31879
31880 2002-11-18  Dick Porter  <dick@ximian.com>
31881
31882         * threads.c: Split out some thread initialisation so that other
31883         files can set the start callback function.
31884
31885         * gc.c: Run finalisers in a separate thread, to avoid stack
31886         overflow.  Fixes bug 31333.
31887
31888         * appdomain.c: Set up GC finalisation thread.
31889
31890         * reflection.c: 
31891         * object.c: 
31892         * domain.c: Use gc.h macros for GC_malloc
31893         
31894 2002-11-15  Dick Porter  <dick@ximian.com>
31895
31896         * threadpool.c: 
31897         * threads.c:
31898         * appdomain.c: Removed mono_runtime_init_with_attach(),
31899         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
31900         merging the extra parameter with the existing function.  Removed
31901         unneeded code in mono_thread_attach().
31902
31903 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
31904
31905         * image.c (mono_image_loaded_by_guid): a method to get loaded
31906         images by guid. 
31907         (load_metadata_ptrs): we store the guid as string.
31908
31909 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
31910
31911         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
31912
31913         * metadata.c (mono_guid_to_string): imported method form Zoltan
31914         Varga (slightly modified)
31915
31916         * assembly.c (mono_assembly_open): load precompiled code
31917
31918         * loader.h (MonoMethod): we store the method token for use in the
31919         aot compiler. 
31920
31921 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31922
31923         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
31924         the hook function called when an assembly is loaded.
31925         
31926         * domain.c: Modified file.
31927         (mono_domain_assembly_load): removed hash table insertion of assemblies.
31928
31929         Fixes bug #33196.
31930
31931 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
31932
31933         * reflection.c: Map PEFileKind to the value expected by the WinNT
31934         image loader. 
31935
31936 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31937
31938         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
31939         Read until the buffer is filled completely.
31940
31941 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31942
31943         * icall.c: implemented MonoType.InternalGetEvent ().
31944
31945 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31946
31947         * appdomain.c: implemented InitAppDomainSetup. Delayed
31948         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
31949         the entry_assembly.
31950
31951         * assembly.c: base_dir is now an absolute path ending with
31952         G_DIR_SEPARATOR.
31953
31954         * icall.c: modified get_location according to the above changes.
31955
31956         * object.c: init AppDomain.SetupInformation for the default domain after
31957         we have the entry assembly.
31958
31959         * domain.c: when unloading a domain, setup = NULL.
31960
31961 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
31962
31963         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
31964
31965 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
31966
31967         * object.h, object.c: introduced mono_object_get_virtual_method ()
31968         to lookup the method invoked on an object when a callvirt is done on
31969         a method.
31970         * icall.c: make MethodInfo::Invoke() always do a virtual call.
31971
31972 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31973
31974         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
31975         current domain when loaded an assembly and failed to load it.
31976
31977         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
31978
31979 2002-10-31  Dick Porter  <dick@ximian.com>
31980
31981         * icall.c: 
31982         * file-io.h: 
31983         * file-io.c: Return the error status in a parameter, as the
31984         GetLastError() value has long since been blown away if we try and
31985         look it up in a subsequent internal call invocation.  Delete the
31986         GetLastError() internal call, because it's useless.
31987
31988 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
31989
31990         * class.[ch]: added cast_class to fix bug 29517
31991
31992 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
31993
31994         * marshal.c: create valid IL code in the filter clause:
31995         the new JIT is less forgiving:-)
31996
31997 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31998
31999         * icall.c: removed get_property internal call.
32000
32001 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
32002
32003         * appdomain.h domain.c: Added an ID to appdomains.
32004         
32005         * threads.c threads.h icall.c: Implement icall
32006         Thread:GetDomainID(), and remove unused icall 
32007         CurrentThreadDomain_internal.
32008
32009 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32010
32011         * icall.c: Don't recurse through the base types in GetConstructor.
32012         Fixes bug #32063. 
32013
32014 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
32015
32016         * mempool.h, mempool.c: added mono_mempool_empty() and
32017         mono_mempool_stats().
32018
32019 2002-10-23  Dick Porter  <dick@ximian.com>
32020
32021         * file-io.c: 
32022         * file-io.h: 
32023         * icall.c: Added MonoIO.GetFileType internal call
32024
32025 2002-10-17  Dick Porter  <dick@ximian.com>
32026
32027         * appdomain.c (mono_runtime_cleanup): Don't signal the async
32028         delegate semaphore before waiting for all threads to finish,
32029         because new threads can also call async delegates.  Fixes bug
32030         32004.
32031
32032         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
32033         of 3 seconds, in case another async job is queued.  (This part is
32034         needed because the bug fix reintroduced the 3s exit lag.)  This
32035         makes the mono_runtime_shutdown flag superfluous.
32036
32037 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
32038
32039         * reflection.c: include ehader size in method section headers.
32040         Really check for suplicated modules entries.
32041
32042 2002-10-17  Martin Baulig  <martin@gnome.org>
32043
32044         * debug-mono-symfile.c: Added back support for locals.
32045
32046 2002-10-14  Martin Baulig  <martin@gnome.org>
32047
32048         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
32049         MONO_TYPE_VOID.
32050
32051 2002-10-14  Martin Baulig  <martin@gnome.org>
32052
32053         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
32054         mono_class_get() instead of looking in the class cache. 
32055
32056 2002-10-13  Martin Baulig  <martin@gnome.org>
32057
32058         * debug-mono-symfile.c: Set version number to 28, include the
32059         signature in method names.
32060
32061 2002-10-13  Martin Baulig  <martin@gnome.org>
32062
32063         * debug-mono-symfile.h: Set version number to 27.
32064
32065 2002-10-11  Martin Baulig  <martin@gnome.org>
32066
32067         * gc.c: Don't register/unregister NULL pointers as disappearing links.
32068
32069 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
32070
32071         * metadata.c, metadata.h: added helper function to allocate signatures.
32072
32073 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32074
32075         * icall.c: added internal call to get the location of machine.config.
32076
32077 2002-10-08  Martin Baulig  <martin@gnome.org>
32078
32079         * debug-mono-symfile.c: Ignore classes with a pending init for the
32080         moment.
32081
32082 2002-10-03  Dick Porter  <dick@ximian.com>
32083
32084         * threads.c: Freebsd pthread_t is a pointer
32085
32086 2002-10-03  Dick Porter  <dick@ximian.com>
32087
32088         * socket-io.c: Implemented GetHostName_internal
32089
32090 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32091
32092         * mono-config.c:
32093         (mono_config_parse_file): don't leak the text.
32094
32095 2002-10-02  Martin Baulig  <martin@gnome.org>
32096
32097         * debug-mono-symfile.c: Added support for methods.
32098
32099 2002-10-01  Martin Baulig  <martin@gnome.org>
32100
32101         * debug-mono-symfile.c: Don't emit methods and line numbers for
32102         the dynamic symbol file, just write the type table.  We can easily
32103         have an external helper program which creates a symbol file for an
32104         IL file.        
32105
32106 2002-10-01  Dick Porter  <dick@ximian.com>
32107
32108         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
32109         Only add the handle to the cleanup array when we're about to
32110         launch the thread.  Bug 31425 deadlocked when the test was run on
32111         mono under w32.
32112
32113 2002-10-01  Martin Baulig  <martin@gnome.org>
32114
32115         * debug-mono-symfile.c: Added support for properties.
32116
32117 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
32118
32119         * reflection.c: unaligned store fix from Mark Crichton
32120         <crichton@gimp.org>.
32121
32122 2002-09-27  Martin Baulig  <martin@gnome.org>
32123
32124         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
32125         New interncall.
32126
32127 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
32128
32129         * assembly.h, assembly.c: use a sane API to hook into the assembly
32130         loading process instead of a useless special-purpouse hack
32131         (ngen needs a hook, too, for example).
32132
32133 2002-09-27  Dick Porter  <dick@ximian.com>
32134
32135         * threads.c (mono_thread_init): Call GetCurrentProcess() so
32136         io-layer can set up some process handle info.  Not needed on w32,
32137         but doesn't hurt either.
32138
32139         * process.c: Pass the program name in the second parameter to
32140         CreateProcess, so the path is searched.  Include the working
32141         directory. Implemented process name, process enumeration, and some
32142         process detail internal calls.
32143         
32144         * icall.c: Added internal calls for process lookup, and some
32145         process details
32146
32147 2002-09-26  Martin Baulig  <martin@gnome.org>
32148
32149         * assembly.c (mono_install_open_assembly_hook): New global
32150         function to install a function to be invoked each time a new
32151         assembly is loaded.
32152         (mono_assembly_open): Run this callback function if set.
32153
32154         * debug-mono-symfile.c: Put back line numbers for the dynamic
32155         symbol file and also record the .il file as source file.  This
32156         allows us to install the temporary symbol file as `file.dbg' just
32157         like a compiler-generated one.
32158
32159 2002-09-26  Nick Zigarovich <nick@chemlab.org>
32160
32161         * Corrected typo in gc.c (BOHEM vs BOEHM).
32162
32163 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32164
32165         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
32166         GetProperties. Also avoid calling g_slist_length in GetProperties and
32167         GetMethods.
32168
32169 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
32170
32171         * reflection.c: avoid unaligned stores (bug spotted by
32172         Mark Crichton  <crichton@gimp.org>).
32173
32174 2002-09-25  Martin Baulig  <martin@gnome.org>
32175
32176         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
32177         instead of guint64 for addresses and added prologue/epilogue info.
32178
32179 2002-09-25  Martin Baulig  <martin@gnome.org>
32180
32181         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
32182         store line number info.  For the dynamic symbol file, we only need
32183         to provide the JIT generated dynamic line number info for the dynamic
32184         symbol file.
32185
32186 2002-09-25  Martin Baulig  <martin@gnome.org>
32187
32188         * debug-mono-symfile.h: Incremented version number.
32189
32190 2002-09-24  Martin Baulig  <martin@gnome.org>
32191
32192         * class.c (mono_debugger_class_init_func): New global function
32193         pointer variable.
32194         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
32195         call it.
32196
32197         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
32198         function.  This is called via the mono_debugger_class_init_func
32199         hook to add all types to the dynamic type table.
32200         (ves_icall_MonoDebugger_GetType): New interncall to get a class
32201         from its metadata token.
32202
32203         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
32204         New interncall for the debugger.
32205
32206 2002-09-24  Nick Drochak <ndrochak@gol.com>
32207
32208         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
32209         before using it in case it is null.
32210         
32211 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
32212
32213         * metadata.c: allow custom modifiers in local var signatures
32214         (bug spotted by Zoltan Varga).
32215
32216 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
32217
32218         * class.c: deal with the <Module> class that may have a NULL vtable.
32219         Eliminate warnings.
32220
32221 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
32222
32223         * image.c, image.h: more strong name helpers.
32224         * monosn.c: more work: convert pem keys to cryptoapi format.
32225
32226 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
32227
32228         * string-icalls.c: speedup IndexOf.
32229
32230 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
32231
32232         * icall.c: updates from Zoltan.2.Varga@nokia.com.
32233
32234 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
32235
32236         * icall.c: cleanup: use mono_object_domain ().
32237
32238 2002-09-23  Martin Baulig  <martin@gnome.org>
32239
32240         * debug-mono-symfile.c: Improved type support.
32241
32242 2002-09-22  Martin Baulig  <martin@gnome.org>
32243
32244         * debug-mono-symfile.c: Added support for reference types and strings.
32245
32246 2002-09-22  Martin Baulig  <martin@gnome.org>
32247
32248         * debug-mono-symfile.c: Started to work on the type table.
32249
32250 2002-09-21  Martin Baulig  <martin@gnome.org>
32251
32252         * debug-mono-symfile.c: Largely reworked the symbol table format.
32253         The symbol table is now incrementally updated each time a new
32254         method is added.  We're now also using our own magic and version
32255         so that you don't need to recompile all your classes if the
32256         dynamic table changes.
32257         (mono_debug_update_mono_symbol_file): Removed.
32258         (mono_debug_symfile_add_method): New function to add a method.
32259
32260 2002-09-21  Martin Baulig  <martin@gnome.org>
32261
32262         * icall.c
32263         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
32264         New interncall.
32265
32266         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
32267         New interncall to get a method from its metadata token.
32268
32269 2002-09-21  Martin Baulig  <martin@gnome.org>
32270
32271         * debug-mono-symfile.c: Create type table.
32272
32273 2002-09-20  Martin Baulig  <martin@gnome.org>
32274
32275         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
32276
32277 2002-09-20  Martin Baulig  <martin@gnome.org>
32278
32279         * debug-mono-symfile.c: Provide information about params and locals.
32280
32281 2002-09-20  Martin Baulig  <martin@gnome.org>
32282
32283         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
32284         New interncall.
32285
32286         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
32287         interncall to get a method from its metadata token.
32288
32289 2002-09-20  Martin Baulig  <martin@gnome.org>
32290
32291         * debug-mono-symfile.c: Added a few checks for method->header
32292         being non-NULL.  This should never happen, but for the moment
32293         let's use a g_warning() rather than a g_assert().
32294
32295 2002-09-19  Mark Crichton  <crichton@gimp.org>
32296
32297         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
32298         even if support for it isn't present.  Added an #ifdef to fix this.
32299
32300         * socket-io.c: Added checks back for Solaris support.
32301
32302 2002-09-19  Martin Baulig  <martin@gnome.org>
32303
32304         * debug-mono-symfile.c (read_string, write_string): Reflect latest
32305         changes in the symbol file format.
32306
32307 2002-09-18  Martin Baulig  <martin@gnome.org>
32308
32309         * debug-mono-symfile.c: Set version number to 21.
32310
32311 2002-09-18  Dick Porter  <dick@ximian.com>
32312
32313         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
32314         on netbsd.  Fixes bug 30051.
32315
32316 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32317
32318         * reflection.c:
32319         (set_version_from_string): little fix.
32320
32321 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
32322
32323         * monosn.c, Makefile.am: added strong name utility.
32324         * reflection.h, reflection.c: implemented delayed signing,
32325         locale, version and hash id assembly attributes.
32326
32327 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
32328
32329         * loader.c, metadata.c: load param attributes in signatures.
32330
32331 2002-09-16  Martin Baulig  <martin@gnome.org>
32332
32333         * debug-mono-symfile.c: Added string table with all method names.
32334
32335 2002-09-14  Martin Baulig  <martin@gnome.org>
32336
32337         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
32338         fast method lookup.
32339
32340 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
32341
32342         * reflection.c: record the public key token of referenced assemblies.
32343
32344 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
32345
32346         * image.c, image.h: added functions to get the strong name and the
32347         public key of an assembly.
32348         * pedump.c: use them.
32349
32350 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
32351
32352         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
32353
32354 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
32355
32356         * marshal.c (mono_marshal_get_managed_wrapper): Added
32357         MONO_TYPE_BOOLEAN 
32358
32359 2002-09-11  Martin Baulig  <martin@gnome.org>
32360
32361         * gc.c: Call GC_unregister_disappearing_link() on all links when
32362         finalizing them, this is necessary to aviod a crash in boehm's
32363         finalize handler.
32364
32365 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
32366
32367         * gc.c: handle GetTarget for finalized objects spotted and fixed by
32368         nick@chemlab.org.
32369
32370 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
32371
32372         * icall.c: implemented MonoType::Module.
32373         * reflection.c, reflection.h: mono_module_get_object () from
32374         Tomi Pakarinen <tomi.pakarinen@welho.com>.
32375
32376 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
32377
32378         * icall.c: ignore overridden methods in GetMethods ().
32379         Fix for FieldInfo::SetValue().
32380         * object.c: handle float/double in runtime invoke.
32381
32382 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
32383
32384         * object.c: allow a constructor to be called again on an object.
32385
32386 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
32387
32388         * class.h, class.c: move field layout code to it's own function and
32389         export it. Get an interface id earlier. Move fields in MonoClass
32390         so they are more cache friendly and align the bitfields.
32391         * loader.c: temporary handle get_param_names() for a runtime method.
32392         * reflection.c, reflection.h: more code to handle runtime creation of
32393         types.
32394
32395 2002-09-09  Martin Baulig  <martin@gnome.org>
32396
32397         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
32398         signature with the pinvoke field being set for the actual call.
32399
32400 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
32401
32402         * icall.c: removed some unused icalls. Start of map of glib charsets
32403         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
32404
32405 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
32406
32407         * debug-helpers.c: break infinite loop (found and fixed by
32408         Holger Arnold <harnold@gmx.de>).
32409
32410 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
32411
32412         * icall.c: target may be null in create_delegate.
32413
32414 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
32415
32416         * marshal.c: handle a boolean return type.
32417
32418 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
32419
32420         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
32421
32422 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
32423
32424         * gc.c: fix weakreferences.
32425
32426 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
32427
32428         * icall.c: added icall to get default codepage.
32429
32430 2002-09-03  Dick Porter  <dick@ximian.com>
32431
32432         * threads.h: 
32433         * threads.c: Use MonoThread instead of MonoObject where
32434         apropriate.
32435
32436         Store running thread objects in a hash table, so that we have all
32437         the info to hand when waiting for them to finish
32438         (means we don't need OpenThread() any more, so mingw builds should
32439         be fully functional again.)
32440
32441         * verify.c:
32442         * object.h: Added thread ID to MonoThread
32443
32444 2002-09-03  Martin Baulig  <martin@gnome.org>
32445
32446         * icall.c (System.Reflection.Assembly::get_location): New interncall.
32447
32448 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32449
32450         * icall.c: fixed leak in get_temp_path. Thanks lupus.
32451
32452 2002-09-03  Martin Baulig  <martin@gnome.org>
32453
32454         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
32455         argument to store the end address of the disassembled instruction.
32456
32457         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
32458         here from debug-symfile.h.
32459         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
32460         JIT into this struct.
32461         (MonoSymbolFile): Added `char *image_file' field.
32462         (MonoDebugGetMethodFunc): Removed.
32463         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
32464         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
32465         (mono_debug_find_method): New method.
32466
32467         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
32468         create a full symbol file.
32469         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
32470         and static symbol files.
32471         (mono_debug_find_method): The symbol file keeps an internal method hash,
32472         call this to get a MonoDebugMethodInfo from a MonoMethod.
32473
32474         * debug-symfile.[ch]: Removed.
32475
32476 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
32477
32478         * image.c (do_mono_image_open): Remove linker version check.
32479
32480 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
32481
32482         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
32483         wrappers for instance methods.
32484         
32485 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32486
32487         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
32488
32489 2002-08-28  Dick Porter  <dick@ximian.com>
32490
32491         * Makefile.am: Export HOST_CC for w32 builds
32492
32493 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
32494
32495         * file-io.c process.c: MonoString are null terminated, no
32496         need for mono_string_to_utf16() anymore.
32497
32498 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
32499
32500         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
32501
32502 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
32503
32504         * icall.c, reflection.h: speedup System.MonoType.
32505
32506 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
32507
32508         * reflection.c: allow null as the value of a string argument in
32509         custom attributes constructors.
32510
32511 2002-08-27  Martin Baulig  <martin@gnome.org>
32512
32513         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
32514         `trampoline_address' field.
32515
32516 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
32517
32518         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
32519         check (fixes bug #29486) 
32520
32521 2002-08-27  Martin Baulig  <martin@gnome.org>
32522
32523         * debug-mono-symfile.c: Changed the file format in a way that allows us
32524         open it read-only and to use a specially malloced area for all the
32525         dynamic data.  We can now also generate a symbol file on-the-fly if we're
32526         debugging IL code and there is no MCS generated symbol file for it.
32527
32528 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
32529
32530         * object.c: added a define for a good string and array
32531         creation speedup (not enabled by default because we need to deal with
32532         the synch stuff).
32533
32534 2002-08-26  Martin Baulig  <martin@gnome.org>
32535
32536         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
32537         function to create a dynamic symbol file.  This is used by the
32538         debugger to create a symbol file for IL code on-the-fly.
32539
32540 2002-08-26  Martin Baulig  <martin@gnome.org>
32541
32542         * loader.c (mono_lookup_pinvoke_call): Include the error message
32543         from g_module_error() in the error message.
32544
32545 2002-08-24  Martin Baulig  <martin@gnome.org>
32546
32547         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
32548         function to update the symbol file.  The symbol file is mmap()ed
32549         writable, but private.  This allows us to install the symbol file
32550         together with the assembly.
32551
32552 2002-08-24  Martin Baulig  <martin@gnome.org>
32553
32554         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
32555         but they can read the new symbol file format which mcs is now creating.
32556
32557         * debug-symfile.c (mono_debug_find_source_location): Moved to
32558         debug-mono-symfile.c; this is now operating on the new symbol file.
32559
32560 2002-08-23  Martin Baulig  <martin@gnome.org>
32561
32562         * debug-helpers.c (mono_method_desc_from_method): New function to get
32563         a MonoMethodDesc from a MonoMethod.
32564
32565 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
32566
32567         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
32568         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
32569
32570 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
32571
32572         * string-icalls.[ch]: make helper methods static.
32573
32574 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32575
32576         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
32577         types to it and to SetValueInternal.
32578
32579         * object.c: Moved handle_enum label to its proper place. This was the
32580         f... bug! ;-)
32581
32582         This time i compiled mcs and gtk-sharp and they both work.
32583
32584 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32585
32586         * icall.c: reverted partially my previous patch until 
32587         object.c:set_value handles enums correcly.
32588
32589 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32590
32591         * icall.c:
32592         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
32593         (ves_icall_System_Environment_get_MachineName): removed warning when
32594         compiling under cygwin.
32595
32596 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
32597
32598         * object.c: fixed field_get_value() for reference types.
32599
32600 2002-08-22  Dick Porter  <dick@ximian.com>
32601
32602         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
32603         Don't free a buffer while it's still needed.  Patch from Jonathan
32604         Liger <Jonathan.liger@wanadoo.fr>
32605
32606 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
32607
32608         * icall.c (ves_icall_System_Environment_get_Platform): Add new
32609         internal call.
32610
32611 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
32612
32613         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
32614         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
32615
32616         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
32617         we call unmanaged code which throws exceptions.
32618
32619 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
32620
32621         * appdomain.h: added per-domain entry_assembly.
32622         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
32623         arguments.
32624         * icall.c: Assembly::GetEntryAssembly icall.
32625         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
32626         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
32627
32628 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
32629
32630         * appdomain.h, gc.c: added mono_domain_finalize ().
32631
32632 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32633
32634         * object.c:
32635         (mono_print_unhandled_exception): changed g_warning by g_printerr
32636         because g_log has a 1024 characters limit (yeah, i got a big stack
32637         trace). Don't print exception name, that should be in ToString 
32638         returned string.
32639
32640 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32641
32642         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
32643         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
32644
32645 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32646
32647         * object.c:
32648         (mono_print_unhandled_exception): after previous commit, i realized
32649         that MS calls ToString on the exception. I changed this function to
32650         do that. This way we get stack_trace for free.
32651
32652 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32653
32654         * object.c:
32655         (mono_print_unhandled_exception): invoke Message property instead of
32656         getting 'message' field from Exception. Don't allocate memory for
32657         'trace' and 'message' if not needed.
32658
32659 2002-08-18  Dick Porter  <dick@ximian.com>
32660
32661         * unicode.c: Fix asserts to match Encoder.cs checks
32662
32663 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
32664
32665         * marshal.c: fix unaligned store issue and a few wrong
32666         opcode argument types.
32667
32668 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32669
32670         * icall.c: added GetUninitializedObjectInternal internal call.
32671
32672 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
32673
32674         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
32675         to the right domain.
32676
32677 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
32678
32679         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
32680
32681         * class.c (class_compute_field_layout): set blittable to false for Strings
32682
32683         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
32684
32685 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
32686
32687         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
32688         first chunk of code to create types at runtime. Code to
32689         handle ReflectedType/DeclaringType. Make reflection handles
32690         domain specific.
32691
32692 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
32693
32694         * class.c: set correct name in arrays.
32695
32696 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
32697
32698         * appdomain.c (mono_domain_transfer_object): make it work with
32699         valuetypes. bug fixes.
32700
32701 2002-08-12  Dick Porter  <dick@ximian.com>
32702
32703         * object.h: Rename some parameters to avoid c++ keywords (Patch
32704         from Joseph Wenninger <kde@jowenn.at>)
32705
32706 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
32707
32708         * icall.c: added icall to implement Assembly.GetFile*.
32709
32710 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
32711
32712         * reflection.h, reflection.c: code to embed managed resources.
32713
32714 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
32715
32716         * class.c: move all the type size stuff into
32717         class_compute_field_layout().
32718
32719 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
32720
32721         * class.c: ensure enums have always the correct instance size.
32722         * unicode.c: remove wrong assert.
32723
32724 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
32725
32726         * assembly.c: fix mem corruption issue.
32727         * image.h, image.c: added mono_image_get_resource () to access
32728         managed resources.
32729         * icall.c: implemented Assembly.EntryPoint property and some
32730         Managed Resources related internalcalls.
32731
32732
32733 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
32734
32735         * image.c, image.h: impemented mono_image_get_entry_point ().
32736         * appdomain.c: use mono_image_get_entry_point.
32737
32738 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
32739
32740         * reflection.c: support the object type argument when loading
32741         custom attributes.
32742
32743 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
32744
32745         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
32746         String as return type.
32747
32748 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
32749
32750         * reflection.c: fix encoding of named args for custom attrs to match
32751         the ms implementation. Read them back when instantiating custom
32752         attributes.
32753
32754 2002-08-02  Radek Doulik  <rodo@ximian.com>
32755
32756         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
32757         by Dietmar as quick fix
32758         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
32759         16 as stack size, used on more places as quick fix before Dietmar
32760         will fix it properly
32761
32762 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
32763
32764         * object.h, object.c: added accessors for fields and properties.
32765
32766 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
32767
32768         * class.c, class.h: made mono_class_get_field_from_name ()
32769         loop on parent types.
32770         Added mono_class_get_property_from_name ().
32771
32772 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
32773
32774         * class.c, class.h: move the code to setup the type vtable in its own
32775         function so that it can be reused also for types created at runtime.
32776         Eliminate the "class" identifier from the header file.
32777         * reflection.c: setup the vtable for enums so that we can create
32778         objects for use in SetConstant ().
32779
32780 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
32781
32782         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
32783         instead of the delegate itself as this pointer (bug #28383)
32784
32785 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
32786
32787         * marshal.c (mono_marshal_get_managed_wrapper): added return type
32788         conversions.
32789
32790 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
32791
32792         * loader.c: don't set the pinvoke bit on icalls.
32793
32794 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
32795
32796         * debug-helpers.c (mono_method_full_name): only print a number to
32797         indicate wrapper type (so that the output is more readable in traces).
32798
32799 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
32800
32801         * class.c (mono_class_init): include method override patch from Paolo
32802
32803 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
32804
32805         * icall.c: fixed GetTypeCode().
32806
32807 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
32808
32809         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
32810         use real delegate invoke function to make it work with multicast
32811         delegates (fix bug# 28291).
32812
32813 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
32814
32815         * object.c: load constant strings.
32816
32817 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
32818
32819         * reflection.c: no magic numbers.
32820         * tabledefs.h: security action enum.
32821
32822 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
32823
32824         * assembly.c: fix possible memory corruption.
32825
32826 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
32827
32828         * reflection.h, reflection.c: added support for linking resources.
32829         * verify.c: check we have an updated corlib.
32830
32831 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
32832
32833         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
32834         string arrays.
32835         (mono_marshal_string_array): null terminate unmanaged string arrays.
32836         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
32837
32838 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
32839
32840         * icall.c: Type.GetType () can now return also types from the
32841         calling assembly.
32842
32843 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
32844
32845         * loader.h, loader.c: stack walking support.
32846         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
32847         GetCallingAssembly.
32848
32849 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
32850
32851         * marshal.c: added optimisations for blittable types 
32852
32853         * class.c (mono_array_class_get): do not set blittable attribute on arrays
32854         (mono_class_setup_mono_type): set blittable attribute for single
32855         and double.
32856
32857         * marshal.c (mono_string_utf8_to_builder): impl.
32858         (mono_string_builder_to_utf8): impl.
32859         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
32860
32861 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
32862
32863         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
32864         (mono_marshal_get_managed_wrapper): impl. byref types
32865
32866 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32867
32868         * icall.c:
32869         (search_method): don't display debug message. 
32870
32871 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
32872
32873         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
32874
32875 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
32876
32877         * appdomain.c: set the missing filename when throwing exception.
32878
32879 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
32880
32881         * metadata.c (mono_type_size): code cleanup
32882         (mono_type_stack_size): removed some test code
32883
32884 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
32885
32886         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
32887         mono_get_exception_file_not_found now.
32888
32889         * exception.c (mono_exception_from_name_two_strings): New version
32890         that will call a constructor with two string arguments. 
32891         (mono_get_exception_file_not_found): New helper routine, used to
32892         report file-not-found errors.
32893
32894 2002-07-20  Dick Porter  <dick@ximian.com>
32895
32896         * process.h:
32897         * process.c: Pass file handles to CreateProcess
32898         
32899         * icall.c:
32900         * file-io.h:
32901         * file-io.c: Implemented CreatePipe
32902
32903 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
32904
32905         * metadata.c (mono_get_param_info): set alignment for value types
32906
32907 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
32908
32909         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
32910         Constify mono_domain_assembly_open().
32911         * loader.c: handle null namespace in icalls.
32912
32913 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
32914
32915         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
32916         (emit_str_to_ptr_conv): marshal object as structs
32917
32918         * metadata.c (mono_type_to_unmanaged): marshal object as structs
32919
32920         * marshal.c (mono_marshal_get_runtime_invoke): support value types
32921
32922 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
32923
32924         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
32925         (mono_marshal_get_native_wrapper): we an now return value types
32926
32927 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
32928
32929         * verify.c: more checks implemented.
32930
32931 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
32932
32933         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
32934         (fix bug #27695)
32935         (mono_marshal_get_native_wrapper): allow byref arguments
32936         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
32937         impl. PtrToStringXXX methods
32938         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
32939         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
32940         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
32941         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
32942         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
32943
32944 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
32945
32946         * reflection.c: fix buglet in parsing an assembly name.
32947
32948 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
32949
32950         * marshal.c (emit_ptr_to_str_conv): first impl.
32951
32952 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
32953
32954         * object.c, class.h: cache the vtable in the class as suggested by
32955         vargaz@freemail.hu (Zoltan Varga).
32956
32957 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
32958
32959         * class.h, loader.c: added mono_field_from_token().
32960         * verify.c: first cut of type checking code.
32961
32962 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
32963
32964         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
32965
32966 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
32967
32968         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
32969         (fix bug #27782)
32970         (mono_marshal_get_remoting_invoke): impl.
32971         (mono_delegate_begin_invoke): impl.
32972         (mono_mb_emit_save_args): impl.
32973         (mono_delegate_end_invoke): impl.
32974         (mono_marshal_get_delegate_begin_invoke):
32975         (mono_marshal_get_delegate_end_invoke):
32976         (mono_marshal_get_delegate_invoke): generate a special name for
32977         those methods (including the signature) and associate them whith
32978         the delegate class. 
32979
32980 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
32981
32982         * reflection.[ch]: 
32983         (mono_reflection_type_from_name): now it has a MonoImage parameter
32984         which is used as the default image to search the type in. If the image
32985         is NULL or getting the type from it fails, it defaults to corlib.
32986
32987         * icall.c: changed 1 call to mono_reflection_type_from_name to match
32988         new parameter.
32989
32990 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
32991
32992         * reflection.c: update the parameter table index.
32993
32994 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
32995
32996         * domain.c: don't include the mark byte in the string hash.
32997
32998 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
32999
33000         * icall.cs: icall for Type.GetTypeCode ().
33001         * verify: a couple of fixes and disabled local initialization checks.
33002
33003 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
33004
33005         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
33006
33007         * debug-helpers.c (mono_method_full_name): print the type of the
33008         runtime wrapper
33009
33010         * metadata.c (mono_signature_hash): a hash function for signatures
33011         (mono_signature_hash): better hash algorithm
33012
33013         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
33014
33015         * debug-helpers.c (mono_method_full_name): this can now generate
33016         method names with signatures
33017
33018         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
33019         method dont have this pointers.
33020
33021 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
33022
33023         * reflection.c: fixup typebuilder tokens.
33024         * image.c: fix buglet.
33025         * marshal.h: remove whitespace.
33026         * metadata.h, metadata.c: reinstate code that was removed.
33027         * verify.c: handle catch directives and fix another couple of bugs.
33028
33029 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
33030
33031         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
33032         (mono_marshal_get_native_wrapper): make it comp. with the old code
33033         (mono_marshal_get_native_wrapper): support boolean
33034         (mono_marshal_get_managed_wrapper): support more types
33035
33036 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
33037
33038         * class.c (class_compute_field_layout): compute class->blittable attribute.
33039
33040 2002-07-09  Dick Porter  <dick@ximian.com>
33041
33042         * threads.c: Make the thread cleaning up cope with threads that
33043         call ExitThread()
33044
33045 2002-07-08  Radek Doulik  <rodo@ximian.com>
33046
33047         * reflection.c (method_encode_code): use non-translated values to
33048         compute finally_start, this fixes exception handling on ppc, yay!
33049
33050         * decimal.h (struct signscale): fix endianess
33051
33052 2002-07-07  Radek Doulik  <rodo@ximian.com>
33053
33054         * reflection.c: swap box_val and not val
33055
33056 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
33057
33058         * reflection.c, reflection.h: handle full assembly info in type name.
33059         Handle Type arguments when loading custom attributes.
33060         * icall.c: updated to use new mono_reflection_type_from_name () method.
33061
33062 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33063
33064         * loader.c:
33065         (method_from_memberref): also print assembly name when method not found.
33066
33067 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33068
33069         * icall.c:
33070         (ves_icall_TypeGetProperties): fixed bug #27473. 
33071
33072 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33073
33074         * reflection.c: display image name and token when cannot find the
33075         .ctor for an attribute.
33076
33077 2002-07-05  Martin Baulig  <martin@gnome.org>
33078
33079         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
33080
33081 2002-07-04  Dick Porter  <dick@ximian.com>
33082
33083         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
33084         compile on mingw.  This will cause mingw builds to not wait for
33085         subthreads to terminate after the main thread does.  I've lodged a
33086         bug with the mingw developers for them to wrap OpenThread().
33087
33088 2002-07-03  Dick Porter  <dick@ximian.com>
33089
33090         * threads.c: Store thread IDs instead of handles, because
33091         GetCurrentThread() returns a pseudohandle and therefore stores
33092         useless values.  mono_thread_cleanup() continues checking the
33093         array of threads until it is empty, to cope with subthreads
33094         spawning new threads after the main thread has finished.
33095
33096         * profiler.h:
33097         * profiler.c:
33098         * profiler-private.h: Pass the thread ID to thread profiler
33099         functions, instead of a handle
33100
33101 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
33102
33103         * verify.c: fixes to make it more usable.
33104         * pedump.c: added --verify code to verify IL code in an assembly.
33105
33106 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
33107
33108         * reflection.c: turn errors into warnings to allow compiling corlib.
33109
33110 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
33111
33112         * reflection.c: add special cases to compile corlib.
33113
33114 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
33115
33116         * reflection.c: handle properties with only a set method.
33117
33118 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
33119
33120         * opcodes.h: add enum with opcodes in opval order.
33121
33122 2002-07-01  Dick Porter  <dick@ximian.com>
33123         
33124         * object.h:
33125         * object.c (mono_runtime_run_main): Removed unneeded argument
33126
33127 2002-06-28  Martin Baulig  <martin@gnome.org>
33128
33129         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
33130
33131 2002-06-27  Dick Porter  <dick@ximian.com>
33132
33133         * threads.c: Store the handle in both the parent thread and in the
33134         subthread, to minimise the time between starting a new thread and
33135         storing its ID.
33136
33137 2002-06-26  Dick Porter  <dick@ximian.com>
33138
33139         * appdomain.c (mono_runtime_cleanup): Close the socket library
33140         after all the threads have finished, not before
33141
33142 2002-06-26  Martin Baulig  <martin@gnome.org>
33143
33144         * debug-symfile.c (mono_debug_find_source_location): Added
33145         `guint32 *line_number' argument.  If it's not NULL, store the line number
33146         there and return the file name without the line number.
33147
33148 2002-06-25  Dick Porter  <dick@ximian.com>
33149
33150         * icall.c:
33151         * process.h:
33152         * process.c: Process forking and other support functions
33153
33154 2002-06-25  Dick Porter  <dick@ximian.com>
33155
33156         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
33157         things dont happen when the image is closed.
33158         (mono_image_lookup_resource): Walk the resource section looking
33159         for a particular entry
33160
33161         * cil-coff.h: PE resource section decoding
33162
33163 2002-06-25  Dick Porter  <dick@ximian.com>
33164         
33165         * assembly.h:
33166         * assembly.c: 
33167         (mono_assembly_foreach): Accessor functions to walk the list of
33168         loaded assemblies
33169         (mono_assembly_set_main):
33170         (mono_assembly_get_main): Process methods need to know which
33171         assembly is the "main" one
33172
33173         * object.c (mono_runtime_run_main): Record the main assembly
33174
33175         * debug-helpers.c: Fix typo
33176
33177 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
33178
33179         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
33180         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
33181
33182 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
33183
33184         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
33185
33186 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
33187
33188         * image.c (do_mono_image_open): Initialize reference count,
33189         otherwise we leak the MonoImage.
33190
33191 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
33192
33193         * reflection.c: small tweak to handle self-hosting.
33194
33195 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
33196
33197         * reflection.c: fix type name parse code.
33198
33199 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
33200
33201         * reflection.c: break out of the loop.
33202         * image.c: special case corlib.
33203
33204 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
33205
33206         * reflection.c: add all the custom attrs at the end to ensure the
33207         ctors have been properly initialized when the attributes are defined
33208         in the current assembly.
33209
33210 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
33211
33212         * reflection.c: handle correctly multiple-nested types.
33213
33214 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
33215
33216         * row-indexes.h: fix typos.
33217         * reflection.c: adjust for typos and fix method_def_or_ref
33218         encoding in MethodImpl table.
33219
33220 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
33221
33222         * reflection.c: fix entry point patching (thanks Serge!).
33223
33224 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
33225
33226         * verify.c: add check for System.Exception
33227
33228 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
33229
33230         * image.c, class.c: minifix for code just c&p'ed.
33231         * reflection.c: warning fix.
33232         * object.h, loader.h, domain.c: load also StringBuilder.
33233
33234 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
33235
33236         * marshal.h, marshal.c: some support code to handle complex marshaling.
33237
33238 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
33239
33240         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
33241         Better signatures with vtable error dump.
33242
33243 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
33244
33245         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
33246
33247 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
33248
33249         * icall.c (ves_icall_Type_GetField): impl.
33250
33251 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
33252
33253         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
33254         to retrieve a marshal description blob for a field or param.
33255
33256 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
33257
33258         * reflection.h, reflection.c: change order of nested type emission
33259         to avoid table corruption. The NestedTypes table is sorted.
33260         * icall.c: change order of GetConstructor results to workaround mcs bug.
33261
33262 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
33263
33264         * reflection.h, reflection.c: handle field and param marshal
33265         information.
33266
33267 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
33268
33269         * icall.c, marshal.c marshal.h: more Marshal class implementation.
33270
33271 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
33272
33273         * reflection.c: fix call convention.
33274
33275 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
33276
33277         * reflection.h, reflection.c: mono_image_get_memberref_token()
33278         takes a type instead of a class, now. Added
33279         mono_image_get_array_token() to create tokens for the special
33280         multi-dim array methods.
33281
33282 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
33283
33284         * assembly.c: handle modules (no assembly table). Split
33285         loading references in its own function.
33286         * class.c: handle moduleref resolution scope.
33287         * image.c, image.h: cache module name in image.
33288
33289 2002-06-07  Martin Baulig  <martin@gnome.org>
33290
33291         * reflection.c (mono_image_get_type_info): Only add a class layout entry
33292         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
33293
33294 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
33295
33296         * icall.c: more signature fixes that used uint instead of int.
33297
33298 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
33299
33300         * reflection.c: fixed signature of field refs.
33301
33302 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
33303
33304         * class.c, reflection.c: handle typerefs of nested types
33305         (both on read and when writing files).
33306
33307 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
33308
33309         * icall.c: fix method signatures that tried to workaround the previous
33310         typo, d'oh!
33311
33312 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
33313
33314         * debug-helpers.c: fix typo.
33315
33316 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
33317
33318         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
33319         rewrote the PE/COFF writing code (our programs are understood by the
33320         ms runtime, now).
33321
33322 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
33323
33324         * gc.c, gc.h, icall.c: weakreference support.
33325
33326 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
33327
33328         * Makefile.am, mono-config.c: use $(sysconfdir).
33329
33330 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
33331
33332         * icall.c: changed default precision of Double.ToString() to 15.
33333         Fixed memory leak. Unified with Single.ToString.
33334
33335 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
33336
33337         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
33338
33339 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
33340
33341         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
33342         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
33343         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
33344         and myself.
33345
33346 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
33347
33348         * debug-symfile.c, sysmath.c: yet more compilation fixes.
33349
33350 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
33351
33352         * reflection.c, socket-io.c: more compilation fixes.
33353
33354 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
33355
33356         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
33357         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
33358         unicode.c: warning and compiler compatibility fixes.
33359
33360 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
33361
33362         * class.h, metadata.c: fixed warnings/compilation errors.
33363
33364 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
33365
33366         * Makefile.am, mono-config.c, mono-config.h: configuration file
33367         support routines.
33368         * loader.c, loader.h: make Dll mapping configurable at runtime in the
33369         config file. Export methods to insert and lookup mappings.
33370
33371 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
33372
33373         * reflection.c: handle types and boxed objects in custom attr
33374         constructors.
33375
33376 2002-05-30  Martin Baulig  <martin@gnome.org>
33377
33378         * debug-symfile.c
33379         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
33380
33381 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
33382
33383         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
33384         to lookup the implmap row for a P/Invoke method.
33385         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
33386         P/Invoke method from the runtime on an as needed basis.
33387
33388 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
33389
33390         * metadata.c (mono_metadata_parse_signature): impl.
33391
33392 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
33393
33394         * class.c: handle .pack directive.
33395
33396 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
33397
33398         * object.c: initialize static fields with RVA data.
33399
33400 2002-05-25  Martin Baulig  <martin@gnome.org>
33401
33402         * debug-symfile.c
33403         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
33404
33405 2002-05-24  Martin Baulig  <martin@gnome.org>
33406
33407         * debug-symfile.c
33408         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
33409         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
33410         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
33411
33412 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
33413
33414         * object.c: special case string ctros in invoke.
33415         * gc.c: silly whitespace changes.
33416
33417 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
33418
33419         * threadpool.[ch]: impl. a threadpool that can
33420         be used by mint and mono.
33421
33422 2002-05-22  Martin Baulig  <martin@gnome.org>
33423
33424         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
33425         The first argument is now a `MonoReflectionModuleBuilder *', the return
33426         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
33427         `methods' field to get the method builder.  The `token' argument is the
33428         unfixed token.
33429
33430         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
33431         invalid characters instead of g_assert_not_reached()ing.  This seems
33432         to be the behaviour of mscorlib.
33433
33434 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
33435
33436         * object.c (mono_runtime_invoke_array): applied patch from Rachel
33437         Hestilow to fix bug #25104
33438
33439 2002-05-21  Martin Baulig  <martin@gnome.org>
33440
33441         * debug-symfile.c (mono_debug_find_source_location): New function.
33442         Looks up an IL offset in the line number table and returns the source
33443         location as a string.
33444
33445 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33446
33447         * icall.c:
33448         (mono_double_ToStringImpl): changed %f by %g until we have something
33449         better.
33450
33451 2002-05-21  Nick Drochak  <ndrochak@gol.com>
33452
33453         * icall.c : Use different name for Math.Pow's icall.  Needed to check
33454         parameters first in C#.
33455
33456 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
33457
33458         * icall.c, reflection.h: added icall to get info about an event.
33459
33460 2002-05-20  Radek Doulik  <rodo@ximian.com>
33461
33462         * object.c (mono_value_box): don't use memcpy for boxing on BIG
33463         endian
33464         (mono_value_box): don't use memcpy for small sizes on
33465         architectures with unaligned access
33466
33467 2002-05-20  Martin Baulig  <martin@gnome.org>
33468
33469         * reflection.c (mono_reflection_setup_internal_class): Don't crash
33470         if `tb->parent == NULL'.
33471         (mono_reflection_create_internal_class): New function.  This is
33472         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
33473         for enum types.
33474
33475         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
33476         New interncall.
33477
33478 2002-05-19  Martin Baulig  <martin@gnome.org>
33479
33480         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
33481         argument to get the length, don't default to the array length.
33482
33483 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
33484
33485         * assembly.c (mono_assembly_setrootdir): New function used to
33486         override the MONO_ASSEMBLIES directory.
33487
33488 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
33489
33490         * icall.c: ValueType_GetHashCode() initialize local var.
33491
33492 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
33493
33494         * reflection.c: sort custom attributes table.
33495
33496 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
33497
33498         * reflection.c: support named args in custom attributes (write support).
33499
33500 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
33501
33502         * reflection.c: fix finally position calculation.
33503
33504 2002-05-15  Radek Doulik  <rodo@ximian.com>
33505
33506         * reflection.c: fixed endianess at many places
33507
33508         * icall.c (ves_icall_InitializeArray): comment out debug msg
33509
33510 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
33511
33512         * object.c (mono_unhandled_exception): new function to handle
33513         unhandled exceptions.
33514         (mono_unhandled_exception): call the UnhandledException event.
33515         (mono_runtime_delegate_invoke): impl.
33516
33517 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
33518
33519         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
33520         returns the RVA, not the direct pointer to the data. Handle the case
33521         when the class size is fixed.
33522
33523 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
33524
33525         * reflection.c: fix some endianess issues.
33526
33527 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
33528
33529         * object.c (mono_runtime_invoke): is now able to catch exceptions.
33530
33531         * threads.c (mono_thread_init): added a callback which is invoked
33532         at thread start.
33533
33534 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
33535         
33536         * icall.c: make GetHashCode return non-negative values.
33537
33538 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
33539
33540         * object.c, icall.c, gc.c: revert to address-based hashcode.
33541
33542 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
33543
33544         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
33545
33546 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
33547
33548         * icall.c, class.c: special case <Module>.
33549
33550 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
33551
33552         * icall.c: fix bug in GetNow().
33553
33554 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
33555
33556         * object.c (mono_runtime_class_init): make sure that we call all
33557         static class constructors.
33558
33559 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
33560
33561         * reflection.c: sort methodsemantics table.
33562
33563 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
33564
33565         * reflection.h, reflection.c: honour init locals setting.
33566
33567 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
33568
33569         * icall.c: copied Double ToStringImpl for Single ToStringImpl
33570
33571 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
33572
33573         * reflection.c: support ContructorBuilders in attribute blob creation.
33574
33575 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
33576
33577         * reflection.c: some changes to build a binary that can be run
33578         directly in windows.
33579
33580 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
33581
33582         * loader.c: print a big message when an icall can't be found.
33583
33584 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33585
33586         * string-icalls.c: fix bug 24248.
33587
33588 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
33589
33590         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
33591         icall.c, reflection.h: separate assembly loading by pathname and by
33592         assembly name. Use the MONO_PATH env var to search for assemblies.
33593
33594 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
33595
33596         * assembly.c, image.h: add some support for assemblies
33597         with multiple modules.
33598         * class.c, class.h: export mono_class_from_typeref().
33599         * loader.c: remove duplicated code and use mono_class_from_typeref(),
33600         instead.
33601
33602 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
33603
33604         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
33605         documentation says (the ECMA one is correct).
33606
33607 2002-05-02  Dick Porter  <dick@ximian.com>
33608
33609         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
33610         Don't name the synchronisation mutex.
33611
33612 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
33613
33614         * rand.c
33615         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
33616         Make the prototypes match.
33617         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
33618         Same.
33619
33620         * icall.c
33621         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
33622         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
33623         all systems have tm.tm_zone, so use strftime() with %Z to print
33624         the timezone abreviation into a temp string.
33625
33626         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
33627         rather than mono_array_addr() on a MonoString on Big Endian
33628         machines.
33629
33630 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
33631
33632         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
33633         fix bug 24041
33634
33635 2002-04-30  Dick Porter  <dick@ximian.com>
33636
33637         * socket-io.c: Cope with SOCKET being an integer rather than a
33638         pointer now.
33639
33640         * threads.c: Added Thread_free_internal, to deal with thread
33641         handle cleanup.  Moved calls to handle_store() and handle_remove()
33642         to start_wrapper(), so each can only be called once.  Allocate
33643         synchronisation blocks with GC_malloc(), and use GC finalisation
33644         to close the handles.
33645
33646         * icall.c: added System.Threading.Thread::Thread_free_internal
33647
33648 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
33649
33650         * icall.c: support Environment.Exit, CommandLineArgs().
33651
33652 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
33653
33654         * object.c, object.h: added mono_runtime_run_main () and
33655         mono_runtime_get_main_args () for use in System.Environment.
33656
33657 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
33658
33659         * gc.c: fix thinko, enable actual finalization since the jit is now
33660         fixed.
33661
33662 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
33663
33664         * gc.c, object.c: take into account that an object may be offset wrt the address
33665         returned by GC_malloc().
33666
33667 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
33668
33669         * image.c: handle files without entries in the assembly table (modules).
33670
33671 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
33672
33673         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
33674         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
33675         allowed to be null when it's System.Object class setup.
33676
33677 2002-04-27  Martin Baulig  <martin@gnome.org>
33678
33679         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
33680         if `tb->parent == NULL' rather than crashing.
33681
33682 2002-04-28  Nick Drochak  <ndrochak@gol.com>
33683
33684         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
33685         calling acos() where asin() should have been called.
33686
33687 2002-04-26  Martin Baulig  <martin@gnome.org>
33688
33689         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
33690         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
33691         there's a subdirectory called `System', but we don't want to read that
33692         subdirectory as an assembly.
33693
33694 2002-04-25  Martin Baulig  <martin@gnome.org>
33695
33696         * debug-symfile.c: Reflect latest MonoString changes.
33697
33698 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
33699
33700         * rand.c, rand.h: instance method icalls need to have an explicit
33701         this pointer as first argument in the C implementation.
33702
33703 2002-04-25  Nick Drochak <ndrochak@gol.com>
33704
33705         * icall.c: Fix typo in map for GetNonZeroBytes
33706
33707 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
33708
33709         * string-icalls.c : String does now passes unit tests without any 
33710         errors, the following changes has been made:
33711         
33712         Implemented replace methods.
33713         Renaming of methods to (try) follow the standard.
33714         Fixed compare ordinal
33715         Made all memory allocated directly to function instead of via icall function.
33716         Small performance fix in is_in_array function
33717                         
33718  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
33719
33720         c (mono_string_Internal_ctor_charp_int_int):
33721         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
33722         sindex < 0, throw ArgumentOutOfRangeException instead of
33723         ArgumentNullException.
33724
33725         Added new check for length == 0, however
33726         I need to make it return String.Empty from the C code.
33727         
33728         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
33729         that calculate the length for us here.
33730         
33731         (mono_string_Internal_ctor_sbytep_int_int): Replaced
33732         mono_string_new_utf16 with mono_string_new, since value is utf8.
33733
33734 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
33735
33736         * object.c: register the object for finalization if needed.
33737         Allocate one more char in the string for the terminating 0 char.
33738
33739 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
33740
33741         * class.c, class.h, image.c: check if a type implemenst a destructor.
33742         Use the proper key for array class lookups.
33743         * icall.c: register the icalls in the System.GC class.
33744         * gc.c, gc.h: GC-related functions and icalls.
33745
33746 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33747
33748         * icall.c:
33749         * socket-io.c:
33750         * unicode.c: free some strings gotten from mono_string_to_utf8 and
33751         changed a couple of free () by g_free ().
33752
33753         * decimal.c: one-liner in the comments for decimal2string ().
33754
33755 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
33756
33757         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
33758
33759 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
33760
33761         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
33762         * object.c (mono_runtime_invoke_array) : handle null in params
33763
33764 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
33765
33766         * string-icalls.c: fixed bug in split (one off bug)
33767
33768 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
33769
33770         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
33771         * icalls.c: added String::Equals as internal method
33772
33773 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
33774
33775         * threads.c: fixed bug in the double interlocked functions
33776
33777 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
33778
33779         * threads.c: implemented all of the new interlocked icalls.
33780         * string-icalls.c: fix a bug in insert.
33781         * icalls.c: added the icalls for interlocked, removed old string functions.
33782         
33783 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
33784
33785         * loader.c: fix off-by-one error when reading argument names.
33786
33787 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
33788
33789         * profiler.c: win32 counter implementation (untested).
33790         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
33791         (the latter needs testing and more complete impl. from win32 folks).
33792
33793 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
33794
33795         * object.c: mono_array_new_full workaround mono_array_class_get
33796         problem.
33797
33798 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
33799
33800         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
33801         * object.h (mono_string_chars): Changed casting type.
33802
33803 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
33804
33805         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
33806                            method signatures to use gunichar2 instead of gint16.
33807
33808 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
33809
33810         * object.h, object.c: domain-specific versions of mono_object_new and
33811         mono_array_new.
33812
33813 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
33814
33815         * object.c: changed String layout
33816
33817         * string-icalls.c (mono_string_Internal_ctor_chara): added
33818         internal string constructors.
33819
33820 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
33821
33822         * threads.c: pass 'this' to the thread start routine.
33823
33824 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33825
33826         * string-icalls.c: fix IndexOf and LastIndexOf. Now
33827         InternalCompareStr don't call twice mono_string_cmp_char for the last
33828         character. Improved performance in mono_string_cmp_char.
33829
33830 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
33831
33832         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
33833         code into its own library: libmonoruntime.
33834
33835 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
33836
33837         * object.h, object.c: changed array format so that szarrays do not
33838         require a bounds structure.
33839         * icall.c, appdomain.c: support for new szarray format.
33840
33841 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
33842
33843         * metadata.c: compare also the retuns type when comparing signatures:
33844         we didn't do this as an optimization since really overloaded methods
33845         must differ also in the arguments, but this doesn't work with
33846         low-level IL code (or when using explicit conversion operators: see
33847         bug#23498 for an example).
33848
33849 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
33850
33851         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
33852
33853 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
33854
33855         * icall.c: make MonoType::GetElementType its own icall.
33856
33857 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
33858
33859         * icall.c: remove MonoMethod_get_Name().
33860         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
33861         object.
33862
33863 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
33864
33865         * string-icalls.c: optimized a few methods.
33866
33867 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
33868
33869         * icall.c: added all new string internal calls
33870         * string-icalls.c: added, new string internal call implementation.
33871         * object.c: added mono_string_new_size for allocating a string a size
33872
33873 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
33874
33875         * object.c (mono_object_isinst): use the same code as in the
33876         optimized x86 version.
33877
33878 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
33879
33880         * profiler.c: TSC-based timer code (faster and more accurate).
33881         Not hooked up in configure, yet (set USE_X86TSC to 1).
33882
33883 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
33884
33885         * profiler.c, profiler.h: track time spent compiling methods.
33886         * threads.c: track thread creation/destruction.
33887
33888 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
33889
33890         * profiler.c, profiler.h, profiler-private.h: profiling interface
33891         and sample implementation. Moved here so that it can be used also by
33892         the jit.
33893
33894 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
33895
33896         * reflection.c, reflection.h: keep types and other handles separate in
33897         the hash tables for referred tokens. Add guid for modules.
33898
33899 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
33900
33901         * assembly.c: fix bugs found with valgrind.
33902         * metadata.h, metadata.c: added mono_metadata_guid_heap().
33903
33904 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
33905
33906         * threads: added icall support for getting current domain for
33907                    the thread.
33908  
33909 2002-04-13  Martin Baulig  <martin@gnome.org>
33910
33911         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
33912         (MonoDebugVarInfo): Added `index' field for register based addresses.
33913         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
33914         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
33915         `MonoDebugVarInfo *params' and `guint32 this_offset' with
33916         `MonoDebugVarInfo *this_var'.
33917
33918         * debug-symfile.c (relocate_variable): New static function to write
33919         a location description for a local variable or method parameter.
33920
33921 2002-04-12  Martin Baulig  <martin@gnome.org>
33922
33923         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
33924         stack offset and begin/end scope address of a local variable.
33925         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
33926         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
33927         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
33928
33929         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
33930         Added new relocation types for start/end scope of a local variable.
33931
33932 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
33933
33934         * object.h: add mono_object_domain() macro.
33935         * reflection.c: handle typespecs.
33936         * icall.c: MonoMethod::get_Name() implementation.
33937
33938 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
33939
33940         * icall.c: String::GetHashCode() icall implementation.
33941
33942 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
33943
33944         * icall.c: String::IndexOfAny icall.
33945         * object.c, object.h: make array->max_length more useful.
33946         Intrduced mono_object_class() and mono_string_length() macros.
33947
33948 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
33949
33950         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
33951         instead of g_unichar_isdigit.
33952
33953 2002-04-11  Nick Drochak  <ndrochak@gol.com>
33954
33955         * icall.c: Implement a simple Double.ToString().
33956
33957 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
33958
33959         * appdomain.h: only io-layer.h is supposed to be included.
33960         * icall.c: explicitly import environ. Fix warning.
33961
33962 2002-04-10  Nick Drochak  <ndrochak@gol.com>
33963
33964         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
33965                 return true even if it's not Daylight Savings time.
33966                 Only return false for the case where the function isn't
33967                 implemented for a plaform (read Windows).
33968
33969 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
33970
33971         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
33972         data with a mutex.
33973
33974 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
33975
33976         * mempool.c (mono_mempool_alloc): only use g_malloc when
33977         absolutely necessary.
33978
33979 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
33980
33981         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
33982
33983         * class.c (mono_class_vtable): use domain mempool to allocate vtable
33984         (mono_class_proxy_vtable): use domain mempool
33985
33986 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
33987
33988         * appdomain.h, appdomain.c: split initialization that requires the
33989         execution engine support into mono_runtime_init().
33990
33991 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
33992
33993         * class.c (mono_class_init): don't include vtable inside MonoClass
33994         to save some memory, gather some statistics.
33995         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
33996
33997 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
33998
33999         * icall.c: internalcall implementation for ValueType.Equals().
34000
34001 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
34002
34003         * object.c (mono_message_init): moved 
34004         (mono_runtime_exec_main): new arch. independent impl.
34005         (mono_runtime_invoke_array): new method - like
34006         mono_runtime_invoke, but you can pass an array of objects.
34007         (mono_remoting_invoke): new arch. independent impl.
34008         (mono_message_invoke): new arch. independent impl.
34009         (mono_runtime_class_init): new arch. independent impl.
34010         (mono_runtime_object_init): new arch. independent impl.
34011
34012 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
34013
34014         * metadata.c, object.c, reflection.c: documented the exported
34015         functions.
34016
34017 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
34018
34019         * icall.c: simpler code to pass the assembly builder data to corlib.
34020         Implement GetNestedTypes() internalcall.
34021
34022 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
34023
34024         * class.c: warn if a type can't be loaded.
34025
34026 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
34027
34028         * image.h: typedef MonoImageOpenStatus
34029         * types.h: removed unused file
34030         
34031 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
34032
34033         * icall.c: Enum_ToObject accepts enum value arguments.
34034
34035 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
34036
34037         * class.c: move initialization of properties, events and nested
34038         classes, so that they happen for interfaces, too.
34039
34040 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
34041
34042         * icall.c: cleanup some ugly casts in Array_SetValue*.
34043
34044 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
34045
34046         * icall.c: the values array fro enums is of the correct type, now.
34047         Implement (correctly) getFullName instead of assQualifiedName for
34048         MonoType.
34049         * reflection.h, reflection.c: added mono_type_get_name ().
34050
34051 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
34052
34053         * assembly.c, image.h: for each MonoImage, record from wich assembly
34054         it was loaded.
34055         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
34056         Make Type.Assembly work.
34057
34058 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
34059
34060         * debug-symfile.h: use char* instead of gpointer to avoid
34061         unnecessary casts.
34062
34063         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
34064
34065         * icall.c (ves_icall_InternalExecute): impl. FielSetter
34066         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
34067
34068 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
34069
34070         * icall.c (mono_message_init): impl. (code cleanup)
34071         (ves_icall_InternalExecute): impl. FieldGetter
34072
34073         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
34074         defined we call all (non-static)methods through the vtable. 
34075
34076 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
34077
34078         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
34079         finalizer even though the memory is still referenced (and the chunk of
34080         memory is not freed).
34081
34082 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
34083
34084         * assembly.c: fix brokeness.
34085
34086 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
34087
34088         * class.c: kill some warnings. Check explicit interface method
34089         implementation also without considering the namespace.
34090         Load also literal strings in static class data.
34091
34092 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
34093
34094         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
34095         (default_assembly_name_resolver): Make the resolver take the
34096         "base" directory where the assembly was originally defined, so we
34097         can load DLLs that are in the same directory as the assembly that
34098         is being referenced.
34099
34100 2002-03-28  Dick Porter  <dick@ximian.com>
34101
34102         * file-io.h: 
34103         * file-io.c:
34104         * socket-io.c: 
34105         * unicode.h: 
34106         * unicode.c: Warning cleanups
34107
34108 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
34109
34110         * object.h, reflection.h: use the correct type instead of MonoObject.
34111
34112 2002-03-28  Martin Baulig  <martin@gnome.org>
34113
34114         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
34115         (mono_debug_update_symbol_file): Initialize classes if necessary.
34116
34117 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
34118
34119         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
34120         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
34121
34122 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
34123
34124         * assembly.h: fix function prototype.
34125         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
34126         * mono-endian.h: use const cast.
34127
34128 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
34129
34130         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
34131
34132 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
34133
34134         * loader.c: don't assert when a typeref can't be loaded, give
34135         a chance to the runtime to trow an exception instead.
34136         * loader.h: fix warning.
34137
34138 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
34139
34140         * class.c (mono_class_proxy_vtable): added proxy support
34141
34142 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
34143
34144         * icall.c: removed last of PAL calls, added System.Environment
34145         * file-io.h, file-io.c: MonoIO implementation
34146         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
34147
34148 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
34149
34150         * appdomain.c: do not use the byte marker in ldstr table lookup.
34151         * debug-helpers.c: allow two ':' to separate class and method name.
34152         * object.c: allocate arrays bounds with the GC, too.
34153         * verify: add a few more checks.
34154
34155 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
34156
34157         * reflection.c: output also literal strings. Allocate parameter data
34158         with GC_malloc() (thanks, Martin, for catching this!).
34159
34160 2002-03-26  Martin Baulig  <martin@gnome.org>
34161
34162         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
34163         include the `this' offset in the `param_offsets'.
34164
34165 2002-03-25  Martin Baulig  <martin@gnome.org>
34166
34167         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
34168         mono_debug_get_class() function to get the classes. Added new
34169         relocation types for arrays and strings.
34170         (mono_debug_get_class): New static function to search in all
34171         referenced assemblies for a metadata token.
34172
34173         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
34174
34175 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
34176
34177         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
34178         hold gc-allocated objects. Make the string heap a stream like the
34179         others. Removed duplicated code when writing stream info.
34180         Added asserts to catch possible buffer overflows. Set the sorted map
34181         for tables that need sorting. Added some documentation.
34182
34183 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
34184
34185         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
34186         for interned strings and vtables.
34187
34188 2002-03-24  Martin Baulig  <martin@gnome.org>
34189
34190         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
34191         it in the array since it was created with g_slist_prepend().
34192
34193 2002-03-24  Martin Baulig  <martin@gnome.org>
34194
34195         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
34196         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
34197         (mono_debug_method_from_token): Renamed to
34198         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
34199         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
34200
34201         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
34202         relocation types.
34203
34204         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
34205
34206 2002-03-24  Martin Baulig  <martin@gnome.org>
34207
34208         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
34209         (mono_debug_method_from_token): New func.
34210
34211         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
34212         New interncall, calls mono_debug_local_type_from_signature().
34213         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
34214         calls mono_debug_method_from_token().
34215
34216 2002-03-23  Martin Baulig  <martin@gnome.org>
34217
34218         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
34219         specifies the number of bytes to be converted, not the array size.
34220         Return the number of chars, not the number of bytes.
34221         (ves_icall_iconv_get_chars): The `byteCount' argument
34222         specifies the number of bytes to be converted, not the array size.
34223
34224 2002-03-23  Martin Baulig  <martin@gnome.org>
34225
34226         * reflection.h (MonoReflectionSigHelper): New type.
34227
34228         * reflection.c (mono_reflection_sighelper_get_signature_local),
34229         (mono_reflection_sighelper_get_signature_local): New functions.
34230
34231         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
34232         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
34233         interncalls.
34234
34235 2002-03-23  Martin Baulig  <martin@gnome.org>
34236
34237         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
34238         is_writeable is set.
34239         (mono_raw_buffer_update): New function to write the modified map
34240         back to disk.
34241
34242         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
34243
34244         * debug-symfile.c (mono_debug_update_symbol_file): Call
34245         mono_raw_buffer_update() when done writing.
34246
34247 2002-03-23  Martin Baulig  <martin@gnome.org>
34248
34249         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
34250
34251         * debug-symfile.c: Added support for arguments and local variables.
34252
34253 2002-03-23  Dick Porter  <dick@ximian.com>
34254
34255         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
34256         protected by ifdefs, hence breaking the w32 build.
34257
34258 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34259
34260         * object.c: implement is_interned() the right way.
34261
34262 2002-03-21  Martin Baulig  <martin@gnome.org>
34263
34264         * debug-symfile.[ch]: New files to handle debugging information
34265         files. There's also support to dynamically update these symbol
34266         files to include machine dependent information.
34267
34268 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
34269
34270         * threads.c (mono_thread_create): new function to create thread
34271         from C
34272
34273 2002-03-20  Martin Baulig  <martin@gnome.org>
34274
34275         * icall.c (ves_icall_InternalInvoke): Create a new object if the
34276         method is a constructor.
34277         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
34278         points to ves_icall_InternalInvoke().
34279
34280 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
34281
34282         * file-io.c: Flush shouldn't throw exceptions.
34283
34284 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
34285
34286         * file-io.c: FileStream flush support; FileSetLength now
34287         restores file pointer.
34288
34289 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
34290
34291         * class.c: set image for pointer classes.
34292
34293 2002/03/19  Nick Drochak <ndrochak@gol.com>
34294
34295         * sysmath.c: Forgot one.
34296
34297 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
34298
34299         * sysmath.c: Avoid redefining existing names.
34300
34301 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
34302
34303         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
34304         handled by runtime as icall rather than dllimport from libm.so
34305         * file-io.c, file-io.h: fixed handle argument type.
34306
34307 2002-03-18  Dick Porter  <dick@ximian.com>
34308
34309         * reflection.c (mono_image_get_type_info): rename interface to
34310         iface, because of "#define interface struct" on windows.
34311
34312 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
34313
34314         * class.c, class.h: rename and export mono_ptr_class_get().
34315         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
34316         * reflection.c, reflection.h, icall.c: better/saner type name
34317         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
34318         method signatures.
34319
34320 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
34321
34322         * class.c (mono_class_init): removed hardcoded GHC_SLOT
34323
34324         * icall.c (ves_icall_InternalInvoke): impl.
34325
34326 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34327
34328         * reflection.c: output the interface map table, too.
34329
34330 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
34331
34332         * class.c (class_compute_field_layout): separate computation of 
34333         static field layout
34334
34335 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
34336
34337         * icall.c: added System.Buffer support.
34338         * file-io.c: moved file icalls from PAL to FileStream.
34339
34340 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
34341
34342         * icall.c (ves_icall_System_Object_GetHashCode): impl.
34343
34344 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
34345
34346         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
34347
34348 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34349
34350         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
34351
34352 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
34353
34354         * debug-helpers.{c,h}: moved here from monograph some useful functions
34355         to locate a method by name/signature in a class or image. Included
34356         also a small and flexible IL disassembler.
34357
34358 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
34359
34360         * reflection.c: fixup tokens in methods with small header size, too.
34361
34362 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
34363
34364         * object.c (mono_string_to_utf8): remove assert(!error), instead
34365         print a warning. 
34366
34367 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
34368
34369         * icall.c: update to the new mono_Array_class_get interface.
34370
34371 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
34372
34373         * appdomain.c, object.c: Boehm-GC enable.
34374         * icall.c: make get_data_chunk() support split data requests.
34375         Ensure a class is initialized in more cases. Return only the first
34376         property found in GetProperties() or the compiler gets confused. 
34377         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
34378         * reflection.h, reflection.c: add fixup mechanism for field and method
34379         tokens. Initialize assembly->typeref in a single place. Output
34380         properties after events. Support custom attributes for events, too.
34381         Typo fix for paramter custom attrs.
34382
34383 2002-03-07  Martin Baulig  <martin@gnome.org>
34384
34385         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
34386
34387 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
34388
34389         * class.c (mono_array_class_get): fix. for multi. dim. arrays
34390
34391 2002-03-06  Martin Baulig  <martin@gnome.org>
34392
34393         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
34394         non-zero lower bounds. See testcases #F10-#F13.
34395
34396 2002-03-05  Martin Baulig  <martin@gnome.org>
34397
34398         * exception.c (mono_get_exception_argument_out_of_range): New exception.
34399
34400         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
34401         ves_icall_System_Array_GetValue(), only calculate the absolute array position
34402         here.
34403         (ves_icall_System_Array_SetValue): Likewise.
34404         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
34405         as argument and does the actual work. This function is used when copying a
34406         multi-dimensional array.
34407         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
34408         now do all the widening conversions of value types.
34409         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
34410
34411 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34412
34413         * class.c: remove some magic numbers and use the smbolic names,
34414         instead. Added init_events() to load event info at class init time.
34415         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
34416         and mono_metadata_methods_from_event().
34417         * reflection.h, reflection.c: added support for writing out the evnets
34418         related information.
34419
34420 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
34421
34422         * reflection.h, icall.c: use a different method (GetInterfaces)
34423         to gather interface info and add isbyref, isprimitive and
34424         ispointer to the ves_icall_get_type_info() return value.
34425
34426 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
34427
34428         * class.h: stared adding support for events.
34429         * icall.c: split find_members implementation. Added debug icall to get
34430         the address of an object.
34431         * reflection.c: handle TypeBuilders in mono_type_get_object().
34432
34433 2002-03-01  Martin Baulig  <martin@gnome.org>
34434
34435         * icall.c (ves_icall_System_Array_GetLength): This must throw an
34436         ArgumentOutOfRangeException(), not an ArgumentException().
34437         (ves_icall_System_Array_GetLowerBound): Likewise.
34438         (ves_icall_System_Array_GetValue): Improved argument checking.
34439         (ves_icall_System_Array_SetValue): Improved argument checking.
34440
34441 2002-03-01  Martin Baulig  <martin@gnome.org>
34442
34443         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
34444         called with invalid arguments rather than just dying with g_assert().
34445         (ves_icall_System_Array_SetValue): Likewise.
34446         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
34447         raise a NotImplementedException instead.
34448         (ves_icall_System_Array_GetLength): Added argument checking.
34449         (ves_icall_System_Array_GetLowerBound): Added argument checking.
34450
34451 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
34452
34453         * object.h (mono_assert): new macros mono_assert and
34454         mono_assert_not_reached
34455
34456 2002-02-28  Martin Baulig  <martin@gnome.org>
34457
34458         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
34459         and "System::String::IsInterned" to "System::String::_IsInterned".
34460
34461 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
34462
34463         * icall.c: remove hacks for typebuilder. Added icall to create a
34464         modified type from a tybebuilder.
34465         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
34466         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
34467         to create a backing MonoClass for a TypeBuilder.
34468
34469 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34470
34471         * class.c, class.h: more refactoring of class init.
34472         Export mono_class_setup_mono_type() and mono_class_setup_parent().
34473
34474 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
34475
34476         * marshal.c, marshal.h: start of marshaling interface.
34477
34478 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
34479
34480         * icall.c: fix order in assembly qualified name icall.
34481
34482 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
34483
34484         * class.c: do not free str, since we store it in the hash table.
34485         * reflection.h: add label field to MonoILExceptionInfo.
34486         * reflection.c: handle references to more than one assembly. Handle
34487         case when there isn't a module created in the assembly.
34488
34489 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
34490
34491         * class.c: Fix typo. Start refactoring of class init code.
34492
34493 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
34494
34495         * appdomain.c: exit with 1 on error.
34496         * class.c: we already have the name in MonoClassField.
34497         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
34498         MonoStreamHeader instead of an offset of image->raw_metadata.
34499
34500 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
34501
34502         * appdomain.c (mono_init): Be even more descriptive about the error.
34503
34504 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
34505
34506         * appdomain.c: give the user an informative message when corlib can't
34507         be loaded.
34508
34509 2002-02-26  Martin Baulig  <martin@gnome.org>
34510
34511         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
34512         New icall to get the time zone data.
34513
34514 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34515
34516         * reflection.c: set virtual and raw size of section correctly.
34517         * threads.c: transfer domain information to newly created threads.
34518
34519 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
34520
34521         * class.c: when instancing a class in a domain, load the default
34522         vaules for static fields from the constant table. Fix System.Enum to
34523         not be an enum.
34524         * icall.c: implement Object::GetType() internalcall. Implemented
34525         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
34526         Fixed checking of binding flags in find_members().
34527         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
34528         * reflection.c: handle enumerations when writing to the constant
34529         table. Use a different object cache for types.
34530
34531
34532 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
34533
34534         * object.c (mono_object_isinst): fix for arrays
34535
34536         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
34537
34538 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
34539
34540         * object.c: don't use mprotect ()  and fix intern pool hash table
34541         lookup for big endian systems.
34542
34543 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
34544
34545         * icall.c: change type_is_subtype_of () signature.
34546
34547 2002-02-21  Mark Crichton  <crichton@gimp.org>
34548
34549         * rand.c, rand.h: Added random number generator for
34550         System.Security.Cryptography classes.
34551
34552         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
34553
34554         * icall.c: Added System.Security.Cryptography calls.
34555
34556 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
34557
34558         * class.c, icall.c, metadata.c: better support for pointer types.
34559         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
34560         * reflection.c: Add support for getting custom attrs for properties
34561         and simplify some code.
34562
34563 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
34564
34565         * icall.c: change getToken () and add custom attribute GetBlob()helper
34566         method.
34567         * reflection.h: add custom attrs array to the reflection builder structures.
34568         * reflection.c: encode and emit custom attributes for all the relevant
34569         reflection objects. Cache fieldref and methodref tokens. Change
34570         mono_image_create_token() interface to take a MonoDynamicAssembly.
34571         More complete custom attributes decoder. Load custom attributes for
34572         Assembly, Field, Method and Constructor objects, too. Make the
34573         returned array an Attribute[] one, not object[]. Added
34574         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
34575         custom attribute constructor.
34576
34577 2002-02-20  Dick Porter  <dick@ximian.com>
34578
34579         * icall.c:
34580         * rawbuffer.c:
34581         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
34582         problem code out for now).
34583
34584 2002-02-19  Radek Doulik  <rodo@ximian.com>
34585
34586         * object.c (mono_ldstr): use hash table to avoid multiple swapping
34587
34588 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
34589
34590         * icall.c: register the GetCustomAttributes method.
34591         * object.c, object.h: add mono_string_new_len ().
34592         * reflection.h, reflection.c: added mono_runtime_invoke(),
34593         mono_install_runtime_invoke(). Added
34594         mono_reflection_get_custom_attrs () to load custom attributes and
34595         create the attribute objects.
34596
34597 2002-02-19  Dick Porter  <dick@ximian.com>
34598         * threads-dummy-types.c:
34599         * threads-dummy-types.h:
34600         * threads-dummy.c:
34601         * threads-dummy.h:
34602         * threads-pthread-types.c:
34603         * threads-pthread-types.h:
34604         * threads-pthread.c:
34605         * threads-pthread.h:  Deleted obsolete files
34606
34607 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
34608
34609         * class.c (mono_class_vtable): runtime init the class when we
34610         allocate static class data.
34611
34612         * icall.c (ves_icall_System_Array_SetValue): check for null values.
34613
34614         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
34615         and String - but we will need generic marshalling support in the
34616         future. 
34617         (mono_init): set the domain name in a ms compatible way
34618
34619         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
34620         String[].
34621
34622 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
34623
34624         * object.c (mono_array_clone): use alloca() instead of g_malloc  
34625         for sizes
34626
34627         * appdomain.c (mono_domain_unload): impl.
34628
34629 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34630
34631         * appdomain.c, object.c: fix intern pool implementation.
34632         * class.c: fix alignment code.
34633
34634 2002-02-16  Radek Doulik  <rodo@ximian.com>
34635
34636         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
34637         and s2 > s1, just copy lower bytes to be compatible with little
34638         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
34639         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
34640
34641         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
34642         force big_endian to be 1 for big endian machines 
34643         (ves_icall_iconv_new_decoder): ditto
34644
34645 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
34646
34647         * socket-io.c (convert_sockopt_level_and_name): If the system
34648         doesn't define SOL_IP or SOL_TCP, get them by hand using
34649         getprotobyname() and caching the values (because this could be a
34650         slow operation).
34651         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
34652         Use the appropriate struct when the system does support it. Ie,
34653         not all systems have struct ip_mreqn so use struct ip_mreq when
34654         appropriate.
34655
34656 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
34657
34658         * reflection.c: handle finally clauses.
34659
34660 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
34661
34662         * socket-io.c: use g_snprintf() instead of snprintf.
34663
34664 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
34665
34666         * reflection.c (mono_param_get_objects): Cast second argument to
34667         mono_method_get_param_names to a const char** to silence the
34668         compiler warning.
34669
34670         * appdomain.c (mono_domain_assembly_open): Put parens around the
34671         truth statement in the for-loop.
34672
34673         * unicode.c (iconv_convert): Got rid of a compiler warning about
34674         int i being unused when the system has a new iconv.
34675         (iconv_get_length): Same.
34676
34677         * image.c (load_class_names): Cast the second argument to
34678         g_hash_table_insert() to char* to hush compiler warnings about the
34679         arg being a const.
34680         (mono_image_open): Same here.
34681
34682         * socket-io.c: Don't conditionally include sys/filio.h or
34683         sys/sockio.h here anymore since we now get them from
34684         io-layer/io-layer.h
34685         (inet_pton): If the system doesn't support inet_aton, implement
34686         using inet_addr and also #define INADDR_NONE if it isn't defined
34687         by the system.
34688
34689 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
34690
34691         * metadata.c, metadata.h: added function to get packing and size info
34692         of a typedef.
34693         * reflection.h, reflection.c: handle field RVA data. Save info about
34694         the table layout if needed. Assign typedef indexes to all the types
34695         before dumping the info about them to avoid forward reference problems.
34696
34697 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
34698
34699         * socket-io.c (convert_sockopt_level_and_name): ifdef
34700         SO_ACCEPTCONN because it is not defined on my system (old debian)
34701
34702 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
34703
34704         * opcode.c: use stddef.h to get NULL.
34705
34706 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
34707
34708         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
34709         for FIONBIO, FIONREAD and SIOCATMARK.
34710         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
34711         define INADDR_NONE and besides, inet_addr() is deprecated and
34712         should not be used. Use inet_pton() instead - it also has the
34713         added bonus that it can easily handle IPv6 addresses as well.
34714         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
34715
34716 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
34717
34718         * decimal.c: remove _MSC_VER conditional.
34719
34720 2002-02-13  Dick Porter  <dick@ximian.com>
34721
34722         * socket-io.c: 
34723         * icall.c: Internal calls for Blocking, Select, Shutdown,
34724         GetSocketOption and SetSocketOption
34725
34726 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34727
34728         * assembly.cs: better resolver: use it instead of some kludgy
34729         code.
34730
34731 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
34732
34733         * reflection.c: the best way to speed-up the compiler is to avoid
34734         infinite loops.
34735
34736 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
34737
34738         * class.c (mono_class_vtable): changed the object layout
34739         (obj->vtable->class). 
34740         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
34741
34742 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
34743
34744         * assembly.c: look for assemblies in the assembly dir, too.
34745
34746 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34747
34748         * class.c: fix thinko in mono_class_from_type().
34749
34750 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
34751
34752         * exception.h, exception.c: added TypeLoadException.
34753         * object.h, object.c: added mono_array_clone ().
34754         * icall.c: handle throwOnError in AssemblyGetType().
34755         Added Array.Clone().
34756         * opcode.h, opcode.c: use a single value for the opcode val.
34757         Compile fix for non-gcc compilers.
34758
34759 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
34760
34761         * opcodes.c, opcodes.h: export interesting info about opcodes.
34762
34763 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
34764
34765         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
34766         icalls. 
34767
34768         * class.c (class_compute_field_layout): set element_class for enums
34769         (mono_class_create_from_typedef): set element_class for normal classes
34770
34771         * icall.c (ves_icall_System_Enum_get_value): impl.
34772
34773         * class.c (mono_class_create_from_typedef): do not set valuetype
34774         flag for System.ValueType and System.Enum
34775
34776 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
34777
34778         * unicode.c (iconv_convert): fix big endian problem.
34779
34780 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
34781
34782         * class.c: add asserts if we are ever going to scribble over memory.
34783         * socket-io.c: not all systems have AF_IRDA defined.
34784
34785 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
34786
34787         * class.c (class_compute_field_layout): do not consider static
34788         fields to compute alignment
34789
34790 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
34791
34792         * appdomain.c (mono_appdomain_get): impl.
34793         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
34794
34795 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
34796
34797         * icall.c: ignore "file://" prefix when loading an assembly.
34798
34799 2002-01-23  Dick Porter  <dick@ximian.com>
34800
34801         * socket-io.c:
34802         * icall.c:
34803         * Makefile.am: Added socket support
34804
34805 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
34806
34807         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
34808         code back.  This should return the assemblies that are loaded by
34809         the runtime on behalf of an application domain. 
34810
34811         The current implementation is still broken, it just returns every
34812         assembly loaded, but until we get real applications domain this
34813         will do.
34814
34815 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
34816
34817         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
34818         AppDomain object.
34819
34820 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
34821
34822         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
34823         the mono_class_from_name lookup.
34824         (ves_icall_get_parameter_info): ditto.
34825         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
34826         method.
34827         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
34828
34829 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
34830
34831         * class.c: load also nested classes on class init.
34832         System.ValueType instance methods gets passed boxed
34833         values, unless methods in derived classed that get a pointer to the
34834         data.
34835         * icall.c: use better name parsing code in GetType().
34836         * image.c, image.h: add mono_image_loaded ().
34837         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
34838         * reflection.c, reflection.h: added mono_reflection_parse_type().
34839
34840 2002-01-22  Veronica De Santis <veron78@interfree.it>
34841
34842         * icall.c : Added mapping of internal calls for Manual and Auto reset events
34843         * threads.c : Added the implementation of internal calls for events
34844         * threads.h : Added prototypes of internal calls for events
34845         
34846 2002-01-21  Radek Doulik  <rodo@ximian.com>
34847
34848         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
34849
34850 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
34851
34852         * class.c (mono_class_init): set min_align to 1 (instead of 0)
34853         (mono_class_value_size): use min_align
34854
34855 2002-01-20  Dick Porter  <dick@ximian.com>
34856
34857         * threads.h:
34858         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
34859         so it compiles on w32.
34860
34861 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
34862
34863         * metadata.c (mono_type_stack_size): impl.
34864
34865         * class.c (mono_class_get_field): impl. memberref token
34866
34867 2002-01-16 Veronica De Santis <veron78@@interfree.it>
34868
34869         * icall.h : Added the internal calls mapping for CreateMutex_internal
34870                     and ReleaseMutex_internal.
34871         * threads.h : Added the prototype of mutexes internal calls.
34872         * threads.c : Added the implementations of mutexes internal calls.
34873
34874 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
34875
34876         * metaparse.h: removed unused file.
34877         * reflection.c, reflection.h: added stream_data_align () function 
34878         to align data in streams and keep stream aligned. Add support for
34879         exception support in method headers.
34880
34881 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
34882
34883         * unicode.c: make iconv_convert () return the number of bytess written
34884         in the output buffer.
34885
34886 2002-01-15  Dick Porter  <dick@ximian.com>
34887         * threads.c: Make the runtime's idea of infinite timeouts coincide
34888         with the class library's
34889
34890         Fix a particularly egregious bug in mono_thread_cleanup(). That
34891         code was so utterly bogus it must have been written on a Monday.
34892
34893 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
34894
34895         * reflection.h: add subtypes field to TypeBuilder.
34896         * reflection.c: encode constants for literal fields.
34897         Handle subtypes. Fix user string token (and add a zero byte)
34898         at the end.
34899         
34900 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
34901
34902         * class.c (mono_class_init): bug fix: assign slot numbers for
34903         abstract methods.
34904
34905 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
34906
34907         * reflection.c: don't try to output a code RVA for abstract methods.
34908         Small fixes for method header format. Output parameter info to the
34909         ParamDef table. Save method overriding info to MethodImpl table.
34910         Fix property support. Allow typedef.extends to be a type in the
34911         building assembly.
34912         * verify.c: fix off-by-one error.
34913
34914 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
34915
34916         * class.c: fix mono_class_from_mono_type () for szarray types.
34917         Remove unused cache check in mono_class_from_type_spec().
34918         * icall.c: *type_from_name () functions handle simple arrays and byref.
34919         * reflection.c: handle byref and szarray types. Handle methods without
34920         body (gets P/Invoke compilation working). Handle types and fields in
34921         get_token ().
34922         * reflection.h: add rank to MonoTypeInfo.
34923
34924 2002-01-10  Dick Porter  <dick@ximian.com>
34925
34926         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
34927         internal calls
34928
34929 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
34930
34931         * icall.c: initialize class in type_from_handle ().
34932         Loop also in parent classes for get_method ().
34933         * reflection.c: properly encode class and valuetype types.
34934         Start on encoding TypeBuilder types. Handle fieldrefs.
34935         Use correct length when registering a user string.
34936         Handle ConstructorBuilder and MonoMethod in get_token ().
34937         Make mono_type_get_object () aware of cached types.
34938         * object.c: back out change to mono_string_new ().
34939
34940 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
34941         * object.c: mono_string_new should return a NULL when the string 
34942         passed in is NULL -- not try to deference it.
34943         
34944 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
34945
34946         * icall.c: hack to make IsSubType work for TypeBuilders.
34947         * reflection.c: emit constructors before methods.
34948         Retrieve param names in mono_param_get_objects().
34949
34950 2002/01/05  Nick Drochak  <ndrochak@gol.com>
34951
34952         * Makefile.am: fix list of headers and sources so automake 1.5
34953         doesn't complain. Removed \# at end of list.
34954
34955 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
34956
34957         * reflection.c: get token for a method ref. Set return type of
34958         constructor to void.
34959         * loader.c: debug message.
34960         * class.c: typo fix.
34961
34962 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
34963
34964         * icall.c: fix array init with rank > 1. FindMembers
34965         loops in parent class as well.
34966         * image.c: do not insert nested types in name cache.
34967         * reflection.c: warning fix.
34968         * reflection.h: add override method (for interface impl).
34969
34970 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
34971
34972         * metadata.c: fix customattr decoding.
34973
34974 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
34975
34976         * rawbuffer.cs: Added native Win32 implementation, avoids using
34977         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
34978
34979 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
34980
34981         * class.c: make the low-level routines handle the cache.
34982
34983 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
34984
34985         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
34986
34987 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
34988
34989         * class.c: fix mono_array_element_size() for objects.
34990         * class.h, class.c: add properties to MonoClass and load them
34991         at init time.
34992         * icall.c: check with isinst() when assigning a value to an array
34993         instead of requiring the classes to match exactly.
34994         Implemented icall for System.Type::GetType().
34995         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
34996         enums. Handle bindingflags when looking for methods and fields.
34997         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
34998         and mono_metadata_methods_from_property().
34999         * reflection.h, reflection.c: added structures for propreties,
35000         parameters and enums. Implemented mono_property_get_object() and
35001         mono_param_get_objects().
35002
35003 2001-12-18  Dick Porter  <dick@ximian.com>
35004
35005         * file-io.c: Use mono_string_to_utf16() instead of
35006         mono_string_chars()
35007
35008         * object.c: Added mono_string_to_utf16(), which copies the non
35009         NULL-terminated MonoString into a new double-null-terminated
35010         buffer.
35011
35012 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
35013
35014         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
35015
35016 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
35017
35018         * file-io.c: raise exceptions if handle is invalid.
35019
35020 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
35021
35022         * assembly.c: yet another check for mscorlib.
35023         * class.c, class.h: load nesting info for classes.
35024         * icall.c: many new functions to support the Reflection classes.
35025         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
35026         * reflection.h, reflection.c: mono_image_create_token(),
35027         mono_assembly_get_object(), mono_type_get_object(),
35028         mono_method_get_object(), mono_field_get_object(): methods to return
35029         objects that parallel the C representation of assemblies, types,
35030         methods, fields.
35031
35032 2001-12-11  Dick Porter  <dick@ximian.com>
35033
35034         * icall.c:
35035         * file-io.c: Internal calls for file IO.
35036
35037 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
35038
35039         * tabledefs.h: missing FileAttributes.
35040         * verify.h, verify.c: use is_valid_string () to simplify and check for
35041         valid strings more correctly. Fix warnings and speeling.
35042         Check more tables: Filed, File, ModuleRef, StandAloneSig.
35043         Check code: branches, maxstack, method calls.
35044
35045 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
35046
35047         * object.c (mono_object_allocate): removed static, so that the jit
35048         can allocate value types.
35049
35050         * icall.c (ves_icall_System_DateTime_GetNow): impl.
35051
35052 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
35053
35054         * class.c: init enum types right away and register the
35055         token->MonoClass map in mono_class_create_from_typedef ().
35056         * verify.h, verify.c: first cut of the verifier.
35057         * pedump.c: add --verify switch to verify metadata tables.
35058         * tabledefs.h: add some missing enums.
35059
35060 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
35061
35062         * class.c (mono_install_runtime_class_init): impl.
35063         (mono_class_init): renamed mono_class_metadata_init to
35064         mono_class_init, also removed the metadata_inited flag
35065
35066         * object.c (mono_object_isinst): use faster algorithm
35067
35068 2001-11-30  Radek Doulik  <rodo@ximian.com>
35069
35070         * mono-endian.h: reverted last change
35071         added function prototypes
35072
35073         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
35074         add mono-endian.c back
35075
35076         * mono-endian.c: returned back, as Paolo pointed out, it's needed
35077         for unaligned access, I've mistaked it with endianess. I am
35078         sorry.
35079         (mono_read16): fix reverted endianess
35080         (mono_read64): ditto
35081         (mono_read32): ditto
35082
35083 2001-11-30  Dick Porter  <dick@ximian.com>
35084
35085         * exception.c: Implement mono_exception_from_name()
35086
35087 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
35088
35089         * metadata.h, metadata.c: remove params_size and locals_size and their
35090         calculation from the metadata code: they are only usefult to the
35091         interp.
35092
35093 2001-11-29  Radek Doulik  <rodo@ximian.com>
35094
35095         * object.c (mono_ldstr): swap bytes here, it's probably not the
35096         best place, but works for me now, I'll redo it once I know mono
35097         better, also note that I add PROT_WRITE and don't reset back, also
35098         note that it's only affects big endians, so x86 should be OK
35099
35100         * mono-endian.h (read16): use just glib macros for both endians
35101
35102         * mono-endian.c: removed as glib macros are used in in
35103         mono-endian.h so we don't need to care about endianess for read
35104         macros as glib does that for us already
35105
35106 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
35107
35108         * class.h, class.h: take minimum alignment into consideration so
35109         that the fields of a class remain aligned also when in an array.
35110
35111 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
35112
35113         * loader.h, loader.c: add mono_method_get_param_names().
35114         * class.c: 0-init class fields.
35115
35116 2001-11-26  Dick Porter  <dick@ximian.com>
35117
35118         * icall.c:
35119         * threads-types.h:
35120         * threads.c: New file that handles System.Threading on all platforms
35121
35122         * object.c: 
35123         * object.h: Remove the synchronisation struct from MonoObject,
35124         replace it with a pointer that gets initialised on demand
35125
35126         * Makefile.am: Replace all the system-specific threading code with
35127         a single file that uses the new wrapper library
35128
35129 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
35130
35131         * class.c, class.h: add mono_install_trampoline() so that the runtime
35132         can register a function to create a trampoline: removes the ugly
35133         requirement that a runtime needed to export arch_create_jit_trampoline.
35134         * object.h, object.c: added mono_install_handler() so that the runtime
35135         can install an handler for exceptions generated in C code (with
35136         mono_raise_exception()). Added C struct for System.Delegate.
35137         * pedump.c: removed arch_create_jit_trampoline.
35138         * reflection.c: some cleanups to allow registering user strings and
35139         later getting a token for methodrefs and fieldrefs before the assembly
35140         is built.
35141         * row-indexes.h: updates and fixes from the new ECMA specs.
35142
35143 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
35144
35145         * class.h, class.c: add enum_basetype field to MonoClass.
35146         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
35147         to get index in the constant table reated to a field, param or
35148         property.
35149         * reflection.h, reflection.c: handle constructors. Set public-key and
35150         version number of the built assembly to 0.
35151         * row-indexes.h: update from new ECMA spec.
35152
35153 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
35154
35155         * class.h, class.c: add a max_interface_id to MonoClass.
35156         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
35157         since it's used to do that. Added mono_type_type_from_obj().
35158         Make GetType() return NULL instead of segfaulting if the type was not
35159         found. Handle simple arrays in assQualifiedName.
35160         * object.h: add a struct to represent an Exception.
35161         * reflection.c: output call convention in method signature.
35162         Add code to support P/Invoke methods and fixed offsets for fields.
35163
35164 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
35165
35166         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
35167         the value.
35168         * icall.c: use mono_array_addr instead of array->vector: fixes the
35169         reflection image writing.
35170         * reflection.c: init call convention byte to 0 in method signature.
35171         Encode the property signature. Don't output property-related methods
35172         twice. Really process the properties for a type (don't cast a field to
35173         a property, my mom always told me that).
35174         Fix 64 bit issues in pointer alignment in a different and more
35175         readable way.
35176
35177 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
35178
35179         * loader.h: Removed type class from MonoDefaults, added monotype
35180
35181         * loader.c: Loaded MonoType, removed loading of Type
35182
35183         * icall.c (my_mono_new_object): Now returns a System.MonoType,
35184         and fills in System.Type._impl with a RuntimeTypeHandle rather
35185         than the actual MonoClass *
35186
35187         (ves_icall_type_from_handle): change from type_class to
35188         monotype_class
35189
35190         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
35191         implemented
35192
35193         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
35194         implemented
35195
35196         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
35197
35198         (ves_icall_System_Reflection_Assembly_GetType): implemented
35199
35200         (ves_icall_System_MonoType_assQualifiedName): implemented
35201
35202         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
35203
35204 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
35205
35206         * assembly.c (mono_assembly_open): Implement a cache for the
35207         assemblies. 
35208
35209         (mono_assembly_close): only destroy the assembly when the last
35210         reference is gone.
35211         
35212 2001-11-09  Dick Porter  <dick@ximian.com>
35213
35214         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
35215
35216 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
35217
35218         * class.c (mono_class_metadata_init): bug fix: compute the right slot
35219
35220 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
35221
35222         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
35223         from Martin Weindel.
35224         * object.h: add mono_string_chars ().
35225
35226 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
35227
35228         * reflection.c (build_compressed_metadata): Eliminates warnings
35229         and uses 64-bit clean code.
35230
35231         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
35232         (mono_type_equal): Change signature to eliminate warnings.
35233
35234 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
35235
35236         * icall.c, loader.c: remove the internalcall array constructors.
35237         Changes to match the new MonoArray structure.
35238         * object.h, object.c: an array object doesn't allocate an extra
35239         vector. Add mono_array_new_full () to create jagged arrays easily.
35240
35241 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
35242
35243         * metadata.h, metadata.c: add mono_metadata_field_info () to
35244         retreive all the info about a field from vairous tables.
35245         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
35246         * class.h, class.c: augment MonoClassField with more info.
35247         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
35248         policy and load a field's RVA if needed.
35249
35250 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
35251
35252         * class.c (mono_class_metadata_init): create a trampoline for all
35253         virtual functions instead of actually compiling them.
35254
35255 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
35256
35257         * class.h, class.c: include name in MonoClassField.
35258         * class.c: fix fundamental type of System.Object and System.String.
35259         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
35260         tokens in ldtoken.
35261         * icall.c: remove internalcalls for the Reflection stuff that is now
35262         done in C# code.
35263         * loader.c: mono_field_from_memberref () implementation.
35264         * mono-endian.c: thinko (s/struct/union/g).
35265         * object.c, object.h: make the mono_string_* prototypes actually use
35266         MonoString instead of MonoObject.
35267         * reflection.c, reflection.h: updates for changes in the reflection
35268         code in corlib: we use C structures that map to the actual C# classes.
35269         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
35270         fat method header if needed and use the info from the ILGenerator for
35271         methods. Handle fields in types. Misc fixes.
35272
35273 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
35274
35275         * class.c (mono_class_metadata_init): bug fix: always allocate
35276         space for static class data
35277
35278 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
35279
35280         * class.c (mono_compute_relative_numbering): use relative
35281         numbering to support fast runtime type checks.
35282
35283 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
35284
35285         * class.c (mono_class_create_from_typeref): added debugging output
35286         to print class name when MonoDummy is returned instead of real class
35287
35288 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
35289
35290         * class.c (mono_class_metadata_init): interface offset table now
35291         contains pointers into the vtable - this is more efficient for the jit
35292
35293 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
35294
35295         * class.c (mono_class_metadata_init): use a temporary vtable (the
35296         old algorithm only worked for the interpreter, but not for the jit)
35297
35298 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
35299
35300         * loader.c (method_from_memberref): use mono_class_get to get the
35301         class of an array instead of using System.Array directly.
35302         (mono_get_method): also add MEMBERREF methods to the method cache
35303         which usefull for arrays.
35304
35305 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
35306
35307         * pedump.c (arch_compile_method): added to compute vtable entry
35308
35309         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
35310         number of interfaces.
35311         
35312         * class.h: merged MonoArrayClass into MonoClass
35313
35314         * class.c (mono_class_create_from_typedef): compute the vtable size and
35315         allocate space to include the vtable inside MonoClass
35316         (mono_class_metadata_init): initialize the vtable
35317
35318 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
35319
35320         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
35321         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
35322         * image.c: endian fixes by Laurent Rioux.
35323         * object.h, object.c: rename MonoStringObject to MonoString and
35324         MonoArrayObject to MonoArray. Change some function names to conform to
35325         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
35326         guint16* as first argument, so don't use char*.
35327         Provide macros to do the interesting things on arrays in a portable way.
35328         * threads-pthread.c: updates for the API changes and #include <sched.h>
35329         (required for sched_yield()).
35330         * icall.c: updates for the API changes above.
35331         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
35332         platforms that need them.
35333
35334 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
35335
35336         * class.c: set the correct type for all the fundamental
35337         type when loading the class.
35338
35339 2001-10-05  Dick Porter  <dick@ximian.com>
35340
35341         * threads-pthread.c (pthread_mutex_timedlock): Simple
35342         compatibility version for C libraries that lack this call.
35343
35344 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
35345
35346         * class.c: MonoTypes stored in MonoClass are stored as
35347         fundamental MonoTypes when the class represents a
35348         fundamental type (System.Int32, ...).
35349         The TypeHandle return by ldtoken is a MonoType*.
35350         * icall.c: ves_icall_get_data_chunk () write out all the
35351         PE/COFF stuff. Implement ves_icall_define_method (),
35352         ves_icall_set_method_body (), ves_icall_type_from_handle ().
35353         * image.c: properly skip unknown streams.
35354         * loader.h, loader.c: add type_class to mono_defaults.
35355         * metadata.c, metadata.h: export compute_size () as
35356         mono_metadata_compute_size () with a better interface.
35357         Typo and C&P fixes.
35358         * pedump.c: don't try to print the entry point RVA if there is no entry point.
35359         * reflection.c, reflection.h: many cleanups, fixes, output method
35360         signatures and headers, typedef and typeref info, compress the metadata
35361         tables, output all the heap streams, cli header etc.
35362         * row-indexes.h: typo fixes.
35363
35364 2001-10-04  Dick Porter  <dick@ximian.com>
35365
35366         * object.h: Add a synchronisation mutex struct to MonoObject
35367
35368         * object.c (mono_new_object): Initialise the object
35369         synchronisation mutexes
35370
35371         * icall.c: System.Threading.Monitor internal calls
35372         
35373         * threads-pthread.h:
35374         * threads-pthread.c: System.Threading.Monitor internal calls
35375
35376         * threads-types.h: New file, includes the system-specific thread
35377         structures
35378         
35379         * threads-pthread-types.h:
35380         * threads-pthread-types.c: New files, handle pthread-specific
35381         synchronisation types
35382
35383         * threads-dummy-types.h: 
35384         * threads-dummy-types.c: New files of dummy support for
35385         thread-specific types
35386
35387         * metadata.c:
35388         * image.c:
35389         * pedump.c: include mono-endian.h not endian.h
35390         
35391         * Makefile.am: More threads files.
35392         Name mono-endian.h not endian.h
35393
35394 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
35395
35396         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
35397         stuff and implement a few more bits.
35398         * icall.c: a field needs to be dereferenced twice. Do not use the same
35399         name for two variables in the same scope.
35400         * image.c, image.h: cleanups.
35401
35402 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
35403
35404         * class.c (mono_class_metadata_init): bug fix: compute the right size
35405
35406 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
35407
35408         * icall.c: implemented some of the Reflection internalcalls.
35409         * image.c, image.h: start writing out the PE/COFF image.
35410         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
35411         that does the reverse than decode_blob_size ().
35412         * object.c: use mono_metadata_encode_value (). Move here
35413         temporary implementation of mono_string_to_utf8 ().
35414         * rawbuffer.c: make malloc_map static.
35415
35416 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
35417
35418         * metadata.c: fix type comparison for arrays.
35419         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
35420         Added a couple of new classes to monodefaults.
35421         * icall.c: added a couple of Reflection-related internalcalls.
35422         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
35423         Added a byval_arg MonoType to MonoClass.
35424
35425 2001-09-28  Dick Porter  <dick@ximian.com>
35426
35427         * icall.c:
35428         * threads-pthread.h: 
35429         * threads-pthread.c: Implemented internal calls for
35430         LocalDataStoreSlot operations.  Applied mutexes around all shared
35431         data.  Reworked the thread creation and Start() operations to
35432         avoid a race condition.
35433         
35434         * threads-dummy.h:
35435         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
35436
35437 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
35438
35439         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
35440
35441 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
35442
35443         * class.c, loader.c: warn and return NULL instead of erroring out.
35444         * icall.c: added System.AppDomain::getCurDomain().
35445         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
35446
35447 2001-09-25  Dick Porter  <dick@ximian.com>
35448
35449         * threads-pthread.h:
35450         * threads-pthread.c: Implemented timed thread joining and added
35451         System.Threading.Thread::Join_internal internal call
35452
35453         * icall.c: Added System.Threading.Thread::Join_internal internal call
35454
35455         * threads-dummy.h:
35456         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
35457
35458 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
35459
35460         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
35461         mono_string_intern () to implement the semantics of the ldstr opcode
35462         and the interning of System.Strings.
35463         * icall.c: provide hooks to make String::IsIntern and String::Intern
35464         internalcalls.
35465
35466 2001-09-23  Dick Porter  <dick@ximian.com>
35467
35468         * threads-dummy.c: 
35469         * threads-dummy.h: New files of dummy threading routines
35470
35471         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
35472         support code based on system specifics
35473
35474         Rename PTHREAD_LIBS to THREAD_LIBS
35475         
35476 2001-09-23  Dick Porter  <dick@ximian.com>
35477
35478         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
35479         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
35480         internal calls.
35481         (mono_thread_init): Set up a Thread object instance to return when
35482         the main thread calls Thread.CurrentThread
35483         (mono_thread_cleanup): Wait for all subthreads to exit
35484
35485         * icall.c: New internal calls for System.Threading.Thread::Sleep
35486         (including Schedule) and CurrentThread
35487
35488         * threads.h: New file, to insulate thread-specific stuff from the
35489         rest of the code
35490
35491 2001-09-21  Dick Porter  <dick@ximian.com>
35492
35493         * threads-pthread.h: 
35494         * threads-pthread.c: New file, for handling pthreads-style
35495         threading support.  Start() now starts a new thread and executes
35496         the ThreadStart delegate instance.
35497
35498         * icall.c: Added the internalcall for
35499         System.Threading.Thread::Start_internal
35500
35501         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
35502
35503 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
35504
35505         * loader.c: work around the different signatures for delegates
35506         constructors csc generates in compiled code vs the ones compiled in mscorlib.
35507
35508 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
35509
35510         * class.h, class.c: add mono_class_get_field_from_name ().
35511         * *: Fix C comments and other ANSI C issues.
35512
35513 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
35514
35515         * endian.h, assembly.c: fix some endianness issues.
35516
35517 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
35518
35519         * loader.h, load.c: add delegate_class to mono_defaults.
35520         Handle runtime provided methods in mono_get_method ().
35521
35522 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
35523
35524         * loader.c (mono_get_method): use pinvoke for internal call
35525
35526         * icall.c: use pinvoke for internal call
35527
35528         * loader.c (method_from_memberref): set the method name
35529
35530 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
35531
35532         * metadata.c: help the compiler generate better code for
35533         mono_class_from_mono_type ().
35534
35535 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
35536
35537         * class.c (mono_class_metadata_init): delayed computing of the
35538         class size to mono_class_metadata_init ()
35539
35540 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
35541
35542         * class.c, class.h: add an interfaces member to MonoClass.
35543         * image.c, image.h: add assembly_name field to MonoImage
35544         from the assembly table.
35545         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
35546
35547 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
35548
35549         * class.c: Handle Array in mono_class_from_mono_type ().
35550         * metadata.c, pedump.c: some endian fixes.
35551
35552 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
35553
35554         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
35555         * metadata.c: fix small problem introduced with the latest commit.
35556
35557 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
35558
35559         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
35560         We don't need a MonoMetadata pointer anymore to compare signatures in
35561         mono_metadata_signature_equal (), update callers.
35562         Reduced memory usage an number of allocations for MonoMethodHeader and
35563         MonoMethodSignature.
35564
35565 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
35566
35567         * metadata.c: added compare for szarray.
35568
35569 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
35570
35571         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
35572         and add a couple more types to it and mono_defaults. Give an hint on
35573         classes that need implementing in our corlib and are referenced
35574         in mscorlib.
35575
35576 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
35577
35578         * class.h, class.c: keep track if a class is also an Enum.
35579         * loader.c: Implement a couple more types for use in libffi
35580         marshalling. Gives better diagnostics when failing to dlopen
35581         a library. Set method->klass for P/Invoke methods, too.
35582
35583 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
35584
35585         * class.c, class.h: add a MonoType this_arg to MonoClass that
35586         represents a pointer to an object of the class' type that
35587         can be used by the interpreter and later the type cache.
35588         Add best guess alignment info for valuetype objects.
35589
35590 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
35591
35592         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
35593         into MonoType: one less level of indirection and allocation and
35594         simplifies quite a bit of code. Added cache for MonoTypes that are
35595         used frequently, so that we don't need to allocate them all the time.
35596
35597 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
35598
35599         * class.c (mono_class_create_from_typedef): System.Enum is also a
35600         value type, although it does not derive from System.ValueType
35601         (maybe a bug in the ms compiler?)
35602
35603         * metadata.c (mono_type_size): return the right size for value types
35604
35605         * loader.c (mono_get_method): only initialize method header if not abstract
35606
35607         * class.c (mono_class_from_mono_type): use mono_default values. 
35608
35609 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
35610
35611         * *: use MonoClass pointers instead of <type_tokens>
35612         
35613         * class.h: new flag: metadata_inited.
35614
35615         * class.c (mono_class_metadata_init): impl.
35616         (mono_class_instance_size): impl.
35617         (mono_class_data_size): impl.
35618
35619 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
35620
35621         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
35622         MonoClass now has the name and name_space fields. 
35623         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
35624         mono_get_method () takes and optional MonoClass as argument.
35625         Removed mono_typedef_from_name() and added mono_class_token_from_name()
35626         instead that takes advantage of a map from class names to typedef
35627         tokens in MonoImage.
35628
35629 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
35630
35631         * metadata.c: zero is not a valid alignment boundary.
35632         Merge MONO_TYPE_VOID in default decoding code.
35633
35634 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
35635
35636         * image.h: merged MonoMetadata into MonoImage
35637
35638         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
35639         identify the type of elements.
35640
35641 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
35642
35643         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
35644         * cil-coff.h: split MonoMSDOSHeader and add size info.
35645         * image.c: add some consistency checks.
35646         * metadata.c: fix row size computation: one programmer
35647         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
35648         add explanation for the locator routine.
35649         Fix decoding of size in method header.
35650         
35651 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
35652
35653         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
35654         (g_concat_dir_and_file): Bring g_concat_dir_and_file
35655         function from gnome-libs.  This uses the right path separator
35656         based on the OS, and also works around a bug in some systems where
35657         a double slash is not allowed. 
35658         (default_assembly_name_resolver): Use g_concat_dir_and_file
35659         (mono_assembly_open): ditto.
35660
35661 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
35662
35663         * metadata.c (mono_metadata_signature_equal): impl.
35664
35665         * *: void is now a realy MonoType (instead of using NULL)
35666         
35667         * metadata.c (do_mono_metadata_parse_type): use
35668         mono_metadata_parse_type to parse void value.
35669
35670 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
35671
35672         * metadata.c, metadata.h: in the signature and method header store
35673         only the space required for holding the loca vars and incoming arguments.
35674
35675 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
35676
35677         * metadata.c (do_mono_metadata_parse_type): treat void like any
35678         other type (instead of assigning NULL);
35679
35680 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
35681
35682         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
35683
35684 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
35685
35686         * image.c (do_mono_image_open): added a cache for arrays.
35687
35688 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
35689
35690         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
35691         decode a single column from a row in a metadata table and changes
35692         to take advantage of it in the typedef locator (gives a nice speed up).
35693         Store offset info for function params.
35694
35695 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
35696
35697         * image.h (MONO_IMAGE_IS_CORLIB): removed 
35698
35699 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
35700
35701         * assembly.c: how could mono_assembly_close () had ever worked?
35702         * metadata.c, metadata.h: provide offset info for local vars.
35703         Implement mono_type_size () to take care of alignment as well
35704         as size (it was mono_field_type_size in cli/class.c before).
35705
35706 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
35707
35708         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
35709
35710         * assembly.h (CORLIB_NAME): set to corlib.dll
35711
35712         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
35713
35714 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
35715
35716         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
35717         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
35718         tokentype.h: massive namespace cleanup.
35719
35720 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
35721
35722         * metadata.h, metadata.c: decode exception clauses when parsing method header.
35723
35724 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
35725
35726         * metadata.c (mono_metadata_free_type): added check for type !=
35727         NULL (void) before calling mono_metadata_free_type()
35728
35729 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
35730
35731         * metadata.h, row_indexes.h: added header with enumerations to use
35732         to index in the columns from tables in metadata and to decode coded
35733         tokens: we should start using this instead of embedding magic numbers
35734         all over the code.
35735
35736 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
35737
35738         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
35739         Move metadata_t info from cli_image_info_t to MonoImage, where
35740         it's easily accessible. Changed all the uses accordingly.
35741         Added the method and class caches to MonoImage.
35742         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
35743         and mono_metadata_decode_value () signature to be more consistent
35744         with the other parse functions (and simplify code). Taken advantage
35745         of zero-length array allocation with GCC. Removed reduntant (and
35746         wrong) MonoFieldType struct and use MonoParam instead. Changed
35747         mono_metadata_parse_field_type () to use common code for parsing.
35748         Added mono_metadata_typedef_from_field () and
35749         mono_metadata_typedef_from_method () to lookup a typedef index from a
35750         field or method token.
35751         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
35752
35753 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
35754
35755         * metadata.c (mono_metadata_parse_field_type): Implement. 
35756         (do_mono_metadata_parse_type): Split engine from
35757         mono_metadata_parse_type, so that we can create smaller structures
35758         for things that just have one pointer to the MonoType (look at
35759         the MonoFieldType)
35760
35761 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
35762
35763         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
35764         as Jan Gray found out, it is incorrect. 
35765
35766 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
35767
35768         * assembly.c: Implement asssembly loading.  This loads an image
35769         and loads all the referenced assemblies.  Come to think of it, we
35770         could always do lazy loading of the assemblies. 
35771
35772         * image.c (mono_image_open): Keep loaded images in a hashtable.
35773
35774         * image.h (MonoImage): Add reference count.
35775
35776 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
35777
35778         * assembly.c (mono_assembly_open): Keep track of the file name in
35779         case the assembly has no ASSEMBLY table.
35780
35781         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
35782         from get.c here.
35783
35784 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
35785
35786         * metadata.c, metadata.h: decode local vars in method header
35787         parse function. Change callers accordingly.
35788
35789 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
35790
35791         * metadata.h, cil-coff.h: protect against multiple inclusion.
35792         Added some new structures to hold information decoded from metadata:
35793         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
35794         and relevant decoding/free functions.
35795         * metadata.c: implement decoding functions. Add warning for out of bounds
35796         index in mono_metadata_locate(). Implement mono_get_method () to retreive
35797         all the info about a method signature and invocation. Remove check on
35798         uninitialized local var in parse_mh() and fix memory leak.
35799
35800 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
35801
35802         * metadata.h: More macros.
35803
35804         * tokentype.h: New file.
35805
35806 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
35807
35808         * assembly.c: added a consistency check and initialize
35809         some structures with g_new0().
35810         * metadata.c: fixed a couple more bugs in table size computation
35811         and add other checks for out-of bound access to metadata.
35812
35813 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
35814
35815         * metatada.c: fix bugs computing table sizes. Spew a
35816         warning when index in string heap is out of bounds.
35817
35818 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
35819
35820         * metadata.h: Add a couple of macros to manipulate tokens. 
35821
35822 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
35823
35824         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
35825         cli_section_tables).
35826
35827 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
35828
35829         * metadata.c (mono_metadata_user_string): New function, provides
35830         access to the UserString heap. 
35831
35832 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
35833
35834         * metadata.c: Add inline documentation.
35835
35836 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
35837
35838         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
35839         files. 
35840
35841 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
35842
35843         * typeattr.h: New file, TypeAttribute flags. 
35844
35845 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
35846
35847         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
35848         mono_assembly_ensure_section): Section loading code.
35849         (load_section_tables): Load the sections.
35850
35851         * mono/metadata/metadata.c (mono_metadata_locate_token,
35852         mono_metadata_locate): Functions to locate the information
35853         definition given a token or a table and an index.
35854         (mono_metadata_compute_table_bases): New.
35855         (compute_size): New function to compute the sizes of the various
35856         tables.
35857
35858         * mono/metadata/metadata.h: Finish listing the different index
35859         types. 
35860
35861         * mono/metadata/pedump.c: Improve to dump new information.
35862
35863 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
35864
35865         * mono/metadata/metadata.c: Entered all the tables matching
35866         Beta2. 
35867
35868         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
35869
35870
35871
35872