In metadata/
[mono.git] / mono / metadata / ChangeLog
1 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2
3         * class.c (mono_set_generic_sharing_supported): New internal function.
4         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
5
6 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
7
8         * metadata-verify.c: Verify the exported type table.
9
10 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
11
12         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
13
14 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
15
16         * metadata-verify.c: Verify the file table.
17
18 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
19
20         * metadata-verify.c (verify_assembly_table): Fix an error message.
21
22         * metadata-verify.c: Verify the assemblyref table.
23
24 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
25
26         * metadata-verify.c (verify_assembly_table): Fix the valid
27         bits mask for flags.
28
29 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
30
31         * debug-helpers.c (mono_method_full_name): Print generic parameters of
32         generic methods as well.
33
34 2009-05-15  Geoff Norton  <gnorton@novell.com>
35
36         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
37         use-case and is significantly more performant than the wapi layer.
38
39 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
40
41         * metadata-verify.c: Verify the assembly table.
42
43 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
44
45         * metadata-verify.c: Fix rows limit check.
46
47 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
48
49         * metadata-verify.c: Verify the fieldrva table.
50
51 2009-05-13  Mark Probst  <mark.probst@gmail.com>
52
53         * sgen.c: Speed up weak links and finalizers by grouping them by
54         generation.
55
56 2009-05-13  Mark Probst  <mark.probst@gmail.com>
57
58         * marshal.c (delegate_hash_table_add): When overwriting an entry,
59         free the old GCHandle (only applies to SGen).
60
61 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
62
63         * loader.c (mono_get_method_from_token): Avoid the expensive call to
64         mono_metadata_load_generic_params () for non-generic methods.
65
66 2009-05-12  Mark Probst  <mark.probst@gmail.com>
67
68         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
69         New function for returning a monitor's weak link if it has one.
70
71         * sgen-gc.c: Remove an object's monitor's weak link (if it has
72         one) when clearing a domain.  These can still be around because
73         the object might not have been collected.
74
75 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
76
77         * gc.c: Fix a warning.
78
79 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
80
81         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
82         prevous wait that resulted in a deadlock on Windows when initializing
83         the runtime form DllMain. Also results in improved startup time.
84         (finalizer_thread): Get rid of thread_started_event.
85         * threads.c, threads-types.h (mono_thread_create_internal): Return the
86         resulting MonoThread.
87
88         Contributed under MIT/X11 license.
89
90 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
91
92         * metadata-verify.c: Verify the implmap table.
93         Don't require that #US and #Strings be present.
94
95 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
96
97         * security-core-clr.c: Delegate checks are done at creation time,
98         not a invocation time. Fix exception for Telerik Silverlight demo
99
100 2009-05-11  Mark Probst  <mark.probst@gmail.com>
101
102         * sgen-gc.c (need_remove_object_for_domain): Remove the special
103         case for the Thread class.
104
105         * threads.c: Do clean-up of abort exception/state in
106         thread_cleanup() instead of Thread.free_internal().  Also clean up
107         current_appcontext.  The reason we have to do that is because
108         those references might point into another domain and if that
109         domain is unloaded before the thread is finalized, they point to
110         invalid data.
111
112 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
113
114         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
115         stub signatures.
116         
117         Contributed unter MIT/X11 license.
118
119 2009-05-09  Miguel de Icaza  <miguel@novell.com>
120
121         * verify.c, metadata-verifier.c: Add support for disabling the
122         verifier in some builds.
123
124         [ Sorry, my previous commit accidentally commited some work in
125         progress ]
126
127 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
128
129         * class.c (mono_class_setup_fields): Set class->field.first for
130         generic instances.
131
132 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
133
134         * metadata-verify.c: Verify the typespec table.
135
136 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
137
138         * metadata-verify.c: Verify the module table.
139
140 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
141
142         * metadata-verify.c: Verify the methodimpl table.
143
144 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
145
146         * metadata-verify.c: Verify the property table.
147
148 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
149
150         * debug-helpers.c (mono_method_desc_match): Add support for generic
151         glob patterns.
152
153 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
154
155         * metadata-verify.c: Verify the propertymap table.
156
157 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
158
159         * metadata-verify.c: Verify the event table.
160
161         * metadata-verify.c (search_sorted_table): Fix offset
162         calculation.
163
164 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
165
166         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
167
168 2009-05-01  Mark Probst  <mark.probst@gmail.com>
169
170         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
171         because mono_delegate_free_ftnptr() needs it.
172
173 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
174
175         * metadata-verify.c: Verify the eventmap table.
176
177 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
178
179         * metadata-verify.c: Verify the standalonesig table.
180
181 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
182
183         * metadata-verify.c: Verify the field layout table.
184
185 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
186
187         * class.c (mono_type_get_name_recurse): Don't crash
188         for ownerless generic params.
189
190         * debug-helpers.c (mono_type_get_desc): Correct the format
191         for ownerless generic params.
192
193 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
194
195         * metadata-verify.c: Verify the class layout table.
196
197 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
198
199         * metadata-verify.c: Verify the decl security table.
200
201 2009-04-30  Mark Probst  <mark.probst@gmail.com>
202
203         * domain.c (mono_domain_set_internal_with_options): Don't do
204         anything if the old domain is the same as the old one.  Fixes
205         #499326.
206
207 2009-04-30  Mark Probst  <mark.probst@gmail.com>
208
209         * appdomain.c: Deregister the reflection_info roots when unloading
210         a domain.
211
212         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
213         memory allocated by a domain and frees its disappearing links.
214
215         * boehm-gc.c, null-gc.c: Empty implementation of
216         mono_gc_clear_domain().
217
218 2009-04-30  Mark Probst  <mark.probst@gmail.com>
219
220         * appdomain.c (clear_cached_vtable): Free the static fields memory
221         block.
222
223 2009-04-30  Mark Probst  <mark.probst@gmail.com>
224
225         * gc.c: Set the correct domain when invoking finalizers.
226
227         * appdomain.c: Set the correct domain when creating threads.
228
229 2009-04-30  Mark Probst  <mark.probst@gmail.com>
230
231         * sgen-gc.c: Fix skip size for vectors.
232
233 2009-05-03  Martin Baulig  <martin@ximian.com>
234
235         * mono-debug-debugger.c
236         (mono_debugger_check_breakpoints): Check class init handlers even
237         if we don't have any method load handers.
238
239 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
240
241         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
242         returning refonly assemblies if refonly is FALSE. Fixes #499013.
243
244 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
245
246         * metadata-verify.c: Verify the field marshal table.
247
248 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
249
250         * metadata-verify.c: Verify the custom attribute table.
251
252 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
253
254         * metadata-verify.c: Verify the constant table.
255
256 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
257
258         * metadata-verify.c: Verify the memberef table.
259
260 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
261
262         * metadata-verify.c (get_coded_index_token): Remove
263         dead argument.
264
265 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
266
267         * metadata-verify.c: Verify the interfaceimpl table.
268
269 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
270
271         * verify.c: Improve error message.
272
273         * debug-helpers.c (mono_type_get_desc): Harden the code that
274         deals with VAR and MVAR.
275
276 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
277
278         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
279         part of #498692.
280
281 2009-04-23 Tom Hindle <tom_hindle@sil.org>
282
283         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
284         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
285
286 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
287
288         * security-core-clr.c: Avoid redundant checks for platform code, 
289         e.g. check for method and for class (very common) and check
290         for class and outer class (less common)...
291
292 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
293
294         * reflection.c: Avoid returning random cattrs for synthetic methods.
295         Fixes #498545.
296
297 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
298
299         * assembly.c: assemblies in the GAC should never be shadow-copied.
300
301 2009-04-26  Mark Probst  <mark.probst@gmail.com>
302
303         * domain.c, domain-internals.h: Disable
304         track_resurrection_{objects,handles}_hash in MonoDomain if using
305         SGen.
306
307 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
308
309         * metadata-verify.c: Verify the param table.
310
311 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
312
313         * metadata-verify.c (verify_typedef_table): Range check FieldList and
314         MethodList.
315
316         * metadata-verify.c (verify_method_table): Proper check the ParamList
317         field.
318
319 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
320
321         * metadata-verify.c (verify_method_table): Check for runtime
322         implemented functions such as delegate .ctors. Remove spurious
323         printf.
324         
325 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
326
327         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
328
329 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
330
331         Don't allocate MonoGenericInfo for ownerless generic params.
332         * class-internals.h (MonoGenericParam::info): Move field to ...
333         (MonoGenericParamFull): ... this.  New struct.
334         (MonoGenericContainer::type_params): Change type to
335         MonoGenericParamFull.
336         (MonoGenericParam, MonoGenericContainer): Update accessors.
337         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
338         'info' field for ownerless generic param.
339         (mono_metadata_load_generic_params): Update to changes.
340         * reflection.c (mono_reflection_create_generic_class): Likewise.
341         (reflection_methodbuilder_to_mono_method): Likewise.
342         (mono_reflection_initialize_generic_parameter): Likewise.
343
344 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
345
346         Don't use MonoGenericParamInfo for ownerless generic params.
347         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
348         use ParamInfo class at all.
349         (mono_class_from_generic_parameter): Use them.
350         (make_generic_param_class): Fix a couple of instances where 'pinfo
351         == NULL' wasn't handle.
352
353 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
354
355         * class.c (make_generic_param_class): Carve out of ...
356         (mono_class_from_generic_parameter): ... here.
357
358 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
359
360         Simplify mono_class_from_generic_parameter
361         * class-internals.h (MonoGenericParamInfo::token): New field.
362         * metadata.c (mono_metadata_load_generic_params): Initialize it
363         from metadata.
364         * class.c (mono_class_from_generic_parameter): Use it instead of
365         searching through metadata.
366
367 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
368
369         * metadata-verify.c: Add verification of the method table.
370
371 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
372
373         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
374         Delegate::Invoke optimization.
375
376 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
377
378         * appdomain.c (mono_domain_create_appdomain_internal): Free the
379         string returned by get_shadow_assembly_location_base.
380
381         * appdomain.c (get_shadow_assembly_location_base): Add a comment
382         about caller's ownership.
383
384 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
385
386         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
387         reflection memory on domain unload.
388
389         * domain.c (mono_domain_free): Don't free refobject_hash, let the
390         reflection cleanup code do it.
391
392         * domain-internals.h: Add mono_reflection_cleanup_domain.
393
394         This fixes a memory leak for managed mirrors of reflection objects
395         on domain unload. 
396
397 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
398
399         * metadata-verify.c: Implement more verification of the field table.
400
401 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
402
403         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
404         doesn't try to parse the input assembly, which can be broken.
405
406 2009-04-23  Mark Probst  <mark.probst@gmail.com>
407
408         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
409         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
410         by using the lowest bit in the link to store whether the link is
411         tracked.  Move the track_resurrection hashes into boehm-gc.c.
412
413 2009-04-22  Miguel de Icaza  <miguel@novell.com>
414
415         * Makefile.am: Split the console support in platform specific code
416         and put together a framework for making this easy in the future so
417         that we can start splitting code instead of having a mess of PLATFORM_WIN32
418
419 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
420
421         * pedump.c: Fix a warning.
422
423 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
424
425         * verify.c (mono_delegate_type_equal): Compare valuetypes using
426         mono_class_from_mono_type to avoid bad interactions with the dual representation
427         of the generic type definition.
428
429 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
430
431         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
432         get the MonoClass for the call context type as it might be a generic
433         instance.
434
435         Fixes #491483.
436
437 2009-04-21  Mark Probst  <mark.probst@gmail.com>
438
439         * object-internals.h: The Thread object has no execution_context
440         member anymore.
441
442         * threads.c, threadpool.c, threads-types.h: Accessor functions for
443         the execution context.
444
445         * appdomain.c: Bump corlib version.
446
447 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
448
449         * verify.c (do_newobj): Improve error message.
450
451 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
452
453         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
454         is nested in the filter block.
455
456         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
457         block is not fully nested.
458
459         Fixes #495656.
460
461 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
462
463         * verify.c (verify_type_compatibility_full): Compare MonoClass and
464         not MonoType to check for equality of valuetypes as the generic type
465         definition allows for two different encodings: the generic type definition
466         class or a generic instance over the GTD arguments.
467
468         Fixes #496175.
469
470 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
471
472         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
473
474         * verify.c (do_initobj): Improve error message.
475
476 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
477
478         * metadata-verify.c: Enable pe verification as the issue with #496453
479         is that the authenticode data directory have a different unspecified
480         format. Ignore it for now.
481
482         * pedump.c: Run the metadata verifier together with the IL verifier.
483
484         Fixes ##496453.
485
486 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
487
488         * metadata-verify.c: Temporarily disable pe verification due to #496453.
489
490 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
491
492         * class.c (can_access_type): Check visibility against
493         the element type for pointers and arrays.
494
495         Fixes #496150.
496
497 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
498
499         * metadata-verify.c: Fix cli and table verification to use information
500         from the MonoImage. A lot of duplicated code got killed.
501
502 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
503
504
505         This patch starts to integrate the metadata verifier with the runtime code.
506
507         This patch causes major regression in functionality for the metadata verifier
508         as cli and table verification are disabled since they require to be ported to
509         use MonoImage information.
510
511         * image.c (do_mono_image_load): Split the code in this function
512         into mono_image_load_pe_data and mono_image_load_cli_data.
513         Add     care_about_pecoff parameter to not load pecoff data.
514         Call into the metadata verifier for pecoff and cli verification.
515
516         * image.c (mono_image_open_raw): New function that doesn't perform
517         any parsing of the image contents.
518         
519         The reason for the 3 new functions is to give pedump better control
520         into the interaction with the verifier.
521
522         * metadata-internals.h: Add new functions from image.c as part of the
523         internal mono API.
524
525         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
526         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
527         to make those functions work together with the runtime.
528
529         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
530         true if the image needs to be verified.
531
532         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
533
534         * pedump.c: Use new metadata verifier API.
535
536 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
537
538         * object.c (mono_install_vtable_trampoline): Make this receive a
539         trampoline creation function instead of trampoline, allowing the JIT
540         to use a different trampoline for each vtable.
541
542 2009-04-18  Mark Probst  <mark.probst@gmail.com>
543
544         * object.c (mono_raise_exception): Don't reset the thread abort
545         exception state here.
546
547 2009-04-18  Mark Probst  <mark.probst@gmail.com>
548
549         * icall-def.h: New icall for getting the thread abort exception
550         state for a thread.
551
552         * object.c, thread.c, object-internals.h: A thread's abort
553         exception state is now a GC handle.  To get the object it stands
554         for, we must move it into the current app domain, if it's
555         different than the one where it originated from.
556
557         * appdomain.c: Bump corlib version.
558
559         * domain.c, domain-internals.h: New function for setting the
560         domain and migrate the thread abort exception or not.
561
562 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
563
564         * metadata-verify.c: Add initial verification of the
565         field table.
566
567 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
568
569         * metadata-verify.c: Add a macro to conditionally enable
570         dumping of verification information. Add  make_coded_token
571         and search_sorted_table to enable search sorted tables
572         by a given coded token.
573
574 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
575
576         * metadata-verify.c: Add array mapping from table index
577         to description offset. Add get_col_offset and get_col_size
578         functions.
579
580 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
581
582         * metadata-verify.c: Add remaining table descriptions offsets.
583         Add remaining coded index descriptions.
584
585 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
586
587         * metadata-verify.c: Fixed constant table description.
588         Fixed calculation of HasCustomAttribute coded index size.
589         Fixed calculation of size for many table indexes. 
590
591 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
592
593         * pedump.c (dump_metadata): Dump table offset instead
594         of useless pointer in memory.
595
596 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
597
598         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
599
600 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
601
602         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
603         a missing of for interface types.
604
605 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
606
607         * metadata-verify.c (verify_pe_optional_header): Add comment of why
608         the code is commented.
609
610         * metadata-verify.c (verify_resources_table): Remove spurious printf
611         and don't fail if there are unmanaged resources. Gmcs generates a useless
612         one     for all assemblies - I bet it's some MS compatibility junk.
613
614 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
615
616         * metadata-verify.c (verify_typedef_table): Verify the extends field.
617
618         * metadata-verify.c (mono_image_verify): Add a is_corlib.
619
620         * verify-internals.h: Same.
621
622         * pedump.c: Fix for mono_image_verify new signature.
623
624 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
625
626         * metadata-verify.c (verify_typedef_table): Verify for some invalid
627         flags combinations.
628
629 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
630
631         * metadata-verify.c (verify_module_table): Ignore the generation field.
632
633 2009-04-15  Martin Baulig  <martin@ximian.com>
634
635         * debug-mono-symfile.c
636         (mono_debug_symfile_lookup_location): Don't print a warning for
637         unknown extended opcodes if they're within 0x40 and 0x7f.
638
639 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
640
641         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
642         invoke signatures returning an enum. Fixes #494847.
643
644 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
645
646         * metadata-verify.c: Initial code to verify the typedef table.
647
648 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
649
650         * verify.c (mono_method_verify): Don't fail if an unconditional branch
651         with non empty stack happens before the beginning of a try block.
652
653         Fixes #494812.
654
655 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
656
657         * metadata-verify.c: Verify typename and typenamespace fields of
658         the typeref table.
659
660 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
661
662         * metadata-verify.c: Initial code to verify the typeref table.
663
664 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
665
666         * verify.c (verify_delegate_compatibility): Fix error message.
667
668 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
669
670         * security-core-clr.c: Fix typo
671
672 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
673
674         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
675         a MonoGHashTable to keep its values alive.
676         (emit_marshal_boolean): Fix a warning.
677
678 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
679
680         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
681         not have any interface configured for IPv4/IPv6.
682
683 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
684
685         * assembly.c: fix typo in error message.
686
687 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
688
689         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
690         allocating the location holding the this argument to prevent
691         'too many root sets' errors.
692
693         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
694         to mark fields as special static.
695         (mono_field_static_get_value): Handle special static fields.
696         (mono_field_static_set_value): Ditto.
697
698         * class-internals.h (struct _MonoClassField): Document this.
699
700 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
701
702         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
703           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
704           case.  This will handle when managed code returns null to native code.
705
706         Code is contributed under MIT/X11 license.
707
708 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
709
710         * object.c (build_imt_slots): Changing a free to a g_free to match
711           the g_malloc0 in add_imt_builder_entry that allocated this memory.
712
713         Code is contributed under MIT/X11 license.
714
715 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
716
717         * marshal.c (emit_marshal_boolean): Adding code to ensure that
718           the correct TRUE value is passed through the marshaling layer.
719
720         Code is contributed under MIT/X11 license.
721
722 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
723
724         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
725         correctly. Fixes #492330.
726         
727         * marshal.c: Fix the embedding of object pointers into JITted code in
728         the native-to-managed wrappers by allocating some GC tracked memory, and
729         embedding the address of that.
730
731 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
732
733         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
734         pointers into the vtable.
735
736 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
737
738         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
739
740         * verify.c (verify_ldftn_delegate): Improve error message.
741
742 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
743
744         * reflection.c (my_mono_class_from_mono_type): Remove.
745
746 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
747
748         Prepare to reduce memory usage of owner-less generic parameters (1/n)
749         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
750         and constraints fields into ...
751         (MonoGenericParamInfo): ... this.
752         (mono_generic_param_info, mono_generic_container_get_param_info):
753         New accessors.
754         * class.c, debug-helpers.c, icall.c: Update to changes.
755         * metadata.c, reflection.c, verify.c: Likewise.
756
757 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
758
759         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
760
761         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
762         
763         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
764         booleans with sbytes.
765
766 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
767
768         * class.c (can_access_instantiation): Verify accesibility of element types
769         for arrays and pointers.
770
771         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
772
773         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
774
775         Fixes #493068.
776
777 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
778
779         * verify.c (do_invoke_method): Improve error messages.
780
781 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
782
783         * verify.c:  Fixing the MSVC build.
784
785         Code is contributed under MIT/X11 license.
786
787 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
788
789         * security-core-clr.c: Simplify get_reflection_caller not to call
790         mono_method_get_last_managed (another stack walk) and adjust the
791         callers to handle a (should not happen) NULL return value.
792
793 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
794
795         Add accessors to some MonoGenericParam fields
796         * class-internals.h (mono_generic_param_owner): New accessor.
797         (mono_generic_param_num): Likewise.
798         (mono_type_get_generic_param_owner): New helper.
799         (mono_type_get_generic_param_num): New helper.
800         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
801
802 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
803
804         * class-internals.h (mono_generic_container_get_param): New wrapper.
805         * class.c, icall.c, metadata.c, verify.c: Use it.
806
807 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
808
809         Fix gtest-252.cs
810         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
811         the standard case/loop.  In particular, don't complain about
812         references to generic type definitions.
813
814 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
815
816         * debug-helpers.c (dis_one): Decode string arguments.
817
818 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
819
820         * pedump.c (dump_verify_info): Dump type name correctly.
821
822 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
823
824         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
825         are larger than code size.
826
827         This can happen in valid code if the try/catch block is not followed by any instruction
828         and do a backward branch on the leave instruction.
829
830         Fixes #492494.
831
832 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
833
834         * security-core-clr.c: Fix typo while comparing second method names
835         in can_avoid_corlib_reflection_delegate_optimization
836
837 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
838
839         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
840
841         Fixes #487738.
842
843 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
844
845         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
846         a MVAR using a class context.
847
848         Fixes #490335.
849
850 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
851
852         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
853
854         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
855
856         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
857         functions supplied by the JIT for the SGEN GC.
858
859         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
860         
861 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
862
863         monitor.c (mono_monitor_try_enter_internal):
864         Added calls to profile monitor contentions.
865         Also duplicated a small piece of code (the "get the monitor" logic)
866         from the fast path to the slow path, and changed the relevant goto
867         statements, so that monitor acquisition events can be emitted from the
868         slow path (this is by Paolo Molaro).
869
870 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
871
872         * profiler.c, profiler.h, profiler-private.h:
873         Added support for profiling monitor contentions.
874
875 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
876
877         * metadata-verify.c: Verify the modules table.
878
879 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
880
881         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
882         using the context of the method been verifier and not of the method been called.
883
884         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
885         safely inflate generic types. 
886
887 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
888
889         * security-core-clr.c: Change the strategy for checking the 
890         "reflection using delegates optimization" to avoid unneeded 
891         attributes in multiple class libraries.
892
893 2009-04-02  Mark Probst  <mark.probst@gmail.com>
894
895         * sgen-gc.c: Remove object element in the disappearing link struct
896         by storing the object pointer in the link.
897
898 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
899
900         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
901
902 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
903
904         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
905
906         * verify.c (mono_method_verify): Do proper bounds checking of exception
907         clause ranges.
908
909 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
910
911         * loader.c (mono_field_from_token): Don't crash if the field parent could
912         not be decoded.
913
914 2009-03-31  Mark Probst  <mark.probst@gmail.com>
915
916         * sgen-gc.c: Execute critical finalizers after ordinary
917         finalizers.
918
919         * class-internals.h, domain.c: Add CriticalFinalizerObject to
920         mono_defaults.
921
922 2009-03-31 Jb Evain <jbevain@novell.com>
923
924         * verify.c (do_ldstr): don't check if a string is in the user strings
925         heap if the current image is dynamic.
926
927 2009-03-31  Mark Probst  <mark.probst@gmail.com>
928
929         * sgen-gc.c: Wait until the last finalizer has executed when
930         returning from WaitForPendingFinalizers.
931
932 2009-03-31  Martin Baulig  <martin@ximian.com>
933
934         * mono-debug-debugger.h (MonoDebuggerEvent): Add
935         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
936         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
937         (mono_debugger_event_create_appdomain): New function.
938         (mono_debugger_event_unload_appdomain): New function.
939
940         * appdomain.c (mono_domain_create_appdomain_internal): Call
941         mono_debugger_event_create_appdomain().
942
943 2009-03-31  Martin Baulig  <martin@ximian.com>
944
945         * mono-debug-debugger.c
946         (mono_debugger_register_class_init_callback): Also register the
947         class init callback if the class is already initialized to make
948         things work with shadow copied assemblies.
949
950 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
951
952         * security-core-clr.c
953         (mono_security_core_clr_ensure_reflection_access_field): Let 
954         critical code access the field (just like we do for methods). Use
955         check_field_access helper.
956         (mono_security_core_clr_ensure_reflection_access_method): Use 
957         check_field_access helper.
958
959 2009-03-31  Mark Probst  <mark.probst@gmail.com>
960
961         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
962         call the run-finalize function directly.
963
964         * gc.c, gc-internal.h: Make run_finalize() non-static.
965
966 2009-03-31  Mark Probst  <mark.probst@gmail.com>
967
968         * sgen-gc.c: Use a separate struct for disappearing links.
969
970 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
971
972         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
973         * MaxIOVectorLength enabled, just ignore them.
974         Fixes bug #349688.
975
976 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
977
978         * metadata-verify.c: Fix eglib build.
979
980 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
981
982         * threads-types.h: Fix the win32 build.
983
984 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
985
986         * class.c: move coreclr inheritance/override checks to 
987         security-core.clr.c
988         * security-core.clr.c|h: add code from class.c with additional
989         documentation. Fix override check when the method is not critical.
990
991 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
992
993         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
994         (match_class): Ditto.
995
996 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
997
998         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
999
1000         * metadata-verify.c: Implement table layout row size calculation. Verify
1001         the total size of the tables.
1002
1003 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1004
1005         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
1006
1007 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1008
1009         * appdomain.c:
1010         * console-io.[ch]: added new mono_console_init() to make sure that
1011         file descriptors 0, 1 and 2 are opened.
1012         Bug #489019 fixed.
1013
1014 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
1015
1016         * appdomain.h: Export a new callback type and a new function to
1017         set this callback. This allow a mono host to provide it's own
1018         definition for "platform code".
1019         * metadata-internals.h: Add a core_clr_platform_code flag on 
1020         _MonoImage to (cache and) know if it is representing platform 
1021         code.
1022         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
1023         on platform code images.
1024         * security-core-clr.c|h 
1025         (mono_security_set_core_clr_platform_callback): Allow the host
1026         to provide it's own platform check definition.
1027         (mono_security_core_clr_determine_platform_image): Detect if an 
1028         image is platform code (using the specified callback).
1029         (mono_security_core_clr_is_platform_image): Return cached value 
1030         for platform code.
1031
1032 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1033
1034         * threads.c (mono_create_thread): New helper function to wrap CreateThread
1035         which has different parameter types for the 'tid' argument in windows and
1036         the io-layer.
1037
1038         * appdomain.c attach.c threads.c: Use the new helper.
1039
1040 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1041
1042         * metadata-verify.c: Verify valid table bits.
1043
1044 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1045
1046         * metadata-verify.c (verify_metadata_header): Store size in the size field.
1047
1048         * metadata-verify.c: Add initial table schema verification.
1049
1050 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1051
1052         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
1053         obtain the refclass argument needed by mono_param_get_objects (). Fixes
1054         #488383.
1055
1056         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
1057
1058         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
1059
1060 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
1061
1062         * security-core-clr.c: Add/update documentation
1063
1064 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * marshal.c (emit_marshal_object): Generate code to throw an exception
1067         instead of throwing it. Fixes #488670.
1068
1069 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
1070
1071         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
1072         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
1073         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
1074         and add a call to mono_security_core_clr_ensure_delegate_creation
1075         to do the extra checks required by CoreCLR.
1076         * security-core-clr.c|h: Add function to check delegate creation,
1077         both in the binding and accessibility, under CoreCLR.
1078
1079 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
1080
1081         * reflection.c (mono_reflection_create_dynamic_method): when 
1082         coreclr is enabled make sure that every resolved object are
1083         checked (e.g. field and method access).
1084         * security-core-clr.c|h: Add function to check objects resolved
1085         when a dynamic method is created.
1086
1087 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1088
1089         * metadata-verify.c: Cache directory rva translations.
1090
1091         * metadata-verify.c: Add cli-header and streams verification.
1092
1093 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1094
1095         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
1096         the wrong offset (8 instead of 6).
1097
1098 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
1101         methods, return the native function address itself. Fixes
1102         #487758.
1103
1104 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1105
1106         * console-io.c: some of the values for control characters might not be
1107         present.
1108
1109 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
1110
1111         * exception.c|h: Add helpers to create [Field|Method]AccessException
1112         * icall.c: Add required coreclr check calls for field reflection.
1113         Move the existing (method) check logic into security-core-clr.c
1114         * security-core-clr.c: Add functions to check if the access of a
1115         field or method is allowed when reflecting under coreclr. This is
1116         mostly done using a stack walk to find the "real" caller: i.e. the
1117         code that is calling the reflection
1118
1119 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1120
1121         * gc-internal.h: Change location of gc_wrapper.h
1122
1123 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
1124
1125         * class.c: Simplification to coreclr checks for overrides that
1126         makes it easier to set breakpoints.
1127
1128 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
1129
1130         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
1131         mono_security_core_clr_method_level): Avoid potential 
1132         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
1133         user/application code) and make it easier to set breakpoints
1134
1135 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1136
1137         * metadata-verify.c: Reject cli header tables that mono don't handle.
1138
1139 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1140
1141         * pedump.c: Fix CLI header dumping.
1142
1143 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1144
1145         * metadata-verify.c: More CLI header verification.
1146
1147 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1148
1149         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
1150
1151 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1152
1153         * metadata-verify.c: Initial verification of the CLI header.
1154
1155 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1156
1157         * metadata-verify.c (verify_resources_table): Fix verification of zero
1158         sized resource section and id entries count.
1159
1160 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1161
1162         * icall.c: Handle user types in many Type icalls. Fixes #486303.
1163
1164 2009-03-17  Jb Evain  <jbevain@novell.com>
1165
1166         * profiler.c: call mono_gc_base_init from mono_profiler_load.
1167
1168 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1169
1170         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
1171         (mono_gc_make_descr_for_array): Ditto.
1172
1173 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1174
1175         * verify.c (mono_verifier_is_class_full_trust): Add support for
1176         CoreCLR security mode where trusted assemblies are defined as
1177         "platform code".
1178
1179 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1180
1181         * metadata-verify.c: Add minimal PECOFF resource verification.
1182
1183 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1184
1185         * metadata-verify.c: Be less restrictive with some coff fields.
1186
1187 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1188
1189         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
1190         params as boxed values on stack. Fixes #485706.
1191
1192 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1193
1194         * console-io.c: the termios values may vary in different flavors of unix.
1195
1196 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1197
1198         * console-io.[ch]: return the entire set of control characters when
1199         initializing the terminal.
1200         * appdomain.c: bump corlib version.
1201
1202 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
1203
1204         * mono-perfcounters.c: added support for in-process custom
1205         performance counters.
1206
1207 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1208
1209         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
1210
1211 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1212
1213         * metadata-verify.c: Verify the data pointed by the import table. 
1214
1215 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1216
1217         * metadata-verify.c (load_data_directories): Store data
1218         directory contents.
1219
1220         * metadata-verify.c: Verify the import table. 
1221
1222 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1223
1224         * metadata-verify.c: Verify data directories.
1225
1226 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1227
1228         * metadata-verify.c: Check section header flags.
1229
1230 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
1231
1232         * appdomain.c: if the assembly name is a shadow-copied file, return
1233         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
1234         in mono_make_shadow_copy.
1235         * icall.c: if the assembly name is a shadow-copied file, replace it
1236         with the original assembly path.
1237
1238         Bug #484244 fixed. NUnit tests for corlib can be run without
1239         --noshadow now.
1240
1241 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1242
1243         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
1244         entries when the table is reallocated.
1245
1246         * icall.c: Allocate the memory used by the mono_ptr_array macros using
1247         mono_gc_alloc_fixed () since it contains GC refs.
1248
1249 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * reflection.c (ensure_complete_type): New helper function to call
1252         type resolve handlers for unfinished dynamic types.
1253         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1254
1255 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1256
1257         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1258         #483247.
1259
1260 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1261
1262         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1263
1264 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1267         between GCHandles of type WeakTrackResurrection and the objects they
1268         point to.
1269
1270         * gc.c: Partly implement the sematics of GCHandles of type 
1271         WeakTrackResurrection: these handles should only be cleared after the
1272         finalizer of the object they are pointing to has ran.
1273
1274 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1275
1276         * icall.c: Partially revert r126631 because using the jump
1277         trampolines for generic shared methods makes it superfluous.
1278
1279 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1280
1281         * threads.c (handle_store): Create the 'threads' hash table with the proper
1282         MONO_HASH_VALUE_GC type.
1283
1284 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1287         FIRST_GC_TRACKED.
1288
1289         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1290         and LAST_GC_TRACKED as a GC root.
1291
1292         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1293
1294         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1295         the static data even if it consists of 1 reference.
1296
1297         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1298         if there is a GC descriptor.
1299
1300         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1301         instead of through the GC since they contain no object references.
1302
1303 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1304
1305         * generic-sharing.c (instantiate_other_info): Always return a jump
1306         trampoline for method code.
1307
1308 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1309
1310         * culture-info-tables.h: generated to include the en-tt culture.
1311
1312 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1313
1314         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1315         capture the thread context.
1316
1317         * object.c (mono_async_result_new): Cache the invoke wrappers to
1318         ExecutionContext::Capture.
1319
1320 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1321
1322         * marshal.h: Add a prototype for what mono_compile_method returns
1323         for invoke wrappers.
1324
1325         * gc.c: Use the new prototype declaration.
1326
1327 2009-03-04  Geoff Norton  <gnorton@novell.com>
1328
1329         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1330         * gc-internal.h:
1331         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1332
1333 2009-03-04  Martin Baulig  <martin@ximian.com>
1334
1335         * mono-debug.h
1336         (mono_debugger_runtime_invoke): Removed.
1337
1338         * mono-debug-debugger.c
1339         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1340
1341 2009-03-02  Martin Baulig  <martin@ximian.com>
1342
1343         * mono-debug.h
1344         (mono_debugger_unhandled_exception): Removed.
1345         (mono_debugger_handle_exception): Removed.
1346         (mono_debugger_throw_exception): Removed.
1347
1348         * mono-debug.c
1349         (mono_debug_debugger_version): Bump to 5.
1350
1351         * mono-debug-debugger.c: Moved the exception handling code to
1352         ../mini/debug-mini.c
1353
1354 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1357         finalize_objects_hash.
1358
1359         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1360         
1361         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1362         field.
1363
1364         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1365         cache.
1366
1367         * image.c (mono_image_close): Free it.
1368         
1369         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1370         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1371         on the this argument.
1372
1373         * gc.c (run_finalize): Optimize the calling of the finalizers.
1374
1375 2009-03-03  Martin Baulig  <martin@ximian.com>
1376
1377         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1378         of the `MonoGenericInst' changes.
1379
1380 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1381
1382         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1383         mono_array_class_get_cached to reduce locking contention. Extract
1384         a domain var.
1385
1386         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1387         intermediary managed arrays. Use caching version of mono_array_new
1388         to allocate the result array.
1389
1390         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1391
1392         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1393
1394         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1395         to reduce locking contention.
1396
1397 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1398                 
1399         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1400         thunk builder code for the non-interface case.
1401
1402 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * object.c (get_generic_virtual_entries): New helper function to collect
1405         the virtual generic method instances which need to be added to an IMT
1406         thunk.
1407         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1408         Instead of creating a new IMT thunk, reset the vtable slot to the
1409         trampoline, the thunk will be created the next time the trampoline is called.
1410         (build_imt_slots): Add support for virtual generic methods in interfaces by
1411         adding to the IMT thunk all the methods registered using 
1412         mono_method_add_generic_virtual_invocation ().
1413
1414         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1415         (struct _MonoIMTCheckItem): Ditto.
1416
1417         * object.c (mono_method_add_generic_virtual_invocation): Take a
1418         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1419         the IMT thunk to include all items.
1420         
1421         * object.c (mono_class_create_runtime_vtable): Add a missing
1422         mono_loader_unlock ().
1423
1424 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1425
1426         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1427
1428         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1429
1430 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1431
1432         * object-internals.h: Rename _MonoReflectionEvent to
1433         MonoReflectionMonoEvent so it reflects the right managed type.
1434         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1435
1436         * icall.c:
1437         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1438         type.
1439
1440 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1441
1442         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1443         intermediary managed arrays. Use caching version of mono_array_new
1444         to allocate the result array.
1445
1446 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1447
1448         * reflection.c: Use cached version of mono_array_new alongside
1449         the mono_reflection_get_custom_attrs_by_type call path.
1450
1451 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1452
1453         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1454         intermediary managed arrays. Use caching version of mono_array_new
1455         to allocate the result array.
1456
1457         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1458
1459 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1460
1461         * icall.c: Add small implementation of a growable stack bound array.
1462
1463         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1464
1465         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1466         intermediary managed arrays. Use caching version of mono_array_new
1467         to allocate the result array.
1468
1469 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1470
1471         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1472         helps Enum::CompareTo to be implemented without reboxing all enums
1473         to their underlying type.
1474 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1475
1476         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1477         since it acquires a global lock leading to scalability problems.
1478
1479         * profiler.c: Make the stat profiler work with multiple appdomains, this
1480         currently only works when no appdomains are unloaded.
1481
1482 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1483
1484         * appdomain.c: make the check to avoid copying when the assembly is
1485         already shadow copied actually work.
1486
1487 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1490
1491         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1492         changes to the managed side.
1493
1494 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1495
1496         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1497         classes + a separate lock for it, as it is used frequently at runtime, not
1498         just during metadata loading/JIT compilation.
1499
1500         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1501         for szarrays.
1502         
1503         * object-internals.h (mono_class_from_name_cached): New macro to cache
1504         the results of the lookup locally without having to declare a static
1505         variable to hold it.
1506         (mono_class_get_field_from_name_cached): Ditto.
1507         (mono_array_class_get_cached): Ditto.
1508
1509         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1510         the new macros.
1511         
1512         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1513         slower search in metadata.
1514
1515         * pedump.c: Fix a warning.
1516
1517 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1518
1519         * reflection.c (encode_locals): Add checks for user types.
1520         (method_encode_clauses): Ditto.
1521         (method_encode_code): Ditto.
1522         (mono_image_create_token): Ditto.
1523
1524         * object-internals.h: Change the type of more fields from MonoReflectionType*
1525         to MonoObject*.
1526
1527 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1528
1529         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1530         the a thread does not suspend within 100ms.
1531
1532         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1533         in addition to StopRequested as well.
1534
1535         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1536
1537         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1538         search the method_hash before inserting a new entry, to avoid crashes when
1539         the same method is inserted multiple times, causing the old 
1540         MonoDebugMethodInfo structure to be freed by the value dtor function.
1541
1542 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1543
1544         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1545         SO_EXLUSIVEADDRUSE where available.
1546
1547 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1550         runtime invoke wrappers, this time it is string ctor wrappers, which
1551         pass a dummy string as 'this' instead of their obj argument. Fixes
1552         #478473.
1553
1554 2009-02-21  Jb Evain  <jbevain@novell.com>
1555
1556         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1557         only get create_culture once.
1558
1559 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1562         check before the locking.
1563         
1564         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1565         (mono_reflection_create_runtime_class): Ditto.
1566         (mono_reflection_sighelper_get_signature_local): Ditto.
1567         (mono_reflection_sighelper_get_signature_field): Ditto.
1568
1569         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
1570         is a System.MonoType object or similar.
1571         (monotype_cast): New helper function to cast a MonoObject to a 
1572         MonoReflectionType object.
1573
1574         * object-internals.h: Change MonoReflectionType* members in structures to
1575         MonoObject* members to force the usage of the monotype_cast () function.
1576
1577         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
1578         structures/arrays. This causes us to assert instead of crashing when 
1579         instances of user defined subclasses of System.Type are encountered.
1580
1581 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1582
1583         * cil-coff.h:
1584         * icall-def.h:
1585         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
1586         win32 resource loaded from a PE file.
1587
1588         * image.c: fix mono_image_lookup_resource.
1589
1590 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1591
1592         * icall-def.h:
1593         * threads-types.h:
1594         * threads.c: added internal call for WaitHandle.SignalAndWait.
1595
1596 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
1597
1598         * cominterop.c : Adding cominterop_type_from_handle and 
1599           registering it as an icall.  Replacing all references
1600           to type_from_handle.
1601
1602         Code is contributed under MIT/X11 license.
1603
1604 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1605
1606         * Makefile.am: Add lock-tracer.h and lock-trace.c.
1607
1608         * appdomain.c: Call the tracer init function.
1609
1610         * domain-internals.h: Enable the tracer for the domain locks.
1611
1612         * image.c: Enable the tracer for image locks.
1613
1614         * loader.c: Enable the trace for the loader lock.
1615
1616         * lock-tracer.h:
1617         * lock-tracer.c: Initial implementation of the lock trace utility.
1618         The tracer requires a compile time define to be enabled and a env var
1619         to be enabled at runtime.
1620
1621 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1622
1623         * domain.c (mono_domain_code_foreach): Improve documentation.
1624
1625 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1626
1627         * appdomain.c:
1628         * generic-sharing.c:
1629         * object.c:
1630         * reflection.c:  Adjust locking order to the new semantics where the loader lock
1631         comes first.
1632
1633 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1634
1635         * domain.c: Add mono_domain_code_* functions that perform locking
1636         around the domain codeman.
1637
1638         * domain-internals.h: Export those functions.
1639
1640         * object.c: Use new functions instead of acquiring the domain lock.
1641
1642 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
1645         delegate. Fixes #477396.
1646
1647 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1648
1649         * reflection.c (create_custom_attr): Get rid of alloca.
1650
1651 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
1652
1653         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
1654           Adding exception handling for all CCW calls.
1655
1656         Code is contributed under MIT/X11 license.
1657
1658 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1659
1660         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
1661
1662         * marshal.c (emit_marshal_boolean): Add null checks to the new 
1663         native->managed marshalling code. Fixes #476247.
1664
1665 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1666
1667         * class.c (mono_class_get_vtable_entry): Move the addition of
1668         static rgctx invoke wrappers for vtable methods here, this simplifies
1669         a lot of code and causes fewer rgctx wrappers to be created.
1670
1671         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
1672         name of the statistics to begin with an uppercase.
1673
1674 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1675
1676         * reflection.c: Revert previous change as it breaks the build.
1677         
1678 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1679
1680         * verify.c: Properly handle SZARRAY element type.
1681
1682         Fixes #474271.
1683
1684 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1685
1686         * reflection.c (mono_image_create_method_token): Correctly encode
1687         MethodDef MemberRefParent token.
1688
1689         Fixes #472845.
1690
1691 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1692
1693         * image.c (mono_image_close): Delete the critical section before
1694         freeing the memory holding it.
1695
1696 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1697
1698         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
1699         Fixes #476257.
1700
1701 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1702
1703         * pedump.c (main): Call mono_marshal_init so pedump
1704         doesn't crash.
1705
1706 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1707
1708         * loader.c (method_from_memberref): Properly fix #474271 and
1709         don't break the runtime bad.
1710
1711 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1712
1713         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
1714         (mono_domain_alloc0): Ditto.
1715
1716 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1717
1718         * loader.c (method_from_memberref): Don't abort if the array
1719         method is not found. A regular loader failure is more informative
1720         and correct.
1721
1722         Fixes #474271.
1723
1724 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1725
1726         *loader.c: Guard MonoImage::method_cache/methodref_cache
1727         using the image lock instead of the loader lock.
1728
1729         * metadata.h: Add comments about which fields are protected by
1730         the image lock.
1731
1732 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1733
1734         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
1735
1736         * generic-sharing.c (mono_method_construct_object_context): Remove the
1737         wrapper_type == NONE assert, it is not needed.
1738
1739 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * reflection.c (clear_cached_object): New helper function.
1742         (mono_method_clear_object): New function to clear the cached reflection
1743         objects for a dynamic method.
1744
1745         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
1746         Partly fixes # 463323.
1747         
1748 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1749
1750         * class.c:
1751         * loader.c:
1752         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
1753
1754 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1755
1756         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
1757         take the image lock instead of the loader lock.
1758
1759         * metadata-internals.h: Export new functions.
1760
1761 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1762
1763         * domain.c (app_config_parse): Remove another use of stat that is
1764         not necessary as g_file_get_contents already does the presence
1765         check. 
1766
1767 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
1770
1771         * marshal.c: Move the bstr handling code to cominterop.c.
1772
1773         * marshal.c: Remove some COM interop code missed previously.
1774
1775 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1776
1777         More Paolo patches from the Wii port:
1778         
1779         * security.c: Remove ves_icall_System_Environment_get_UserName
1780         from here.
1781
1782         * icall.c: And put ves_icall_System_Environment_get_UserName
1783         here. 
1784
1785         * appdomain.c (mono_set_private_bin_path_from_config): Remove
1786         redundant call to stat that was only used to test for the file
1787         existence.   Patch from Paolo.
1788
1789         * gc.c (run_finalize): If COM is disabled, do not link in
1790         mono_marshal_free_ccw.
1791
1792         * generic-sharing.c: Use alloca.h here as well.
1793
1794 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
1795
1796         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
1797
1798 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * cominterop.c cominterop.h: New files.
1801
1802         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
1803         function/typedefs which are needed by cominterop.c global.
1804
1805 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1806
1807         * generic-sharing.c: Don't take the loader lock to guard image
1808         mempool allocs.
1809
1810 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1811
1812         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
1813         called without the loader lock which is required to guard MonoImage:tokens.
1814
1815 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1816
1817         * class.c:
1818         * metadata.c:
1819         * method-builder.c:
1820         * marshal.c:
1821         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
1822
1823 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1824
1825         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1826         Rework the code to use regular mono_image_alloc/0.
1827
1828         * loader.c: Rework the code to use regular mono_image_alloc/0.
1829
1830         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1831
1832 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
1833
1834         * object-internals.h : Fixing a typo in the 
1835           MonoReflectionComVisibleAttribute struct.
1836
1837         * marshal.c (cominterop_com_visible): Check the implemented 
1838           interfaces for ComImport.
1839
1840         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
1841           assume that bools should be treated as VARIANTBOOLs.
1842
1843         * marshal.c (emit_marshal_boolean): Adding cases for 
1844           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
1845
1846         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
1847           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
1848
1849         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
1850           should be treated as VARIANTBOOLs.    
1851
1852         Code is contributed under MIT/X11 license.
1853
1854 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1855
1856         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
1857         allocation with the image lock.
1858
1859 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1860
1861         This patch is the last of a series to remove explicit reference of MonoImage::mempool
1862         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
1863
1864         * object.c: Add mono_string_to_utf8_image.
1865
1866         * object-internals.h: Export mono_string_to_utf8_image.
1867
1868         * reflection.c: Rework all explicit references to the the image mempool to go thought
1869         the mono_image_alloc set of functions.
1870
1871 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1872
1873         This patch is the third of a series to remove explicit reference of MonoImage::mempool
1874         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
1875         and generics-sharing.c.
1876
1877         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
1878         as first argument. Note that this function remains broken as it doesn't perform locking around the
1879         mempool allocation.
1880
1881         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
1882
1883         * image.c: Add g_slist_append_image.
1884
1885         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
1886         the supplied image for allocation. Move code into mono_metadata_field_info_full.
1887
1888         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
1889         Fix all related code to do the same.
1890
1891         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
1892
1893         * metadata-internals.h: Fix the signatures.
1894
1895 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1896
1897         This patch is the second of a series to remove explicit reference of MonoImage::mempool
1898         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
1899         and similar to work using MonoImage.
1900
1901         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
1902         MonoMemPool.
1903
1904         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
1905
1906         * class.c (mono_metadata_signature_deep_dup): Same.
1907
1908         * class.c (inflate_generic_type): Same.
1909
1910         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
1911
1912         * metadata.c (mono_metadata_signature_dup_full): Same.
1913
1914         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
1915         mono_metadata_signature_dup_full.
1916
1917         * metadata.c (mono_metadata_type_dup): Same.
1918
1919         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
1920
1921         * reflection.c: Same.
1922
1923         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
1924
1925         * metadata-internals.h: Fix the signatures.
1926
1927         * class-internals.h: Same.
1928
1929 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1930
1931         This patch is the first of a series to remove explicit reference of MonoImage::mempool
1932         and use mono_image_alloc set of functions instead. 
1933
1934         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
1935         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
1936         of a MonoMemPool.
1937
1938         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
1939
1940         * class.c (g_list_prepend_mempool): Removed.
1941
1942         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
1943
1944         * image.c: Add g_list_prepend_image.
1945
1946         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
1947
1948         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
1949
1950
1951 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1952
1953         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
1954         mono_image_unlock.
1955
1956         * image.c (mono_image_init): Init the lock field.
1957  
1958         * image.c (mono_image_init): Cleanup the lock field.
1959
1960         * image.c: Add mono_image_(un)lock functions.
1961
1962 2009-02-11  Mark Probst  <mark.probst@gmail.com>
1963
1964         * class.c, class-internals.h: mono_method_get_context_general()
1965         combines the functionality of mono_method_get_context() and
1966         mini_method_get_context().
1967
1968         * generic-sharing.c, domain-internals.h:
1969         mono_method_construct_object_context() and
1970         mono_domain_lookup_shared_generic() moved from mini.
1971
1972         * icall.c (ves_icall_InternalInvoke): Handle the case where the
1973         method doesn't have the correct instantiation because it's shared
1974         generic code.  Fixes #473999.
1975
1976 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
1977
1978         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
1979
1980         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
1981         
1982 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
1983
1984         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
1985
1986         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
1987
1988         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
1989         and recheck the cache for dups after it.
1990
1991         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
1992
1993         Fixes one of the deadlocks found in #473150.
1994
1995 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
1996
1997         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
1998           For Win32, add additional break conditions for accept.
1999
2000         Code is contributed under MIT/X11 license.
2001
2002 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
2005         lazily initialize the native wrapper cache.
2006         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
2007         cache, since they are different from the normal wrappers.
2008
2009         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
2010
2011         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
2012         AOT compiled native wrappers.
2013
2014 2009-02-09  Geoff Norton  <gnorton@novell.com>
2015
2016         * appdomain.h:
2017         * security-core-clr.c: Allow enabling core-clr from the embedding
2018         API.
2019
2020 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2021
2022         * socket-io.c: when requesting all the local ips, if there are no
2023         interfaces up and running, MS returns 127.0.0.1.
2024
2025 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2026
2027         * mono-perfcounters-def.h: processor time is an inverse time.
2028         Fixes bug #468625.
2029
2030 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2031
2032         * socket-io.c: an empty host name returns the list of local IPs.
2033         Fixes bug #386637 part 1/2.
2034
2035 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2036
2037         * verify.c (mono_class_interface_implements_interface): Call
2038         mono_class_setup_interfaces ().
2039         (merge_stacks): Ditto.
2040
2041 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2042
2043         * class.c (mono_class_setup_interfaces): New function to lazily initalize
2044         klass->interfaces.
2045         (mono_generic_class_get_class): Don't initalize klass->interfaces.
2046         (mono_generic_class_get_class): Ditto.
2047
2048 2009-02-06  U-QUACK\miguel  <miguel@quack>
2049
2050         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
2051         they live in security.c
2052
2053         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
2054         another bit from Paolo's code.
2055
2056 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2057
2058         * object.c (build_imt_slots): Add a small optimization to avoid inflating
2059         methods which will be discarded by add_imt_builder_entry ().
2060
2061         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
2062         need to be boxed.
2063
2064         * loader.c: Add a statistics for the size of the memberref signature cache.
2065         
2066         * loader.c (find_cached_memberref_sig): New helper function.
2067         (cache_memberref_sig): Ditto.
2068
2069         * loader.c: Cache the result of parsing memberref signatures, since otherwise
2070         they will be parsed again for every generic instantiation, leading to unbounded
2071         memory growth.
2072
2073 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2074
2075         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
2076         parameters of generic methods.
2077
2078         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
2079         after the original method is copied to the inflated method.
2080         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
2081
2082         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
2083         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
2084
2085         * class.c metadata.c: Update after the changes above.
2086
2087 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2088
2089         * metadata-verify.c: Simplified error handling and added
2090         section table validation.
2091
2092 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * class-internals.h (MonoClassExt): New structure containing rarely used
2095         fields of MonoClass.
2096         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
2097         through a new 'ext' field.
2098
2099         * class.c (mono_class_alloc_ext): New helper function to allocate 
2100         class->ext.
2101
2102         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
2103
2104 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2105
2106         * object.c (mono_object_get_virtual_method): Properly inflate
2107         generic methods.  Fixes #472692.
2108
2109 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2110
2111         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
2112         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
2113         for the parent type, the created type must be ready to be used on a generic
2114         instantiation.
2115         We fill this_arg/byval_arg if the parent is a generic instance to make sure
2116         we won't have duplicated entries in generic_inst_cache.
2117
2118         Fixes #469553.
2119
2120 2009-02-05  Miguel De Icaza  <miguel@novell.com>
2121
2122         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
2123         replace with plain BSD per the comments on the bug MONO77637.
2124
2125 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * class.c (mono_class_get_generic_class): New accessor function.
2128         (mono_class_get_generic_container): Ditto.
2129
2130         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
2131         fields, similar to the ones in MonoMethod.
2132
2133         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
2134         (mono_class_create_from_typedef): Set klass->is_generic if needed.
2135
2136         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
2137         
2138         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
2139         the same information as element_class->byval_arg.
2140
2141         * class.c reflection.c: Remove references to class->byval_arg.
2142
2143         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
2144         klass->enum_basetype directly.
2145
2146         * verify.c metadata.c object.c icall.c reflection.c: Use 
2147         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
2148         directly.
2149
2150 2009-02-04  Miguel de Icaza  <miguel@novell.com>
2151
2152         * icall-def.h: Remove internal calls for sockets when
2153         DISABLE_SOCKET is defined, file system writing features when the
2154         OS only support reading and not writing data and Policy support if
2155         the Policy is disabled.
2156         
2157         * image.c (do_mono_image_open): Apply Paolo's patches for using
2158         mono_file_map_ APIs here.
2159
2160         * assembly.c: Add support for platforms to avoid prefix
2161         auto-detection. 
2162
2163 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
2166         warning.
2167
2168         * class.c (mono_class_inflate_generic_class): New helper function.
2169
2170         * class.c: Use mono_class_inflate_generic_class in a few places. Add
2171         statistics for inflated methods/classes.
2172
2173         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
2174
2175         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
2176         the call is made from Delegate.CreateDelegate () for the invoke method of
2177         a delegate.
2178
2179         * loader.c: Add a statistics for the memory occupied by inflated signatures.
2180
2181         * metadata.c (mono_metadata_signature_size): New helper function.
2182
2183         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
2184         generic instances.
2185
2186         * metadata.c (inflated_method_in_image): Avoid calling 
2187         mono_method_signature () if the method does not already have a signature.
2188
2189 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2190
2191         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
2192         valuetype is compatible with target type, check by inheritance as a
2193         VT is not really compatible with System.ValueType, for example.
2194
2195         * verify.c (do_invoke_method): Improve error message.
2196
2197         * verify.c (do_box_value): If boxing a nullable, use the type argument
2198         on stack instead.
2199
2200         * verify.c (do_newobj): Improve error message.  
2201
2202         Fixes #469549.
2203
2204 2009-02-03  Miguel de Icaza  <miguel@novell.com>
2205
2206         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
2207
2208 2009-02-03  Mark Probst  <mark.probst@gmail.com>
2209
2210         * generic-sharing.c: Don't hold domain lock when calling
2211         instantiate_other_info().  Fixes #471958.
2212
2213         * domain-internals.h, loader.c: Describe locking policy of domain
2214         lock vs loader lock.
2215
2216 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2217
2218         * verify.c (mono_delegate_signature_equal): Make it possible to check
2219         first-arg-bound delegates to static method.
2220
2221         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
2222         static methods with the first arg bound.
2223
2224         Fixes #469529.
2225
2226 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2227
2228         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
2229         errors.
2230
2231         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
2232         under strict mode. Any type, when boxed can be seen as a reference type.
2233
2234         Fixes #469528.
2235
2236 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2237
2238         * object.h: The lower bound of an array is a signed integer value.
2239         Introduce mono_array_lower_bound_t typedef. It should be used instead of
2240         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
2241
2242         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
2243         calculate the upper bound.
2244         
2245         Fixes #471252.
2246
2247 2009-02-02  Miguel de Icaza  <miguel@novell.com>
2248
2249         From Paolo's work, refactored, cleared up:
2250         
2251         * threadpool.c, icall.c: ifdef code that requires a working socket
2252         stack.
2253
2254         * metadata.c (mono_metadata_field_info): Do not attempt to return
2255         a value from a function declared as void.
2256
2257         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2258         from the console stack.
2259
2260         * assembly.c: use strrchr instead of rindex.
2261
2262         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2263         alloca.h on systems that have it.
2264
2265         * environment.c: Avoid code that uses stuff from
2266         HAVE_SYS_UTSNAME_H
2267         
2268         * appdomain.c: Include sys/time.h.
2269
2270         * console-io.c: include sys/ioctl.h if it is available.
2271
2272 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2273
2274         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2275
2276         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2277         the method builder.
2278
2279         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2280         after it was created and cached, as the later is not thread safe.
2281         
2282 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2283
2284         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2285         called while the debugging module is not initialized. Fixes #471669.
2286
2287 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2288
2289         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2290
2291         Fixes #471255.
2292
2293 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2294
2295         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2296         loader lock is not taken while the templates lock is held.  Fixes
2297         #471089.
2298
2299 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2300
2301         * metadata.c (type_in_image): Added a check to fix a monodis
2302         crash.
2303
2304 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2305
2306         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2307         nullable arguments.
2308
2309         * object.c (mono_runtime_invoke_array): Ditto.
2310         
2311         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2312         freeing wrappers of dynamic methods.
2313
2314         * loader.c (mono_free_method): Call it. Fixes #463323.
2315         
2316         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2317         methods taking vtype/byref arguments, to fix yet another bug caused by
2318         the sharing of runtime invoke wrappers. Partly fixes #471259.
2319
2320 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2321
2322         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2323         <first file in file table>:1 when the IL offset does not have an associated
2324         line number.
2325
2326 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2329         variable info for a method.
2330
2331         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2332         
2333 2009-01-30  Jb Evain  <jbevain@novell.com>
2334
2335         * pedump.c: reuse code from monodis to make sure pedump honors
2336         MONO_PATH, which is needed to verify net_2_1 assemblies.
2337
2338 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2341         there is no line number info.
2342
2343 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2344
2345         Avoid some MonoType allocations
2346         * reflection.c (mono_reflection_initialize_generic_parameter):
2347         Reuse MonoType from param->pklass rather than allocating one.
2348         (mono_dynamic_image_free): Update to changes.
2349
2350 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2351
2352         Rearrange some code to improve consistency
2353         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2354         (mono_reflection_initialize_generic_parameter): ... here.
2355
2356 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2357
2358         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2359         with type constraints as an experiment.
2360
2361         * boehm-gc.c (on_gc_notification): Update mono_stats.
2362
2363 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2364
2365         Avoid some allocations
2366         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2367         pointer to tail array to avoid extra allocation.
2368         * metadata.c (free_generic_inst): Update to changes.
2369         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2370         on-stack struct.
2371
2372 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2375         return TRUE if the two type objects are the same.
2376
2377 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2378
2379         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2380         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2381         klass->min_align, since klass->min_align contains the managed alignment,
2382         while the native alignment can be different, like for longs on x86.
2383         Fixes #469135.
2384
2385         * class-internals.h (MonoMarshalType): Add a min_align field.
2386
2387 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2388
2389         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2390         the 1.0 format.
2391
2392 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2393
2394         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2395         some comments about the usage of the used_regs field.
2396
2397         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2398         Fixes #469217.
2399
2400 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2401
2402         * appdomain.c: return NULL instead of throwing FileNotFoundException
2403         when LoadAssembly() fails.
2404
2405 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2406
2407         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2408         image if the owner is NULL.  Fixes the AOT failures.
2409
2410 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2411
2412         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2413         MonoGenericParam structure using memset so the image field is initialized
2414         as well.
2415
2416 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2417
2418         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2419         a plain store.
2420
2421 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2422
2423         * class.c (mono_class_setup_vtable_general): In the generic instance
2424         optimization, set method->slot for abstract virtual methods. Fixes part of
2425         #467834.
2426
2427 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2428
2429         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2430         which signals that the unloading has started but all appdomain services must
2431         remain operational.
2432
2433         * appdomain.c (mono_domain_unload): The initial state for unloading now
2434         is unloading_start and we switch to unloading after the managed call to
2435         AppDomain::DomainUnload has finished.
2436
2437         The new unloading state has to be created because managed code in the
2438         DomainUnload event can depend on things like the threadpool still working.
2439         The domain must remain fully functional while the event executes.
2440
2441         This shown as an issue due to Process::WaitForExit, which waits for
2442         async reads of stdout and stderr to complete. Since those are processed
2443         in the threadpool the code deadlocks because the DomainUnload callback 
2444         waits for the async read finished event, which should have been set by a
2445         threadpool job but has been discarded due to the domain been in unload
2446         state.
2447
2448 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2449
2450         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2451         image must match.
2452
2453 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2454
2455         * reflection.c (resolve_object): For fields, inflate the class and
2456         then get the field in the inflated class.
2457
2458 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2459
2460         * object-internals.h (struct _MonoException): Added a comment
2461         explaining the new use of trace_ips.
2462
2463 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2464
2465         * generic-sharing.c (inflate_other_data): Inflate array methods
2466         correctly.
2467
2468         * loader.c, class-internals.h: Rename search_in_array_class() to
2469         mono_method_search_in_array_class() and make it non-static.
2470
2471 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2474         Hopefully fixes #458168.
2475
2476 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2477
2478         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2479         as it is performed elsewhere.
2480
2481         Code is contributed under MIT/X11 license
2482
2483 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2484
2485         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2486         requests queued.
2487         * object.c (mono_raise_exception): Increment the exceptions total
2488         counter when an exception is thrown.
2489         * class-internals.h: Add a location for storing the total number of
2490         asp.net requests served.
2491         * mono-perfcounters.c: Implement update support for asp.net counters
2492         from the class libraries. Implement read support for asp.net counters
2493         and exceptions total counter.
2494
2495 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2496
2497         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2498         accessing klass->methods. Fixes #467385.
2499
2500 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2501
2502         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2503         for byval arguments without an [Out] attribute. Fixes #467212.
2504
2505         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2506         Fix compilation under android.
2507         
2508         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2509         processed, scan them directly after they are copied, to achieve better locality
2510         and cache usage.
2511
2512         * socket-io.c: Applied patch from Koushik Dutta
2513         (koush@koushikdutta.com). Disable IPV6 when running under android.
2514
2515 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2516
2517         * icall.c (ves_icall_InternalExecute): Add write barriers.
2518
2519         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2520         the GC code.
2521
2522         * sgen-gc.c: Implement write barriers in IL code.
2523
2524 2009-01-17  Geoff Norton  <gnorton@novell.com>
2525
2526         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2527
2528 2009-01-17  Geoff Norton  <gnorton@novell.com>
2529
2530         * image.c: When unloading the image->references table, there can be gaps
2531         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2532         when unloading an appdomain.
2533
2534 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2537         speed up ptr-in-nursery checks.
2538
2539         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2540         threads_lock () to prevent deadlocks.
2541
2542         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2543         does not need to be scanned during minor collections, since writes to it
2544         must use write barriers.
2545
2546 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2547
2548         * metadata-verify.c: Add pe nt header verification.
2549         
2550 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2551
2552         * gc.c: Fix a few warnings when using SGEN.
2553
2554 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2555
2556         * metadata-verify.c: Add pe optional header verification.
2557
2558 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2559
2560         * sgen-gc.c: Add support for user defined marker functions, used by
2561         MonoGHashTable to avoid registering a GC root for every hash node.
2562
2563 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2564
2565         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
2566         non-pinned roots into separate hashes to avoid having to traverse them
2567         in functions which are only interested in one kind.
2568
2569 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2570
2571         * metadata-verify.c: Add pe header machine field verification.
2572         
2573 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2574
2575         * metadata-verify.c: Add pe header size verification.
2576
2577 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2578
2579         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
2580         using the GC, they don't contain references.
2581
2582         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
2583
2584 2009-01-13  Geoff Norton  <gnorton@novell.com>
2585
2586         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
2587         AppDomains created on the native side can be cleaned up on the native side.
2588
2589 2009-01-13  Geoff Norton  <gnorton@novell.com>
2590
2591         * appdomain.c: Ensure that we call mono_context_init for the embedding api
2592         as well as the managed api.
2593
2594 2009-01-13  Geoff Norton  <gnorton@novell.com>
2595
2596         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
2597         with a MonoAppDomain initialized against it.
2598
2599 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
2602         
2603         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
2604
2605         * marshal.c: Avoid setting the exception clauses after a method has been entered 
2606         into the wrapper caches. Fixes #465700.
2607
2608         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
2609         method builder.
2610         (mono_mb_create_method): Set the clauses from the method builder.
2611
2612 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2613
2614         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
2615         Patch from Makoto Kishimoto.
2616
2617 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2618
2619         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
2620         encoding them as ROOT_DESC_COMPLEX.
2621         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
2622
2623 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2624
2625         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
2626         no longer point to the nursery.
2627
2628         * sgen-gc.c: Add a few comments/FIXMEs.
2629         
2630         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
2631
2632         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
2633         initialization of the various _method variables thread safe. Fixes
2634         #465377.
2635
2636 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2637
2638         * domain.c, domain-internals.h: Remove the shared_generics_hash
2639         and its lookup functions.
2640
2641 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
2642
2643         * socket-io.c:  Fixing the MSVC build. 
2644
2645         Code is contributed under MIT/X11 license.
2646
2647 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
2648
2649         * metadata-verify.c: Add pe header watermark verification.
2650
2651 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2652
2653         * metadata-verify.c: Add lfanew verification.
2654
2655 2009-01-12  Jb Evain  <jbevain@novell.com>
2656
2657         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
2658         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
2659
2660 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * socket-io.c: Fix the build.
2663
2664         * environment.c: Fix an #ifdef.
2665
2666 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2667
2668         * threadpool.c (async_invoke_thread): Handle the wait function returning
2669         WAIT_IO_COMPLETION as well.
2670         (async_invoke_io_thread): Ditto.
2671
2672 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
2673
2674         * threads.c: Fixing the Windows build.
2675
2676         Code is contributed under MIT/X11 license.
2677
2678 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2679  
2680         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
2681         interrupt a wait.
2682         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
2683         the thread to wait again.
2684
2685 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2686
2687         * metadata-verify.c: Initial skeleton of the metadata verifier.
2688
2689         * pedump.c: Add support for the metadata verifier.
2690
2691         * verify-internal.h: Export the whole assembly metadata verifier function.
2692
2693 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2694
2695         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
2696
2697 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2698
2699         * Makefile.am: Upgrade dtrace-prelink.sh location.
2700
2701 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2702
2703         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
2704         well. Otherwise the shutdown deadlock that happens on unix will can happen
2705         as well.
2706         If the main thread code finishes too fast it's possible that the finalizer
2707         thread won't have executed yet, won't record itself as the finalizer thread
2708         and the shutdown sequence will wait on it forever.
2709
2710 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2711
2712         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
2713         with MSVC.
2714
2715 2009-01-08  Miguel de Icaza  <miguel@novell.com>
2716
2717         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
2718         Robert Jordan for pointing this out.
2719
2720 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
2721
2722         * icall.c
2723         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
2724         ves_icall_System_IO_DriveInfo_GetDriveType.
2725
2726 2009-01-07  Miguel de Icaza  <miguel@novell.com>
2727
2728         * icall.c: Wrap calls to mono_strtod in CriticalSection
2729         invocations when using eglib, to work around #464316.
2730
2731 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2732
2733         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
2734         return value of GetCurrentDirectory to never access unitialized memory.
2735
2736 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2737
2738         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
2739         return value of GetCurrentDirectory and expand the buffer if needed.
2740
2741         Fixes #459094.
2742
2743 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
2744
2745         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
2746           Adding a call to mono_init_com_types.
2747
2748         Code is contributed under MIT/X11 license.
2749
2750 2009-01-07  Geoff Norton  <gnorton@novell.com>
2751
2752         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
2753         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
2754         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
2755         be the value of the ip buffer.
2756
2757 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2758
2759         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
2760         interfaces_packed here.
2761
2762         Fixes part of #463294.
2763
2764 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2765
2766         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
2767
2768         Fixes part of #463294.
2769
2770 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2771
2772         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
2773         is a boxed complex as well.
2774
2775         Fixes part of #463294.
2776
2777 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2778
2779         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
2780         control if a methodspec should be created for the generic method definition from external assemblies.
2781         Caching of methodspec is done using the handleref hash table.
2782
2783         Fixes #462592.
2784
2785 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
2786
2787         * loader.c (find_method): When searching the interfaces of a class
2788         check the transitive closure of implemented interfaces.
2789
2790         Fixes #463303.
2791
2792 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2793
2794         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
2795         
2796 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2797
2798         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
2799         interfaces calculation to fill_valuetype_array_derived_types.
2800
2801         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
2802         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
2803         for example.
2804
2805         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
2806         interfaces for valuetypes if needed.    
2807
2808         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
2809         for their basetype as well. Types are array expanded if rank is > 0.
2810
2811         Fixes #400716.
2812
2813 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
2814
2815         * socket-io.h : Changing the signature of
2816           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
2817           the blocking state.
2818
2819         * icall-def.h :  Changing the signature of
2820           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
2821
2822         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
2823           For Windows only.  Avoid blocking when calling accept by
2824           querying for a connection via select.  The loop also queries
2825           the thread state every 1000 micro seconds for the thread
2826           stop state.  This will avoid the process hanging on shutdown
2827           when using a TcpChannel that is never connected to.
2828
2829         Code is contributed under MIT/X11 license.
2830
2831 2008-12-30  Marek Safar  <marek.safar@gmail.com>
2832
2833         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
2834
2835 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2836
2837         * class.c (get_implicit_generic_array_interfaces): Extract common
2838         code to a helper function making it a lot easier on the eyes.
2839
2840 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2841
2842         * class.c (get_implicit_generic_array_interfaces): If the internal
2843         enumerator is an interface inflate System.Object instead of itself.
2844
2845         Fixes #461261.
2846
2847 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
2848
2849         * object.c (mono_runtime_invoke_array): Don't assert with
2850         byref nullable types.
2851
2852         * marshal.c (mono_marshal_get_runtime_invoke): To handle
2853         byref nullables we unbox the object and store it on the
2854         stack. 
2855         We can't use the boxed object since it is the T of Nullable<T>
2856         and the boxed representation of a nullable it's underlying type
2857         or null.
2858         We could cheat and create a boxed nullable and use the same
2859         machinery of other byref VTs but this feels like a hack and
2860         using the stack has the bonus of reducing heap pressure.
2861
2862         Fixes #461941.
2863
2864 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
2865
2866         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
2867         return value.
2868
2869         Fixes #461867.
2870
2871 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
2872
2873         * icall-def.h : Adding an internal call definition for 
2874           System.Environment.internalBroadcastSettingChange.
2875
2876         * icall.c : Adding a Windows only implementation to broadcast a 
2877           WM_SETTINGCHANGE when an environment variable has changed.
2878
2879         Code is contributed under MIT/X11 license.
2880
2881 2008-12-19  Mark Probst  <mark.probst@gmail.com>
2882
2883         * class.c, class-internals.h: Made
2884         mono_class_has_parent_and_ignore_generics() non-static.
2885
2886 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
2887
2888         * image.c: deal with the mmap failing when loading an image.
2889
2890 2008-12-17  Geoff Norton  <gnorton@novell.com>
2891
2892         * threadpool.c: Ensure that the io_queue_lock is initialized
2893         in all circumstances, as we always attempt to cleanup against it.
2894
2895 2008-12-17  Miguel de Icaza  <miguel@novell.com>
2896
2897         * icall.c (ves_icall_System_Environment_get_Platform): For
2898         compatibility reasons for existing client code we will keep
2899         returning 4 for a while.   
2900
2901         For how long will depend on the documentation being updated, and
2902         for us to give client code a chance to be updated.
2903
2904         This reverts the original decison on #433108 since we did not
2905         catch roughly 33 instances of the broken code in our own source
2906         code base, we did not catch failures on the buildbots, and QA did
2907         not bring this as a problem.
2908
2909         Only today I found some customer's code breaking due to our own
2910         class libraries not being fully updated and tracked it down to
2911         this change.  I am reverting it because if we could not even get
2912         our story straight in our own code base, how can we hope that our
2913         end user code be fixed?
2914
2915         As of this morning, our Wiki page that documents how to detect
2916         Unix had not been fixed.    
2917
2918 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
2921
2922         * class.c (mono_class_get_fields): Handle loading errors.
2923
2924 2008-12-12 Mark Mason <mmason@upwardaccess.com>
2925
2926         * 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.
2927         
2928 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
2929
2930         * mono-perfcounters.c: avoid warning.
2931
2932 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2933
2934         * reflection.c (ensure_runtime_vtable): Work on generic instances and
2935         make sure all interfaces have MonoClass::interface_id set.
2936
2937         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
2938         method table is property set.
2939
2940 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2941
2942         * class.c: New function mono_class_setup_interface_id that setup
2943         MonoClass::interface_id if needed.
2944
2945         * class-internals.h: Export new function.
2946
2947 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
2948
2949         * class.c: Add code to sanity check the vtable after setup_vtable_general
2950         has done it's work.
2951
2952 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2953
2954         * icall.c: make Assembly.GetExecutingAssembly work properly when
2955         reflection is used to invoke the method.
2956         Bug #321781 fixed.
2957
2958 2008-12-11  Mark Probst  <mark.probst@gmail.com>
2959
2960         * metadata/generic-sharing.c: Look for constraints in all type
2961         arguments, not just the first one.
2962
2963 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2964
2965         * appdomain.c: return the correct CodeBase for an Assembly instance
2966         that was loaded from the shadow-copy directories.
2967         Bug #458190 fixed.
2968
2969 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
2970
2971         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
2972
2973         * sgen-gc.c (check_object): New debugging helper function.
2974
2975         * object.c: Fix calls to mono_value_copy_array ().
2976
2977 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2978
2979         * class.c (mono_class_setup_fields): If working on an inflated class
2980         first check if the generic definition did init with success.
2981
2982         Fixes #445361.
2983
2984 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
2985
2986         pedump.c (main): Fix a warning.
2987
2988 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
2989
2990         * object-internals.h : Adding a definition for 
2991           MonoReflectionComVisibleAttribute.
2992
2993         * marshal.c (cominterop_com_visible) :  Method added to check the 
2994           ComVisible attribute of a class.
2995
2996         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
2997           cominterop_raise_hr_exception added to consolidate common code 
2998           to raise hr exceptions.
2999
3000         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
3001           if a managed class should support IDispatch.
3002
3003         * marshal.c 
3004           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
3005           Added additional checks for managed object when getting 
3006           an IDispatch interface.
3007
3008         Code is contributed under MIT/X11 license.
3009
3010 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3011
3012         pedump.c (main): Handle mono_get_method () returning NULL. 
3013
3014 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * marshal.h: Fix a warning.
3017
3018 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3019
3020         * marshal.c : Adding cominterop_release_all_rcws to release all
3021           runtime callable wrappers held by the runtime.
3022
3023         * marshal.h : Adding declaration for cominterop_release_all_rcws.
3024           
3025         Code is contributed under MIT/X11 license.
3026
3027 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3028
3029         * metadata.c (mono_image_alloc_lock): New helper function.
3030         (mono_image_alloc0_lock): Ditto.
3031
3032         * metadata.c: Use the alloc_lock () helper functions for allocating
3033         memory from the image mempool.
3034
3035 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
3036
3037         * class.c (mono_class_from_generic_parameter): Document it's
3038         locking behavior. Fix double checked locking here, we stored in
3039         param->pklass a partially initialized MonoClass and no membar was used.
3040
3041 2008-12-05  Marek Habersack  <mhabersack@novell.com>
3042
3043         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
3044         (3) functions are present in the C library use them to do the
3045         job. If they are absent, make sure that the sum of int_part and
3046         dec_part is rounded before returning. This is necessary due to the
3047         division of dec_part by the power of 10 before the final addition
3048         is performed - if the result is not rounded in some cases it will
3049         yield invalid results.
3050
3051 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
3054         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
3055         instruction instead of a pointer constant.
3056
3057 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3058
3059         * loader.c (mono_method_get_header): Do most of the work outside the
3060         loader lock, to avoid assembly load hook deadlocks.
3061
3062         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
3063         (mono_metadata_parse_type_full): Ditto.
3064
3065 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
3066
3067         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
3068         Make the stack depth fixed. Ensure proper argument passing to the backtrace
3069         funtions. Finally, use a lock to produce well ordered output.
3070
3071         The lock looks silly, as all calls to the corlib mempool should be guarded
3072         with the loader lock, but for some reason this fact doesn't help. 
3073
3074         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
3075
3076 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3077
3078         * socket-io.c: 64 bit big-endian fixes.
3079
3080 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3081
3082         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
3083         targets that require strict compatibility between the types.
3084
3085         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
3086         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
3087         Kill the strict argument and create a new one valuetype_must_be_boxed.
3088
3089         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
3090         state that all valuetypes must be boxed.
3091
3092         Fixes #448560.
3093
3094 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
3095
3096         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
3097         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
3098
3099         Contributed under MIT/X11 license.
3100
3101 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
3102
3103         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
3104         the inflate_generic_type machinery should handle it.
3105
3106         This avoids a crash when the field's flags is zero and it's type is
3107         a primitive.
3108         What happens is that mono_metadata_parse_type_full will see that opt_attrs
3109         is zero and will return one of the cached built-in primitive types. Since
3110         those types live in read-only memory, the code that copies it crashes.  
3111
3112 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3113
3114         * object.c: Don't put function descriptors into generalized IMT
3115         thunks.
3116
3117 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3118
3119         * class.c: Enable generic code sharing on PPC64.
3120
3121 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3122
3123         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
3124         from mini/mini.c.
3125
3126         * generic-sharing.c: Allocate the method template slists from the
3127         image mempool so it doesn't leak.
3128
3129 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
3130
3131         * class.c (generic_array_methods): Release the linked list.
3132
3133 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3134
3135         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
3136         invocation to g_utf16_to_utf8().
3137
3138 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3139
3140         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
3141         arguments on big endian archs.
3142
3143 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3144
3145         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
3146         the type name (test added in corlib).
3147
3148 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3149
3150         * pedump.c: initialize perf. counters. Fixes a segv.
3151
3152 2008-11-25  Martin Baulig  <martin@ximian.com>
3153
3154         * mono-debug-debugger.c
3155         (mono_debugger_runtime_invoke): Return the exception object if an
3156         exception was thrown.  Visual Studio displays the exception object
3157         in the locals window.
3158
3159 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3160
3161         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
3162         ftnptr.
3163
3164 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3165
3166         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
3167         MONO_TYPE_U are sizeof (gpointer), too.
3168
3169 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3170
3171         * marshal.c (mono_type_native_stack_size): Fixed size and
3172         alignment for reference types.
3173
3174 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3175
3176         * class.c (mono_class_generic_sharing_enabled): Disable generic
3177         code sharing for PPC64.
3178
3179 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
3180
3181         * icall.c (mono_method_get_equivalent_method): Make sure
3182         method->klass->methods is inited before looping over it.
3183
3184 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3185
3186         * object.c: when calling ExecuteAssembly in a newly created domain,
3187         the configuration file and application base are already set up.
3188         Bug #446353 take 2 fixed.
3189
3190 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
3193         Fixes #444715. Fix a warning.
3194
3195 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
3196
3197         * appdomain.c: write the full path of the assembly to the .ini file
3198         created when "shadow-copying"
3199         Bug #446353 fixed.
3200
3201 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3202
3203         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
3204         if signature==FALSE.
3205
3206 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3207
3208         * marshal.h : Fix the cygwin build.
3209            marshal.c:12442: undefined reference to `_IID_IMarshal'
3210           
3211         Code is contributed under MIT/X11 license.
3212
3213 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3214
3215         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
3216           free threaded marshaler when QueryInterface is called on a COM callable
3217           wrapper requesting the IMarshal interface.
3218           
3219         Code is contributed under MIT/X11 license.
3220
3221 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3222
3223         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
3224
3225         * reflection.c (mono_type_get_object): Special case the very common
3226         void type.
3227
3228         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
3229         hold typeof(void).
3230
3231 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
3232
3233         * process.h : Adding method declaration for
3234           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3235           
3236         * process.c : Adding implementation for
3237           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3238           
3239         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
3240           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3241
3242         Code is contributed under MIT/X11 license.
3243
3244 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
3245
3246         * appdomain.c (unload_thread_main): Clean up threadpool by
3247         calling mono_thread_pool_remove_domain_jobs.
3248
3249         * domain-internals.h (struct _MonoDomain): Add new fields to
3250         help coordinate the cleanup of the threadpool.
3251
3252         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3253         that cleans up the threadpool of all jobs associated with an appdomain.
3254         It does that by cleaning up the queues and making sure all active
3255         threads are accounted.
3256
3257         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3258         unloaded or in the process of. Take this is such way that there is
3259         no race condition between another thread starting the unload and the
3260         current thread acknowledging it.
3261
3262         * threadpool.c (async_invoke_thread): Same.
3263
3264         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3265         firing the new thread.
3266
3267         * threadpool.c (start_tpthread): Same.
3268
3269         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3270
3271         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3272
3273 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3274
3275         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3276         Add support for DuplicateHandle.
3277         
3278         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3279         Add support for DuplicateHandle.
3280         
3281         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3282         Add support for DuplicateHandle.
3283
3284         Code is contributed under MIT/X11 license.
3285
3286 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3287
3288         * class-internals.h: Make min_align into a whole byte.
3289
3290         * class.c: Set min_align for SIMD types to 16.
3291
3292 2008-11-05  Geoff Norton  <gnorton@novell.com>
3293
3294         * attach.c: Default the attacher to enabled for all cases including
3295         embedded.
3296
3297 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3298
3299         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3300         change r117650.
3301
3302 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3303
3304         * monitor.c, monitor.h: New function for querying offsets of
3305         members of MonoThreadsSync.
3306
3307 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3308
3309         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3310         to speed up this function and to avoid the boundless memory growth caused by
3311         the signature_dup () calls.
3312
3313 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3316         wrapper.
3317
3318         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3319         by 1 bit.
3320
3321         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3322
3323 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3324
3325         * appdomain.c:
3326         * domain-internals.h: made mono_set_private_bin_path_from_config()
3327         "internal".
3328         * object.c: call the above function after setting the configuration
3329         file path for the root domain.
3330         Fixes bug #314478.
3331
3332 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3333
3334         * assembly.c: when the assembly is loaded from an absolute path, end
3335         basedir with a directory separator.
3336         Bug #440781 fixed.
3337
3338 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3339
3340         * monitor.c (mono_monitor_get_fast_enter_method): If
3341         CompareExchange is not available, don't create the fastpath
3342         instead of asserting.  (The method is missing in the 1.1 profile.)
3343
3344 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3345
3346         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3347
3348         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3349         Monitor.Exit IL fastpaths.
3350
3351 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3352
3353         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3354
3355 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3356
3357         * class.c (mono_class_create_from_typedef): Added Vector2l.
3358
3359 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3360
3361         * class.c (mono_class_create_from_typedef): Added Vector2d.
3362
3363 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3364
3365         * appdomain.c: translate \ into / for cache_path.
3366         * domain-internals.h: new mono_is_shadow_copy_enabled().
3367         * icall.c: (fill_reflection_assembly_name) do the same path
3368         manipulations that get_code_base does.
3369         (get_code_base) use mono_is_shadow_copy_enabled.
3370
3371 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3372
3373         * appdomain.c: shadow-copied assemblies go to CachePath +
3374         ApplicationName when both are set. DynamicBase has nothing to do with
3375         shadow copies.
3376         Bug #406877 fixed.
3377
3378 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3379
3380         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3381         STANDALONESIG table.
3382
3383         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3384         standalone signatures.
3385
3386         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3387         comparison code: instead of comparing the signatures using a custom
3388         equals function, transform them to a common signature and compare that. This
3389         works better with AOT.
3390
3391 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3392
3393         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3394
3395         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3396         call for generic instances.
3397         (mono_class_setup_properties): Call setup_properties () before accessing
3398         gklass->properties.
3399
3400         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3401         over the virtual methods of a class using metadata if possible, avoiding the
3402         creation of MonoMethod's for non-virtual methods.
3403         
3404         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3405         get_virtual_methods () to iterate over the virtual methods of classes.
3406
3407 2008-10-25  Martin Baulig  <martin@ximian.com>
3408
3409         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3410
3411 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3412
3413         * class.c (mono_class_create_from_typedef): Added Vector4i.
3414
3415 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3416
3417         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3418         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3419         special-casing applies to eliminate the call completely.
3420
3421 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3422
3423         * class.c (mono_class_create_from_typedef): Added Vector8s.
3424
3425 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3426
3427         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3428
3429 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3430
3431         * icall.c: get rid of annoying warning.
3432
3433 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3434
3435         * threadpool.c: in 1.x, if you change the background status of the
3436         threadpool thread, it's not reset.
3437         Remove unnecessary calls to SetState.
3438
3439 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3440
3441         * threadpool.c: asynchronously create a set of idle threads upon first
3442         use of the threadpool. SetMinThreads will now start the appropriate
3443         number of idle threads if they are not already running. The default is
3444         1 threadpool thread per CPU. Increased the maximum number of threads
3445         per CPU to 10.
3446
3447 2008-10-22  Martin Baulig  <martin@ximian.com>
3448
3449         Revert r116521 from Zoltan, it breaks the debugger:
3450
3451         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3452         over the virtual methods of a class using metadata if possible, avoiding the
3453         creation of MonoMethod's for non-virtual methods.
3454         
3455         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3456         get_virtual_methods () to iterate over the virtual methods of classes.
3457
3458 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3459
3460         * threads.c: when creating a threadpool thread, set its state to
3461         'background'.
3462         * threadpool.c: reset the background state of a threadpool thread
3463         after finishing each work item
3464         Bug #437888 fixed.
3465
3466 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3469         
3470         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3471         generic instances which works by inflating the methods in the container
3472         class's vtable.
3473
3474         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3475         variant which doesn't make a copy if no inflation was done.
3476         (mono_class_setup_fields): Use it.
3477
3478         * metadata.c (mono_metadata_get_shared_type): New helper function to
3479         return a shared instance of a given MonoType.
3480
3481         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3482         a copy of most non-generic types.
3483
3484 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3485
3486         * threadpool.c: remove one more GetSystemInfo () call.
3487
3488 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3489
3490         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3491         use the code in mono-proclib.h to get processor information.
3492
3493 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3494
3495         * appdomain.c: fixed the logic that determines whether assemblies in a
3496         directory are "shadow-copied" or not. Bug #433483 fixed.
3497
3498 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3499
3500         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3501         warning.
3502
3503 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3504
3505         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3506         returning a vtype.
3507
3508         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3509         reflection.c: Use mono_field_get_name () for accessing a field's name.
3510
3511         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3512         class.c
3513
3514         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3515         field.
3516
3517         * loader.c (find_method_in_class): Reenable the metadata optimization by
3518         not using it for generic instances.
3519
3520         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3521         data/def_type fields from MonoClassField into a separate structure.
3522         (struct MonoClassField): Remove data/def_type fields.
3523         (struct _MonoClass): Add a 'field_def_values' array to store the default
3524         values/RVA for fields.
3525
3526         * class.c reflection.c: Update after the changes.
3527         
3528         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3529         for accessing field->data.
3530
3531         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3532
3533         * loader.c (find_method_in_class): Revert the last change for now as
3534         it breaks Mono.C5 unit tests.
3535
3536         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3537         'field_generic_types' and 'field_objects' which contain the information
3538         previously stored in MonoInflatedField.
3539         (MonoInflatedField): Delete.
3540         (struct _MonoClassField): Delete 'generic_info' field.
3541
3542         * reflection.c: Store the information which was previously in 
3543         field->generic_info in MonoDynamicGenericClass instead.
3544
3545         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3546         MonoClassField changes.
3547
3548 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3549
3550         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3551         store the value inside the data array of the MonoMethodWrapper.
3552         This saves memory, is faster and fixes the lifetime issues (methods
3553         were never removed from the hash previously). May also fix bug#436996.
3554
3555 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3556
3557         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3558         generic instances, compute the type from the generic definition instead of
3559         looking in field->generic_info.
3560
3561         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3562         for inflated fields, the only user was get_fieldref_token () which no
3563         longer needs it.
3564
3565         * class.c (mono_class_init): Revert the last change as it seems to cause
3566         crashes.
3567
3568         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
3569         bytes on 64 bit platforms.
3570
3571         * object.c (mono_class_create_runtime_vtable): Fix a warning.
3572         
3573         * object.c (mono_class_create_runtime_vtable): Don't initalize
3574         field->data/field->def_type here, it is done lazily by 
3575         mono_class_get_field_default_value ().
3576
3577         * icall.c (ves_icall_get_enum_info): Call 
3578         mono_class_get_field_default_value () instead of directly accessing
3579         field->data and field->def_type.
3580
3581         * object.c (get_default_field_value): Ditto.
3582
3583         * class.c (mono_field_get_data): Ditto.
3584         
3585         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
3586         call for generic instances.
3587
3588         * loader.c (find_method_in_class): If klass != from_class, then inflate
3589         the method with the context of from_class, since the caller assumes this.
3590
3591 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
3592
3593         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
3594         for accessing method->slot.
3595
3596 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
3597
3598         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
3599
3600 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3601
3602         * class.c (mono_method_get_vtable_index): Use
3603         mono_method_get_vtable_slot () for accessing method->slot.
3604
3605         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
3606         accessing klass->methods.
3607
3608         * class.c (mono_method_get_vtable_slot): New helper function.
3609         (mono_class_get_vtable_entry): Ditto.
3610         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
3611         accessing method->slot.
3612
3613         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
3614         method to get_inflated_method ().
3615
3616         * class.c (mono_class_get_inflated_method): New helper method to obtain
3617         a method of an inflated class without calling setup_methods ().
3618         (mono_class_get_cctor): Use get_inflated_method.
3619
3620         * generic-sharing.c (mono_class_get_method_generic): Ditto.
3621         
3622         * marshal.c image.c: Lazily create all the marshal caches.
3623
3624         * image.c (mono_image_init): Move initialization of runtime_invoke
3625         caches to marshal.c.
3626
3627         * marshal.c (get_cache): New helper function to lazily initialize a 
3628         wrapper cache.
3629         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
3630
3631         * debug-helpers.c (mono_method_full_name): Include generic arguments.
3632
3633 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
3634
3635         * loader.c: fixed check for interface type.
3636
3637 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3638
3639         * appdomain.c: check for NULL setup before it's referenced.
3640
3641 p
3642 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3643
3644         * class.c: remove the unused old vtable setup code.
3645
3646 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3647
3648         * class.c: don't depend on interface order in
3649         setup_interface_offsets (bug #435777).
3650         * reflection.c: sort the InterfaceImpl table (patch from
3651         Jb Evain  <jbevain@novell.com>).
3652
3653 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
3656         the low level assemblies lock.
3657
3658 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
3659
3660         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
3661         object.c, reflection.c, socket-io.c, threads.c: introduced
3662         mono_framework_version () to return the major framewrok version,
3663         changed the code that was using more complex patterns to use it.
3664         Return the correct value for PlatformID for OSX.
3665
3666 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
3667
3668         * icall-def.h, process.h, process.c: added an icall to get info about
3669         processes using mono-proclib.
3670
3671 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
3672
3673         * mono-perfcounters.c: use the mono-proclib functions to
3674         access process information.
3675
3676 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3677
3678         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
3679         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
3680         reflection.c: remove rawbuffer usage: mmap support is more sanely
3681         provided by utils/mono-mmap.
3682
3683 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
3684
3685         * gc.c: use posix semaphores when possible so that
3686         mono_gc_finalize_notify() is signal safe.
3687
3688 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
3691         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
3692         be #ifdef-ed out, the linker will remove the rest.
3693
3694         * marshal.c: Implement DISABLE_COM.
3695
3696         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
3697
3698 2008-10-11  Miguel de Icaza  <miguel@novell.com>
3699
3700         * locales.c (string_invariant_compare_char): Optimization: do not
3701         call g_unichar_type unless we actually need the information.
3702
3703 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3704
3705         * object.c, class-internals.h: Also create remoting trampolines
3706         for generic methods.  Pass the domain to the remoting trampoline
3707         creation function, too.
3708
3709 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3710
3711         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
3712
3713 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3714
3715         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
3716         Vector4ui.
3717
3718 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3719
3720         * assembly.c:
3721         * locales.c: remove the use of g_strdown. Fixes bug #322313.
3722
3723 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3724
3725         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
3726         for the least possible amount of time (extending the fix in r113458).
3727
3728 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3729
3730         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
3731
3732 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3733
3734         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
3735         as possible simd intrinsic types.
3736         Optimized the test to check for the common prefix first.
3737
3738 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
3739
3740         * class.c: back out part of a broken optimization committed on
3741         May 23th (bug #433908).
3742
3743 2008-10-09  Mark Probst  <mark.probst@gmail.com>
3744
3745         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
3746         Win32.  Should fix #432388 for most cases until we have the new
3747         profiler on Win32.
3748
3749 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
3752         instead of using inst->id so the hash is stable for AOT.
3753
3754 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3755
3756         * appdomain.c:
3757         * icall.c: create a .ini file for shadow-copied assemblies that
3758         contains the location of the original assembly. Use this to return the
3759         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
3760         Also fix the number of '/' for windows when returning the CodeBase.
3761         Fixes bug #430920.
3762
3763 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3764
3765         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
3766
3767         Code is contributed under MIT/X11 license.
3768
3769 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3770
3771         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
3772           if if the class vtable needs initialized.
3773
3774         Code is contributed under MIT/X11 license.
3775
3776 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3777
3778         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
3779           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
3780           STRING->BSTR, and CLASS->INTERFACE.
3781
3782         Code is contributed under MIT/X11 license.
3783
3784 2008-10-07  Marek Habersack  <mhabersack@novell.com>
3785
3786         * sysmath.h: changed the declaration of the
3787         ves_icall_System_Math_Round2 icall by adding an extra
3788         away_from_zero parameter.
3789
3790         * sysmath.c (ves_icall_System_Math_Round2): added support for
3791         away from zero rounding. The icall now takes an extra boolean
3792         parameter to signal that away from zero operation is requested.
3793
3794 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3795
3796         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
3797         the delegate klass so it can work with full-aot.
3798         (mono_marshal_get_delegate_end_invoke): Ditto.
3799         (mono_marshal_get_delegate_invoke): Ditto.
3800
3801 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
3802
3803         * gc.c, attach.h, attach.c: remove a bad pattern:
3804         add_finalizer_callback () is not implemented correctly, it can't
3805         without adding more overhead to the finalizer loop and it's not
3806         even needed, since we know exactly what we need to call, so there is
3807         no need to do so through an expensive function pointer.
3808
3809 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
3810
3811         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
3812         for the no-gc case.
3813         * attach.c (mono_attach_init): Remove the #ifdef.
3814
3815 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3816
3817         * attach.c (mono_attach_init): Don't use
3818         mono_gc_add_finalizer_thread_callback when compiling without GC.
3819         Fixes #432306.
3820         
3821         Code is contributed under MIT/X11 license.
3822
3823 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3824
3825         * class.c (mono_class_create_from_typedef): Remove the 
3826         #ifndef DISABLE_SIMD stuff.
3827
3828 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3829
3830         * class-internals.h (MonoClass): Added simd_type bit field.
3831
3832         * class.c (mono_class_create_from_typedef): Check if type is a simd
3833         intrinsic.
3834
3835 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3836
3837         * object.c (mono_method_add_generic_virtual_invocation): Only add
3838         instantiations to the thunk whose count is at least as large as
3839         the threshold.
3840
3841 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3842
3843         * icall.c: changed the Type of the exception thrown when trying to
3844         invoke a constructor on an abstract class. Part of the fix for bug
3845         #324185.
3846
3847 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3848
3849         * class.c, class-internals.h (mono_method_get_vtable_index): New
3850         function which returns the index into the vtable and properly
3851         handles inflated virtual generic methods.
3852
3853 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3854
3855         * object.c, domain.c, object-internals.h, domain-internals.h:
3856         Generalize IMT thunk machinery to also handle thunks for virtual
3857         generic method invokes.  When a virtual generic method is invoked
3858         more than a number of times we insert it into the thunk so that it
3859         can be called without lookup in unmanaged code.
3860
3861         * generic-sharing.c, class-internals.h: Fetching a
3862         MonoGenericInst* for a method from an (M)RGCTX.
3863
3864 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3865
3866         * marshal.c (emit_marshal_string): Applied a variant of a patch by
3867         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
3868         marshalling. Fixes #431304.
3869
3870 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
3871
3872         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3873           handle when ref is specified without In or Out.
3874
3875         Code is contributed under MIT/X11 license.
3876
3877 2008-09-30  Mark Probst  <mark.probst@gmail.com>
3878
3879         * loader.c (mono_get_method_constrained): Don't expand method with
3880         the class's context, because it's already a method of that class.
3881
3882 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
3883
3884         * attach.c : should be correct build fix.
3885
3886 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * attach.c: Fix the previous change.
3889
3890 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
3891
3892         * attach.c : quick w32 build fix.
3893
3894 2008-09-27  Miguel de Icaza  <miguel@novell.com>
3895
3896         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
3897         crashes MonoDevelop: #430455.
3898
3899 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * domain-internals.h (struct _MonoDomain): Move most fields used only by
3902         the JIT do MonoJitDomainInfo in ../mini/mini.h.
3903
3904         * domain.c: Remove initialization/cleanup of the removed fields.
3905
3906 2008-09-27  Mark Probst  <mark.probst@gmail.com>
3907
3908         * class.c (mono_class_generic_sharing_enabled): Enable generic
3909         code sharing for PPC.
3910
3911 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
3912
3913         * attach.c : Fixing the Windows builds.
3914
3915         Code is contributed under MIT/X11 license.
3916
3917 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3918
3919         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
3920         the default generic sharing mode to 'all'.
3921
3922 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3923
3924         * generic-sharing.c, class-internals.h: New function for checking
3925         whether a method needs a static RGCTX invoke wrapper.  A few
3926         funtions moved from mini/generic-sharing.c.
3927
3928         * icall.c: New function used.
3929
3930 2008-09-25  Mark Probst  <mark.probst@gmail.com>
3931
3932         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
3933         Static RGCTX invoke wrapping applies to value type methods, too.
3934
3935         * class.c (mono_class_setup_vtable_general): In generic-shared
3936         value types, wrap methods with a static RGCTX invoke wrapper.
3937
3938 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
3939
3940         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
3941         osx build.
3942
3943 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
3946         register a callback which is called when the finalizer thread is woken
3947         up.
3948         (finalizer_thread): Call the callback if it exists.
3949
3950         * attach.h attach.c: New files, implementing the attach mechanism.
3951
3952         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
3953         
3954         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
3955         by the previous change.
3956
3957 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
3958
3959         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
3960         loader.c, marshal.c, metadata-internals.h, metadata.c,
3961         method-builder.c, object.c, reflection.c: introduced specific functions
3962         to allocate from the domain and image mempools and cleaned up most of
3963         the code to use them (still missing a few in reflection.c).
3964         Keep the loader bytes counter updated.
3965
3966 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
3967
3968         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
3969         loader-related counters.
3970
3971 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
3972
3973         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
3974         added more MS-compatible counters.
3975
3976 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
3977
3978         * class.c (mono_class_setup_fields): Call setup_fields before accessing
3979         class->blittable. Fixes #428217.
3980
3981 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
3982
3983         * reflection.c (mono_image_get_field_on_inst_token): Call 
3984         field_encode_signature () since that handles custom modifiers too.
3985         Fixes #424663.
3986
3987 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
3988
3989         * reflection.c (add_custom_modifiers): New helper function to merge custom
3990         modifiers stored in objects to a MonoType.
3991         (fieldref_encode_signature): Encode custom modifiers.
3992         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
3993         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
3994
3995 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
3996
3997         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
3998         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
3999         64-bit IL only images because imports are not resolved for IL only images.
4000         Special thanks to Bill Holmes for finding this bug and testing the patch.
4001         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
4002
4003         Contributed under MIT/X11 license.
4004
4005 2008-09-19  Miguel de Icaza  <miguel@novell.com>
4006
4007         * mono-config.c (dllmap_start): Add support for the bits keyword
4008         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
4009
4010 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4011
4012         * reflection.c (inflate_mono_method): When the class the method is
4013         to be inflated for is itself not inflated, just return the method.
4014
4015 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
4016
4017         * mono-perfcounters.c: use more user friendly process instance names.
4018
4019 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
4020
4021         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4022           handle "[in] ref" and "[in][out] ref" cases.
4023
4024         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
4025           to mono_mb_create_method.  This was causing problems calling native to
4026           managed passing Variants by value.
4027
4028         Code is contributed under MIT/X11 license.
4029
4030 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
4031
4032         * class.c (can_access_internals): Call mono_assembly_load_friends ()
4033         before accessing the friend_assembly_names field.
4034
4035         * assembly.c (mono_assembly_load_friends): Make this callable multiple
4036         times.
4037         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
4038         called lazily when it is needed.
4039
4040         * metadata-internals.h (struct _MonoAssembly): Add 
4041         'friend_assembly_names_inited' flag.
4042
4043 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
4044
4045         * mono-perfcounters-def.h: fix the types of a few counters.
4046         * mono-perfcounters.c: implemented the instance names getter
4047         and a few bugfixes.
4048
4049 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
4050
4051         * culture-info-table.h : regenerated.
4052
4053 2008-09-17  Robert Jordan  <robertj@gmx.net>
4054
4055         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
4056         context bound objects. Fixes #415577.
4057
4058         Code is contributed under MIT/X11 license.
4059
4060 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
4061
4062         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
4063         implementation (bug #423582).
4064
4065 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
4066
4067         * object.c (mono_object_get_virtual_method): Handle the case method->slot
4068         is not set. Fixes #426309.
4069
4070 2008-09-16  Jb Evain  <jbevain@novell.com>
4071
4072         * class.c (mono_class_from_name): fix the exported type look up
4073         when the type is defined in a referenced assembly.
4074
4075 2008-09-16  Jb Evain  <jbevain@novell.com>
4076
4077         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
4078         increment the next index counter on each iteration to make that work
4079         for more than one type forwarder. Unmanaged part to fix #422929.
4080
4081 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4082
4083         * object-internals.h: enum ComInterfaceType in
4084         MonoInterfaceTypeAttribute is guint32, not guint16.
4085
4086 2008-09-12  Mark Probst  <mark.probst@gmail.com>
4087
4088         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
4089         writing code.
4090
4091 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4092
4093         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
4094         not gboolean.
4095
4096 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4097
4098         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
4099         Endianness fixes for MonoSymbolFileOffsetTable.
4100
4101 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4102
4103         * process.c (complete_path) : Removing quotes from the 
4104           input path.  The glib file routines do not handle file paths
4105           that have quotes around them.
4106
4107         Code is contributed under MIT/X11 license.
4108
4109 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4110
4111         * socket-io.h : Adding a comment to provide locations where 
4112           changes to MonoSocketAsyncResult need to be synced.
4113
4114         Code is contributed under MIT/X11 license.
4115
4116 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
4119         parameters as well. Fixes #425001.
4120
4121 2008-09-08  Miguel de Icaza  <miguel@novell.com>
4122
4123         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
4124         windows build.
4125
4126 2008-09-07  Miguel de Icaza  <miguel@novell.com>
4127
4128         * console-io.c: Add support for tracking the window size if it
4129         changes.
4130
4131         The setup is very simple: the TtySetup function will now return a
4132         pointer to a location in memory that tracks the current console
4133         size.  The managed code checks its current value every time its
4134         queried against the last value set, and updates accordingly.
4135
4136         With this setup we can work with multiple consoles, and we do not
4137         require to poke into managed code from a signal handler.
4138
4139         Additionally, the environment for COLUMNS and LINES is now handled
4140         in unmanaged code.
4141
4142         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
4143
4144 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4145
4146         * marshal.c (mono_type_native_stack_size): Treat
4147         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
4148
4149 2008-09-04  Jb Evain  <jbevain@novell.com>
4150
4151         * class.c (mono_class_is_assignable_from): fix assignability of nullables
4152         to nullables.
4153
4154 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
4155
4156         * verify.c (verify_type_compatibility_full): Revert change
4157         to allow converting a native int to unmanaged pointer be verifiable
4158         under non-strict mode.
4159         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
4160
4161         * verify.c: Added some TODOs.
4162
4163 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
4164
4165         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
4166           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
4167           Changed to use GlobalAlloc for the memory returned on Windows platforms.
4168
4169         Code is contributed under MIT/X11 license.
4170
4171 2008-09-02  Jb Evain  <jbevain@novell.com>
4172
4173         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
4174
4175 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
4176
4177         reflection.c (typebuilder_setup_fields): Handle classes with
4178         explicit size.
4179
4180 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
4181
4182         class.c (mono_class_setup_events): Add memory barrier due to
4183         double checked locking.
4184         
4185         class.c (mono_class_setup_properties): Same.
4186
4187 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4188
4189         * class.c (mono_class_is_assignable_from): Fix the build.
4190         
4191         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
4192         before accessing klass->interface_bitmap. Fixes #421744.
4193
4194 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4195
4196         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
4197         the runtime into no-exec mode, useful when running the AOT compiler.
4198
4199         * appdomain.c gc.c object.c: Avoid executing managed code when running
4200         in no-exec mode.
4201         
4202         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
4203
4204         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
4205         special case when the mono_assembly_loaded () returns NULL because the 
4206         search hook is not installed.
4207
4208 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4209
4210         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
4211         crashes in bstr marshalling on linux.
4212
4213 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4214
4215         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
4216         with more than one parameter.
4217
4218 2008-08-24  Miguel de Icaza  <miguel@novell.com>
4219
4220         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
4221         start/stop flow control as well when turning off ICANON (allows
4222         C-s and C-q to be read by Console.ReadKey).
4223
4224 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4225
4226         * class.c (mono_class_init): Move the initialization of nested classes
4227         into mono_class_get_nested_types (). Fixes #418433.
4228
4229         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
4230         flag.
4231
4232         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
4233         iterating tough the nested classes of a class.
4234
4235 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4236
4237         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
4238         on arm.
4239
4240 2008-08-22  Miguel de Icaza  <miguel@novell.com>
4241
4242         * console-io.c (sigcont_handler): Support signal chaining for
4243         SIGCONT.
4244
4245         (console_set_signal_handlers): Use best practices with sigaction,
4246         clear the structure before using it. 
4247
4248 2008-08-22  Robert Jordan  <robertj@gmx.net>
4249
4250         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4251         Fix the Windows build.
4252
4253 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4254
4255         * class.c (mono_class_generic_sharing_enabled): Make the default
4256         sharing mode 'corlib'.
4257
4258 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * console-io.c (console_set_signal_handlers): Fix a warning.
4261
4262         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4263         method normally, the JIT will take care of avoiding recursion.
4264
4265 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4266
4267         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4268
4269         Code is contributed under MIT/X11 license.
4270
4271 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4272
4273         * console-io.c (sigcont_handler): We need to restore the entire
4274         termios state, not only the original settings, as things like echo
4275         can be controlled after this (Booish exposes this issue with its
4276         own ReadLine implementation).
4277
4278         Additionally, we need to set the terminal back into keypad_xmit
4279         mode.
4280         
4281         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4282         string as a paramter as well.   Otherwise we get different
4283         keyboard sequences.
4284
4285 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4286
4287         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4288         delegates with byref out parameter passing. Fixes #351520.
4289
4290         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4291         a generic context.
4292         (mono_type_get_desc): Add the type arguments for GENERICINST.
4293         (mono_method_full_name): Stringify the class name using mono_type_full_name
4294         so it picks up generic arguments.
4295
4296 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4297
4298         * console-io.c: Removed debug output.
4299
4300 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4301
4302         reflection.c (mono_reflection_create_runtime_class): Alloc
4303         the nested classes linked list using the dynamic image mempool.
4304         Fixes leak in corlib compilation.
4305
4306 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4307
4308         * console-io.c: Fix incredibly annoying behavior on the console
4309         after resuming execution after control-z.   This affected every
4310         console application.
4311
4312 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4313
4314         * mempool-internals.h: Header for mono private mempool functions. The first
4315         two function are for allocating glib linked lists using pools.
4316
4317         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4318
4319         * Makefile.am: Added mempool-internals.h.
4320
4321 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4322
4323         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4324         (mono_domain_free): Ditto.
4325
4326         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4327         be used by the JIT to store its domain-specific information, instead of putting
4328         it directly into MonoDomain.
4329
4330         * domain.c (mono_install_create_domain_hook): New helper function to install
4331         a hook which initializes domain->runtime_info.
4332
4333         * domain.c (mono_install_free_domain_hook): Ditto.
4334         
4335 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4336
4337         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4338         asserting if the ares parameter is null.
4339
4340         * mono-perfcounters.c: Fix warnings.
4341
4342         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4343         is not needed, don't check for interruptions either.
4344         (mono_marshal_get_delegate_end_invoke): Ditto.
4345
4346 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4347
4348         * mono-perfcounters.c (predef_readonly_counter): added support for
4349         reading the ASP.NET Requests Queued counter from another process.
4350
4351 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4354         MonoImage to simplify the AOT code.
4355
4356 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4357
4358         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4359         marshalling. Fixes #416078.
4360
4361 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4362         
4363         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4364         it is set, looking up the icall address is deferred to the JIT, since 
4365         in embedded scenarios, the icall might not be registered in the runtime
4366         doing the AOT compilation. Backported from the 2.0 branch.
4367
4368 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4371         Fixes #415621.
4372
4373 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4374
4375         * Makefile.am: added support for cross-compilation.
4376
4377 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4378
4379         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4380
4381 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4382
4383         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4384
4385 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4386
4387         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4388         mono-perfcounters.c: performance counters implementation.
4389
4390 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4391
4392         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4393         to gpointer, letting the AOT code decide what to store in it.
4394
4395 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4396
4397         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4398           mono_class_setup_methods if the methods are not initialized.
4399
4400         Code is contributed under MIT/X11 license.
4401
4402 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4403
4404         * verify.c: Remove some debug code I commited by accident.
4405
4406         * verify.c (mono_method_is_valid_in_context): Change the return value
4407         to make possible to distinguish between invalid and unverifiable.
4408
4409         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4410         methods.
4411
4412 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4413
4414         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4415         constraints. Fixes regression in gtest-253.
4416
4417 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4418
4419         * verify.c (mono_verifier_verify_class): Don't allow generic types
4420         with explicit layout.
4421
4422         * verify.c (mono_method_verify): Check locals and argument types.
4423
4424 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4425
4426         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4427         wait if the thread is in StopRequested state.
4428
4429         * class.c (mono_class_from_name): Refactor the module searching code into
4430         a separate function so it can be reused in the AOT case too.
4431
4432 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4433
4434         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4435         Check both the type and it's generic type definition for loader errors.
4436         
4437         * verify.c (mono_method_is_valid_in_context): Don't generate another
4438         error when a type errors occur, this leads to the wrong exception been
4439         thrown.
4440
4441 2008-07-28  Dick Porter  <dick@ximian.com>
4442
4443         * icall-def.h
4444         * process.c
4445         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4446         New internal calls to duplicate and close a process handle.
4447
4448 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4449
4450         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4451
4452 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4455
4456 2008-07-27  Robert Jordan  <robertj@gmx.net>
4457
4458         * class.c (mono_class_init): Don't compute class.has_finalize for
4459         valuetypes. Fixes #412477.
4460
4461 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4462
4463         * verify.c: Implement constraint equivalence checking.
4464         This is required when a generic parameter is used as
4465         argument to a constrained one.
4466
4467         Fixes #410637.
4468
4469 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4470
4471         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4472
4473         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4474
4475         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4476         synch with managed object layout.
4477
4478 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4479
4480         * verify.c (do_branch_op): Handle valuetypes and generic
4481         arguments properly.
4482
4483         * verify.c (do_cmp_op): Same.
4484
4485         Fixes #410383.
4486
4487 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4488
4489         * generic-sharing.c: Fix memory leaks.
4490
4491         * class.c, class-internals.h: Make
4492         mono_class_inflate_generic_type_with_mempool() non-static.
4493
4494 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4495
4496         * pedump.c (dump_verify_info): Dump full class name.
4497
4498 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4499
4500         * generic-sharing.c: Removed some old code that didn't do anything.
4501
4502 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4503         * profiler.c: Added runtime_initialized_event,
4504         mono_profiler_install_runtime_initialized and
4505         mono_profiler_runtime_initialized. This new hook tells the profiler
4506         when the runtime is sufficiently initialized to be able to call
4507         mono_thread_attach on the root appdomain.
4508         * profiler.h, profiler-private.h: Likewise.
4509
4510 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4511
4512         * verify.c (do_cast): Do boxing for generic arguments as well.
4513
4514         * class.c (is_nesting_type): Drop generic instantiations before
4515         checking for nesting.
4516
4517         * class.c (can_access_instantiation): Allow access to generic
4518         arguments.
4519
4520 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4521
4522         * verify.c (verify_class_for_overlapping_reference_fields):
4523         On some cases, the field size might be zero, guard against that.
4524         Fix the explicit layout check to work as expected.
4525
4526 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4527
4528         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4529         mono_thread_resume () during shutdown, since the thread we want to abort
4530         might be suspended.
4531
4532 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4533
4534         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4535         warning.
4536
4537         * debug-mono-symfile.c: Fix a warning.
4538
4539         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4540
4541         * object.c (mono_class_vtable): Check if exception_type is set, and return
4542         NULL as defined by the function comments.
4543
4544 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4545
4546         * mempool.c: Use malloc for every single mempool allocation if the
4547         configure option is set.  This makes it easier to track mempool
4548         allocations with tools like Valgrind.
4549
4550 2008-07-22  Jb Evain  <jbevain@novell.com>
4551
4552         * reflection.c (create_dynamic_mono_image): emit the same
4553         metadata version that SL2 does when creating a SL2 image.
4554
4555 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4556
4557         * icall-def.h:
4558         * icall.c: New icall System.Enum:get_hashcode. This function
4559         avoids the overhead of boxing the enum to the underlying type.
4560
4561 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4562
4563         * reflection.c (mono_method_get_object): Don't let static RGCTX
4564         invoke wrappers get into MonoReflectionMethods.
4565
4566 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
4567
4568         * object-internals.h:
4569         * object.c: New mono_runtime_class_init_full function
4570         that makes throwing the exception optinal.
4571
4572         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
4573         for the case where the exception object is supplied.
4574
4575 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
4576
4577         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
4578         old ld versions.
4579
4580         Contributed under MIT/X11 license.
4581
4582 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4583
4584         * string-icalls.c (ves_icall_System_String_InternalSplit):
4585         Optimize array allocation by caching the MonoClass of the
4586         array type.
4587
4588         * icall.c (ves_icall_Type_GetMethodsByName): Same.
4589
4590         * reflection.c (mono_param_get_objects): Same.
4591
4592 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4593
4594         * icall-def.h:
4595         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
4596         It inflates the given type using the class context.
4597
4598 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4599
4600         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
4601         the vtable if it already exists.
4602
4603         * object-internals.h: Add mono_class_try_get_vtable as part of the
4604         internal API.
4605
4606         * reflection.c (mono_type_get_object): Use the MonoObject from the
4607         vtable when possible. Reduces locking contention on reflection heavy
4608         code.
4609
4610 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
4611
4612         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
4613         g_bit_nth_msf () since that macro is not implemented in eglib.
4614
4615 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
4618         on platforms which do not support it.
4619
4620 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4621
4622         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
4623
4624 2008-07-11  Martin Baulig  <martin@ximian.com>
4625
4626         * mono-debug-debugger.h
4627         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
4628
4629         * mono-debug-debugger.c
4630         (_mono_debugger_interruption_request): New global volatile variable.
4631         (mono_debugger_check_interruption): New public function.
4632
4633         * threads.c
4634         (mono_thread_current_check_pending_interrupt): Call
4635         mono_debugger_check_interruption().
4636         (mono_thread_interruption_checkpoint_request): Likewise.
4637
4638 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4639
4640         * verify.c: Add more type checks for loaded types. Verify the result
4641         handle from ldtoken.
4642
4643 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4644
4645         * loader.c (field_from_memberref): Don't crash if the field
4646         wasn't found.
4647
4648 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4649
4650         * verify.c: Verify if type and method instantiations
4651         don't have invalid VAR or MVAR arguments.
4652
4653 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4654
4655         * verify.c: Fix double free of function pointer list.
4656
4657 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4658
4659         * object.c (mono_string_to_utf8): Comment the new code as it
4660         breaks under eglib.
4661
4662 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
4663
4664         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
4665
4666 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
4667
4668         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
4669           is not throw too many times.
4670
4671         Code is contributed under MIT/X11 license.
4672
4673 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4674
4675         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
4676         debugging is turned off.
4677
4678 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
4679
4680         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
4681
4682 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4683
4684         * class-internals.h, class.c: Added new generic sharing option:
4685         Share only stuff in System.Collections.Generic, which is now the
4686         default.
4687
4688 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4689
4690         * generic-sharing.c, class-internals.h: New function for getting a
4691         generic method in a generic class given the corresponding method
4692         for a different instantiation of the class.  Partly refactored
4693         from mini-trampolines.c.
4694
4695         * class.c: Make sure generic methods have a class_inst if they are
4696         part of a generic class.
4697
4698         * metadata.c (mono_type_stack_size_internal): Handle type
4699         variables.
4700
4701 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4702
4703         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
4704         Signifies whether information on the this/vtable/mrgctx variable
4705         is available.
4706
4707 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4708
4709         * object.c, object-internals.h, icall.c: New function
4710         mono_delegate_ctor_with_method(), which does the same as
4711         mono_delegate_ctor(), but takes an explicit method argument
4712         instead of taking the method from the jit info.
4713
4714         * marshal.c: When creating a delegate with an inflated method take
4715         the "this" argument as the target class for the castclass.
4716
4717 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4718
4719         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
4720         mono_jit_info_table_find() to perform very badly in some cases.
4721
4722 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4723
4724         * icall.c (type_from_typename): Handle 'string'.
4725
4726         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
4727         wrappers into the wrapper_hash, since the key is not a MonoMethod.
4728
4729 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4730
4731         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
4732
4733         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
4734         number of available managed allocator types.
4735
4736         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
4737         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
4738
4739 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
4742         which is a low level lock protecting just the 'jit_code_hash' hash table.
4743
4744         * domain.c: Initialize+cleanup jit_code_hash_lock.
4745         
4746 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4747
4748         * coree.c (mono_load_coree): Set coree_module_handle global variable only
4749         after initialization.
4750
4751         * coree.h: Make MonoFixupExe internal.
4752
4753         Contributed under MIT/X11 license.
4754
4755 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4756
4757         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
4758         because that is platform independent. Check NumberOfRvaAndSizes in PE32
4759         as well.
4760         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
4761         image being loaded is a CLI image and _CorValidateImage gets called.
4762
4763         * coree.h: Add MonoLoadImage.
4764
4765         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
4766         instead of LoadLibrary.
4767
4768         Contributed under MIT/X11 license.
4769
4770 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
4771
4772         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
4773         for any primitive type.
4774
4775 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4776
4777         * object.c (mono_array_new_specific): Optimize this and the other allocation
4778         functions a bit.
4779         
4780         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
4781         domains too if mono_dont_free_domains is set.
4782
4783         * domain-internals.h (mono_dont_free_domains): New internal option controlling
4784         whenever to free appdomain data after it has been unloaded.
4785
4786         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
4787         
4788 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
4789
4790         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
4791         (mono_method_get_equivalent_method): Fix a warning.
4792
4793         * object.c (mono_message_init): Avoid looking up array types for each call.
4794
4795 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4796
4797         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
4798         call.
4799
4800         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
4801         even more.
4802
4803         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
4804         each iteration.
4805
4806         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
4807         fields of an enum.
4808
4809 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
4810
4811         * object.c (mono_value_box): Fix boxing of nullables.
4812
4813 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4814
4815         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
4816         mono_module_handle that is defined by the linker; no initialization required.
4817         * coree.h: Remove mono_module_handle, add __ImageBase, update
4818         mono_image_open_from_module_handle.
4819         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
4820         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
4821         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
4822         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
4823         to 4 GB away from image base address. IA64 version is not tested but was very
4824         easy to implement and should work if we ever need it.
4825         * domain.c (mono_init_internal): Avoid system error message boxes.
4826         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
4827         with has_entry_point. Handle do_mono_image_load fauilre correctly.
4828         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
4829         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
4830         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
4831
4832         Contributed under MIT/X11 license.
4833
4834 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4835
4836         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
4837         as part of the private mono API.
4838         
4839         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
4840         Do proper argument checking for methods that belong to generic classes.
4841         Do proper type resolution for GMFH/2.
4842         Fixes #377324.
4843         
4844 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4845
4846         * verify.c (do_switch): Fix a memory corruption bug with
4847         the jump index is out of bound.
4848
4849 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4850
4851         * verify.c: Disable debug code.
4852
4853 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4854
4855         * reflection.c (mono_image_get_methodbuilder_token): Use
4856         mono_image_get_methodspec_token_for_generic_method_definition
4857         instead of mono_image_get_memberref_token. We cache more memberef
4858         entries now.
4859
4860 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4861
4862         * verify.c: Inflate exception clause types.
4863         Fixes #402606.
4864         
4865 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4866
4867         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
4868         name.
4869
4870         * reflection.c (mono_image_get_ctorbuilder_token): Same.
4871
4872         * reflection.c (mono_image_create_method_token): Same.
4873
4874 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4875
4876         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
4877         It does the same as mono_image_get_methodref_token but works on
4878         MethodBuilder.
4879
4880         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
4881         and always generate a methodspec. This follows the old behavior and fixes
4882         the regressions in System.Core. 
4883
4884 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
4885
4886         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
4887         don't event mono_class_get () succeeds. Fixes #402182.
4888
4889 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4890
4891         * metadata-internals.h: Added MonoDynamicImage::methodspec
4892         hashtable to store methodspec tokens created for MethodBuilders.
4893
4894         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
4895         MethodBuilders as open instantiations if a methodspec was requested.
4896
4897         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
4898
4899         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
4900
4901         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
4902
4903         Fixes bug #349190.
4904
4905 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
4906
4907         * loader.c (method_from_methodspec): Avoid crashing if the
4908         method lookup fails.
4909
4910 2008-06-20  Dick Porter  <dick@ximian.com>
4911
4912         * socket-io.c (get_socket_assembly): Cope with Moonlight network
4913         classes being in a different assembly.  Fixes bug 399184.
4914
4915 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
4916
4917         * loader.c (mono_loader_init): Make this callable multiple times.
4918         (mono_dllmap_insert): Call mono_loader_init () so this works even before
4919         the runtime is initialized. Fixes #401755.
4920
4921 2008-06-19  Dick Porter  <dick@ximian.com>
4922
4923         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
4924         Fixes bug 349688.
4925
4926 2008-06-19  Dick Porter  <dick@ximian.com>
4927
4928         * socket-io.c:
4929         * icall-def.h: Implement Socket generic Send() and Receive()
4930         methods.  Fixes bug 395168.
4931
4932 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
4933
4934         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
4935
4936         Contributed under MIT/X11 license.
4937
4938 2008-06-18  Martin Baulig  <martin@ximian.com>
4939
4940         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
4941         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
4942         set to 80.0.  The debugger <-> runtime interface is now frozen as
4943         well.   
4944
4945         * mono-debug.c
4946         (mono_debug_debugger_version): Bump to 4.
4947
4948 2008-06-18  Martin Baulig  <martin@ximian.com>
4949
4950         * debug-mono-symfile.c
4951         (load_symfile): Don't check the minor version.
4952
4953         * debug-mono-symfile.h: Bump the version number to 50.0.
4954
4955 2008-06-18  Martin Baulig  <martin@ximian.com>
4956
4957         * debug-mono-symfile.c
4958         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
4959         minimum required version.
4960
4961 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4962
4963         * reflection.c (mono_custom_attrs_from_property): Fix support for
4964         retriveving cattrs of dynamic inflated generic types.
4965
4966         * reflection.c (mono_custom_attrs_from_event): Same.
4967
4968         * reflection.c (mono_custom_attrs_from_field): Same;
4969
4970         * reflection.c (typebuilder_setup_events): Same cattrs of events.
4971
4972         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
4973         Moved to metadata.c.
4974
4975         * metadata.c: New functions to retrive the equivalent field, event
4976         of property from the generic type definition.
4977
4978         * metadata-internals.h: Added new functions from metadata.c.
4979
4980 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
4981
4982         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
4983         to cached in a mempool is used.
4984
4985         * metadata.c (free_generic_class): In some situations field generic_info type
4986         is not properly dup'ed and leads to double free'ing.
4987
4988         Fixes #400643.
4989
4990 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4991
4992         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
4993         this arguments (will be needed later for generic methods).
4994         Collect stats.
4995
4996 2008-06-17  Mark Probst  <mark.probst@gmail.com>
4997
4998         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4999         Create a static RGCTX invoke wrapper for methods which require it.
5000
5001 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5002
5003         * object.c, class-internals.h: New function for checking whether
5004         an individual field is special static.
5005
5006 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
5007
5008         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
5009         linear search since the table is sorted.
5010
5011         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
5012         Fixes #324180.
5013
5014 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
5015
5016         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
5017         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
5018
5019         * gc.c (mono_domain_finalize): Allow an infinite timeout.
5020
5021         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
5022         
5023         * threads.c (mono_thread_request_interruption): Get rid of locking, use
5024         InterlockedCompareExchange to query and modify 
5025         thread->interruption_requested.
5026
5027         * object-internals.h (struct _MonoThread): Change interruption_requested
5028         to a gint32 so it can be modified by atomic operations. Add 
5029         'critical_region_level' from the managed side, change small_id to a guint32,
5030         add new set of 'unused' fields.
5031
5032         * appdomain.c: Bump corlib version.
5033
5034 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5035
5036         * class.c (mono_class_from_name): Search modules as well. Fixes
5037         #322332.
5038
5039 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5040
5041         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
5042         templates.  Templates are generalized with an additional type_argc
5043         argument.  RGCTX templates have type_argc==0, MRGCTX templates
5044         have type_argc>0.
5045
5046         * domain-internals.h, domain.c: New hash table for looking up
5047         MRGCTXs.
5048
5049         * metadata.c, metadata-internals.h: Rename hash and equal
5050         functions for MonoGenericInst's and make them public.
5051
5052         * class-internals.h: New data structures for the MRGCTX.  Macros
5053         for distinguishing slots in the RGCTX and the MRGCTX.
5054
5055 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5056
5057         * object.c (mono_method_get_imt_slot): Put the same methods of
5058         different instantiations of the same generic interface in the same
5059         IMT slots, to make generic sharing simpler.
5060
5061 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5062
5063         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
5064
5065         * metadata.c (mono_metadata_field_info_with_mempool): Added.
5066         This function works just like mono_metadata_field_info, but
5067         accept a mempool as argument to be used allocating memory.
5068
5069         * marshal.c (mono_marshal_load_type_info): Use new function
5070         to load marshal data into image mempool.
5071
5072 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5073
5074         * class.c (mono_class_inflate_generic_type_with_mempool):
5075         This function allows to inflate a generic type using
5076         a mempool.
5077
5078         * class.c (inflate_generic_type): Take a mempool as argument
5079         and use it to do type dup'ing.
5080
5081         * class.c (mono_class_setup_fields): Field type for generic
5082         generic classes are allocated from the image mempool.
5083
5084         * metadata.c (free_generic_class): Inflated field type is
5085         now allocated in the image mempool.
5086
5087 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5088
5089         * threads.c (thread_cleanup): Free MonoThread::name.
5090
5091 2008-06-12  Marek Habersack  <mhabersack@novell.com>
5092
5093         * appdomain.c (ensure_directory_exists): avoid unnecessary
5094         mkdir(2) calls when the shadow directory already exists.
5095         (mono_make_shadow_copy): copy also satellite assemblies from the
5096         private bin directories.
5097
5098 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5099
5100         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
5101         
5102         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
5103         a page boundary. Fixes #396219.
5104
5105 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5106
5107         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
5108         due to double-checked locking.
5109
5110 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5111
5112         * assembly.c (build_assembly_name): Release memory on failure.
5113
5114         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
5115
5116 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5117
5118         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
5119         memory on failure.
5120
5121 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5122
5123         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
5124         memory on failure.
5125
5126 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5127
5128         * loader.c (field_from_memberref): Check if field signature type is equal
5129         to the non-inflated type of the field. Fixes #398980.
5130
5131 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5132
5133         * assembly.c (mono_assembly_load_from_full): Call 
5134         mono_assembly_load_friends () outside the assemblies lock, since it can
5135         acquire the loader lock. Fixes #323696.
5136
5137         * reflection.c (resolve_object): Inflate the inst with the context for
5138         FieldOnTypeBuilderInst. Fixes #399010.
5139
5140 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5141
5142         * reflection.c (mono_image_get_field_on_inst_token): Don't
5143         inflate the field to encode it's signature. If it's a
5144         VAR or MVAR it should stay that way in the signature.
5145         Fixes #399047.
5146
5147 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5148
5149         * reflection.c (resolve_object): Release memory of inflated types.
5150
5151 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5152
5153         * loader.c (mono_method_get_signature_full): Remove assert about
5154         loading a methodspec to a generic method. We have such methods, such as
5155         System.Threading.Interlocked::CompareExchange<T>.
5156         This assert was removed since it crashes the verifier when it checks
5157         methods calling CompareExchange<T>.
5158
5159 2008-06-10  Marek Safar  <marek.safar@gmail.com>
5160
5161         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
5162         of Type array and not MonoType.
5163
5164 2008-06-10  Marek Habersack  <mhabersack@novell.com>
5165
5166         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
5167         <lupus@ximian.com>
5168
5169 2008-06-10  Martin Baulig  <martin@ximian.com>
5170
5171         * debug-mono-symfile.h
5172         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
5173         changes to the file format, but we were generating incorrect
5174         source file indices in the line number table due to a bug, which
5175         made backtraces report an incorrect source file.
5176
5177 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5178
5179         * mono-debug.c: Moved mono_debug_free_method_jit_info from
5180         mini/debug-mini.c to here.
5181
5182         * mono-debug.c (il_offset_from_address): Free memory from find_method.
5183
5184         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
5185         use it to release structs returned by mono_debug_find_method.
5186
5187 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
5188
5189         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
5190         since it needs to set method->slot for all interface methods.
5191
5192 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5193
5194         * class-internals.h: Forgot to add.
5195
5196 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5197
5198         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
5199
5200         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
5201         Lookup the custom attributes from property_hash.
5202
5203         * reflection.c (mono_save_custom_attrs): Save the custom attributes
5204         in property_hash. Allocate all data using the image mempool.
5205
5206         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
5207         for dynamic_custom_attrs to checks if the image is dynamic.
5208
5209 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5210
5211         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
5212         assemblies array.
5213         
5214         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
5215         runtime functions while holding the domain assemblies lock.
5216
5217 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5218
5219         * verify.c: Reapplied the last bit of the reverted changes.
5220
5221 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5222
5223         * verify.c: Reapplied more of the reverted changes.
5224
5225 2008-06-09  Martin Baulig  <martin@ximian.com>
5226
5227         * debug-mono-symfile.c (load_symfile): Check the major version
5228         first; if it's wrong, don't print the minor version in the error message.
5229
5230 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5231
5232         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
5233         lock instead of the domain lock to avoid deadlocks, since the thread might
5234         already hold the loader lock.
5235
5236         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
5237         (mono_thread_attach): Ditto.
5238
5239         * monitor.c: Use a TLS variable for holding the current thread id instead
5240         of calling pthread_self ().
5241         (mono_monitor_init_tls): New internal function to initialize the TLS
5242         variable.
5243         (mono_monitor_try_enter_internal): Put the owner == id check after the
5244         owner == 0 check.
5245
5246         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
5247         missed optimizations when using gcc-4.3.
5248
5249 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
5250
5251         * reflection.c (mono_dynamic_image_free): Free the memory
5252         used by MonoGenericParam in MonoDynamicImage::gen_param.
5253
5254         * reflection.c (mono_reflection_setup_generic_class): Allocate
5255         container from mempool.
5256
5257         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5258         container from mempool.
5259
5260 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5261
5262         * threads.c (mono_set_pending_exception): New internal function to set the
5263         pending exception of the current thread.
5264         (mono_thread_get_and_clear_pending_exception): Check for 
5265         thread->pending_exception as well.
5266
5267         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5268
5269         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5270         it can trigger a collection.
5271
5272 2008-06-06  Martin Baulig  <martin@ximian.com>
5273
5274         Merged the `debugger-kahalo' branch.
5275
5276         * mono-debug.h
5277         (MONO_DEBUGGER_VERSION): Bumped to 72.
5278
5279         * debug-mono-symfile.h
5280         (MonoSymbolFileMethodIndexEntry): Removed.
5281         (MonoSymbolFileMethodEntry): New public typedef.
5282         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5283         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5284         `data_offset'.
5285         (MonoSymbolFileMethodEntry): Removed.
5286         (MonoSymbolFileLexicalBlockEntry): Removed.
5287         (MonoSymbolFileLineNumberEntry): Removed.
5288         (MonoDebugLexicalBlockEntry): Removed.
5289         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5290         removed `num_il_offsets' and `il_offsets'.
5291         (MonoSymbolFile): Replace `version' with `major_version' and
5292         `minor_version'.
5293         (MONO_SYMBOL_FILE_VERSION): Replace with
5294         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5295         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5296
5297         * debug-mono-symfile.c
5298         (mono_debug_symfile_lookup_location): Add support for the new line
5299         number table format.
5300
5301 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5302
5303         * metadata.c (free_generic_class): Release the inflated
5304         MonoClass of dynamic generic classes if it's not a generic
5305         type definition.
5306
5307 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5308
5309         * verify.c: Reapplied more of the reverted changes.
5310
5311 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5312
5313         * reflection.c (lookup_custom_attr): Clean the cached flag or
5314         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5315         for SRE types.
5316
5317 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5318
5319         * verify.c: Reapplied a small part of the reverted changes.
5320
5321 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5322
5323         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5324
5325         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5326         previously in managed code.
5327         (mono_monitor_exit): Ditto.
5328         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5329
5330         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5331         the managed definition.
5332
5333 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5334
5335         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5336
5337 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5338
5339         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5340         
5341         * monitor.c: Add some micro optimizations.
5342
5343         * icall.c (type_from_typename): Handle 'bool'.
5344
5345 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5346
5347         * verify.c: Implement constructor verification per P III 1.8.1.4.
5348         Fixes #396716.
5349
5350 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5353         holding the assemblies lock here too.
5354
5355 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5356
5357         * verify.c: Kill stack_top function.
5358
5359 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5360
5361         * verify.c: Kill stack_get function.
5362
5363 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5364
5365         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5366
5367 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5368
5369         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5370         more reliable.
5371
5372         * verify.c (mono_method_verify): Inflate params and locals to avoid
5373         mismatch when checking for compatibility.
5374
5375 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5376
5377         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5378         Length prefix should be size in bytes. Fix bug #339530.
5379         
5380         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5381         Length prefix should be size in bytes. Fix bug #339530.
5382
5383         Code is contributed under MIT/X11 license.
5384
5385 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5386
5387         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5388
5389         Contributed under MIT/X11 license.
5390
5391 2008-06-05  Martin Baulig  <martin@ximian.com>
5392
5393         * mono-debug-debugger.c
5394         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5395
5396 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5399         while holding the assemblies lock to prevent deadlocks. Handle the case
5400         where the search hook returns NULL but the assembly was still loaded.
5401         Fixes #323696.
5402
5403         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5404         modify domain state.
5405
5406 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5407
5408         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5409         * Makefile.am (pedump_LDADD): Post-process object files and
5410         add dtrace-generated object file, if necessary.
5411
5412         Code is contributed under MIT/X11 license.
5413
5414 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5415
5416         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5417
5418 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5419
5420         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5421
5422 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5423
5424         * threads.c: Try to free everything from the delayed free table
5425         when shutting down threads, and set the variable to NULL after the
5426         table is freed so that calling
5427         mono_thread_hazardous_try_free_all() when shutting down the root
5428         domain doesn't crash.
5429
5430 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5431
5432         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5433         the caller if resulting type was inflated.
5434
5435         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5436         was inflated.
5437
5438         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5439
5440
5441 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5444         class library tests.
5445
5446         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5447         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5448         #396989.
5449
5450 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5451
5452         * domain.c, domain-internals.h: The JIT infos are now freed by the
5453         JIT info table code.  They are freed immediately if there only a
5454         single JIT info table in circulation.  If there is more, the free
5455         is delayed via a queue.
5456
5457         * threads.c, threads-types.h: New hazard pointer function for
5458         freeing all freeable delayed items in one sitting.
5459
5460 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5461
5462         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5463
5464         * reflection.c (typebuilder_setup_properties): Same.
5465
5466         * reflection.c (typebuilder_setup_events): Same.
5467
5468 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5469
5470         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5471         and use it for allocating memory.
5472
5473         * reflection.c (mono_marshal_spec_from_builder): Same.
5474
5475         * reflection.c: Change code to use new signatures.
5476
5477         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5478
5479 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5480
5481         * decimal.c (rescale128): Put back one line which was accidently commented
5482         out.
5483         
5484         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5485         to cause crashes.
5486
5487 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5488
5489         * reflection.c (mono_reflection_generic_class_initialize): Name must
5490         be always malloc'ed so we can free it later on. Do this for field, property
5491         and event.
5492
5493         * metadata.c (free_generic_class): Free field, property and event names.
5494
5495 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5496
5497         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5498         instead of g_memdup.
5499
5500         * reflection.c (typebuilder_setup_fields): Same.
5501
5502 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * decimal.c (rescale128): Optimize this function a bit more.
5505
5506 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * metadata.c (free_generic_class): Release some memory from
5509         SRE generic classes.
5510
5511 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5512
5513         * reflection.c (mono_image_get_generic_field_token): No reference
5514         to name is kept, free it.
5515
5516         * reflection.c (mono_reflection_generic_class_initialize): Free
5517         more memory of the inflated field.
5518
5519 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5520
5521         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5522         code.
5523
5524 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5525
5526         * reflection.c (mono_dynamic_image_free): Release memory used by
5527         MonoDynamicImage::array_methods elements.
5528
5529         * reflection.c (assembly_add_win32_resources): Release memory after
5530         encoding.
5531
5532 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5533
5534         * decimal.c (log2_32): Use an optimized version for this function too.
5535         
5536         * decimal.c (log2_64): Fix this on 32 bit machines.
5537
5538 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5539
5540         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5541
5542         * class.c (mono_metadata_signature_deep_dup): Same.
5543
5544         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5545         a mempool.
5546
5547         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5548
5549         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5550
5551         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5552
5553         * class-internals.h: Update signatures to take a MonoMemPool.
5554
5555 2008-06-02  Dick Porter  <dick@ximian.com>
5556
5557         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5558         * icall-def.h: Add
5559         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5560         FormatMessage API to get the error text.  Fixes bug 321827.
5561
5562 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * decimal.c: Add some micro optimizations to make decimal operations faster.
5565
5566 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5567
5568         * reflection.c (method_encode_clauses): Take a mempool
5569         as parameter and use it to allocate the clause array.
5570
5571         * reflection.c (mono_image_get_field_on_inst_token): Free
5572         the inflated type after encoding it.
5573
5574         * reflection.c (mono_dynamic_image_free): Free each element
5575         of MonoDynamicImage::gen_params.
5576
5577         * reflection.c (reflection_methodbuilder_to_mono_method):
5578         Allocate the generic param array from the mempool.
5579         Allocate signature params from the mempool.
5580
5581         * reflection.c (mono_reflection_generic_class_initialize):
5582         Free inflated fields after been used.
5583
5584 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5585
5586         * icall.c: Reapply the memory leak fixes as they no
5587         longer make mono crash.
5588
5589 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * reflection.c (mono_type_get_object): Don't store the suplied
5592         MonoType with type_hash. A caller which pass a type that
5593         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
5594         might end with a pointer to freed memory.
5595         The solution is to use byval_arg or this_arg from the associated
5596         MonoClass of the supplied type.
5597
5598 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
5599
5600         * icall.c: Revert the rest of the last change as it breaks the build too.
5601
5602 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5603
5604         * icall.c: Revert a leak fix as it's breaking the build.
5605
5606 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5607
5608         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
5609
5610 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5611
5612         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
5613
5614 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5615
5616         * icall.c: Fix some memory leaks.
5617
5618 2008-05-29  Dick Porter  <dick@ximian.com>
5619
5620         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
5621         async socket operations from the pending list when a socket
5622         closes.  Leaving it until the threadpool services the event
5623         exposes a race condition when a socket descriptor is reused.
5624         Fixes bug 377589.
5625
5626 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5627
5628         * object.c: Fix negative index check for array alocation.
5629
5630 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5631
5632         * icall.c, marshal.c: Delegate wrappers should skip visibility.
5633         This check is performed by the verifier for IL created delegates
5634         and by Delegate::CreateDelegate for programatically created ones.
5635         Fixes #372406.
5636
5637 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5638
5639         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
5640         Fix code to use mono_array_size_t instead of int.
5641
5642         Based on patch by Luis F. Ortiz.
5643         Contributed under X11 license.
5644         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5645
5646 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5647
5648         * icall.c: Added ves_icall_System_Array_GetLongLength and
5649         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
5650         arrays.
5651
5652         * icall.h: Export both new functions.
5653
5654         Based on patch by Luis F. Ortiz.
5655         Contributed under X11 license.
5656         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5657
5658 2008-05-28  Martin Baulig  <martin@ximian.com>
5659
5660         The debugger now requires exactly r103463.
5661
5662         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
5663         This version is not supported by the debugger, wait for 72.
5664
5665 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5666
5667         * object.h: Changed array related functions to use
5668         mono_array_size_t instead of guint32. Forgot to commit this file.
5669
5670         Patch by Luis F. Ortiz.
5671         Contributed under X11 license.
5672         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5673
5674
5675 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5676
5677         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
5678         don't define it. Use the number literal instead.
5679
5680 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * icall.c: Changed array related functions to use
5683         mono_array_size_t instead of guint32.
5684
5685         * icall.c (ves_icall_System_Array_GetLength): Check for length
5686         overflow under MONO_BIG_ARRAYS.
5687
5688         Based on patch by Luis F. Ortiz.
5689         Contributed under X11 license.
5690         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5691
5692 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5693
5694         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
5695
5696         Based on patch by Luis F. Ortiz.
5697         Contributed under X11 license.
5698         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5699
5700 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5701
5702         * object.c, object.h: Changed array related functions to use
5703         mono_array_size_t instead of guint32.
5704
5705         Patch by Luis F. Ortiz.
5706         Contributed under X11 license.
5707         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5708
5709 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5710
5711         * object.h: Introduced mono_array_size_t typedef. This must be used
5712         in all places an array length is expected. This is 64bits wide if
5713         MONO_BIG_ARRAYS is enabled.
5714
5715         Patch by Luis F. Ortiz.
5716         Contributed under X11 license.
5717         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5718
5719 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * security-manager.c class.c: Set the class exception info by calling
5722         mono_class_set_failure ().
5723
5724         * class.c (mono_class_get_exception_data): New accessor function.
5725         (mono_class_set_failure): Store exception_data in the property hash.
5726
5727         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
5728         the struct as a property.
5729
5730         * loader.c (mono_get_method_full): Store the lookup result for method
5731         tokens in method_cache, the others in methodref_cache to decrease the memory
5732         usage of hash tables.
5733
5734         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
5735         (mono_image_init): method_cache is lazy inited now.
5736
5737         * metadata-internals.h (struct _MonoImage): Change method_cache to
5738         a MonoValueHashTable, add a separate methodref_cache.
5739
5740 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
5741
5742         * number-formatter.h: Fix tables to avoid arithemtic overflow in
5743           Double.ToString as exposed by Bug #383531.
5744
5745 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * number-formatter.h: Make some tables static.
5748
5749         * class.c (mono_method_set_generic_container): New accessor function.
5750         (mono_method_get_generic_container): Ditto.
5751
5752         * class-internals.h (struct _MonoMethod): Remove rarely used 
5753         'generic_container' field, store it in the property hash instead. Add 
5754         'is_generic' boolean field instead.
5755
5756         * image.c (mono_image_init): Initialize property_hash.
5757         (mono_image_close): Destroy property_hash.
5758
5759         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
5760         hold rarely used fields of runtime structures belonging to this image.
5761
5762         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
5763         to get/set method->generic_container.
5764
5765         * loader.c (mono_get_method_from_token): Avoid loading the method header for
5766         generic methods.
5767
5768 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
5769
5770         * class.c (mono_class_inflate_generic_method_full): Don't increase
5771         mono_stats.inflated_method_count for methods found in the cache.
5772
5773         * threads.c (mono_thread_request_interruption): Add a comment about 
5774         QueueUserAPC ().
5775
5776 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
5777
5778         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
5779         interface_offsets_packed table.
5780         
5781         * class.c (mono_class_init): Remove some dead code.
5782
5783         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
5784         mono_class_setup_vtable () when CAS is active to detect security problems.
5785
5786 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
5787
5788         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
5789
5790         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
5791         parameters as it's irrelevant for delegate checking.
5792
5793 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
5794
5795         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
5796
5797         * class.c (mono_class_init): Control the creation of a generic vtable using
5798         a global which is true by default, but set to false by the runtime startup code.
5799         
5800         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
5801         Disabled for now since it breaks the embedding API.
5802         Move the setup of class->methods for arrays to mono_class_setup_methods ().
5803         (mono_class_setup_methods): Add a memory barrier.
5804
5805         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
5806         when mono_class_init () doesn't compute the generic vtable.
5807         
5808 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
5809         * profiler.c: Added mono_profiler_install_statistical_call_chain,
5810         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
5811         to support call chains (backtrace) in the stat profiler.
5812         * profiler.c, profiler-private.h: Likewise.
5813
5814 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5815
5816         * generic-sharing.c: Init generic class when a method of it is
5817         requested via a runtime generic context.
5818
5819 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
5820
5821         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
5822
5823         * reflection.c (mono_type_get_object): Add a FIXME.
5824
5825         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
5826
5827         * class.c (mono_class_get_method_by_index): New helper function, returning an
5828         entry in the class->methods array.
5829
5830 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5831
5832         * class.c (mono_class_init): Only do the array optimization for szarrays. 
5833         Avoid creating a generic vtable for generic instances as well.
5834         (mono_class_get_method_from_name_flags): Don't search in the metadata for
5835         generic instances.
5836
5837 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5838
5839         * loader.c (mono_get_method_constrained): Inflate the signature
5840         with class context. Fix #325283.
5841
5842 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5843
5844         * object.c (mono_class_create_runtime_vtable): Add a comment.
5845
5846         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
5847         where needed.
5848         (setup_interface_offsets): Handle the case when this is called twice for arrays.
5849         (mono_class_setup_vtable_general): Add an assert.
5850         (mono_class_init): Avoid creating a generic vtable for arrays.
5851
5852         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
5853         here, let mono_class_init () do that.
5854
5855         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
5856         interfaces in mscorlib.
5857
5858         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
5859         interfaces. Add some comments.
5860         (mono_class_init): Call mono_class_setup_methods () here since it is no
5861         longer called by mono_class_setup_vtable ().
5862
5863         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
5864         not set in class->vtable.
5865         (mono_class_create_runtime_vtable): Reenable the disabled code.
5866
5867         * object.c (mono_class_create_runtime_vtable): Disable the last change for
5868         now as it causes some test failures.
5869
5870         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
5871         if using the vtable trampoline. Also remove some strange code which put the
5872         generic methods themselves into the vtable slots. Remove the AOT init_vtable
5873         stuff as it is no longer needed.
5874
5875 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5876
5877         * pedump.c: Give make --verify all option check code as well.
5878         Using --verify code won't check for metadata now.
5879
5880 2008-05-19  Martin Baulig  <martin@ximian.com>
5881
5882         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
5883
5884         * mono-debug.c
5885         (_mono_debug_using_mono_debugger): New global variable; it's set
5886         directly by the debugger, so mono_debug_using_mono_debugger() also
5887         works after attaching.
5888
5889 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
5890
5891         * object.c (mono_class_create_runtime_vtable): Use memory barriers
5892         as we do double checked locking on MonoClass::runtime_info and
5893         MonoClassRuntimeInfo::domain_vtables.
5894
5895 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
5896
5897         * debug-helpers.c (print_field_value): Fix a warning.
5898
5899 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
5900
5901         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
5902         set in the AOT case.
5903
5904 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5905
5906         * class.c (mono_class_setup_vtable_general): Use memory barriers
5907         as we do double checked locking on MonoClass::vtable.
5908
5909 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
5910
5911         * reflection.c (resolve_object): Inflate only if the generic context
5912         is not null. Fixes #389886.
5913
5914 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
5915
5916         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
5917         instead of g_free.
5918
5919         Code is contributed under MIT/X11 license.
5920
5921 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5922
5923         * class.c: Revert unrelated change.
5924
5925 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5926
5927         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
5928         a generic instantiation, use mono_class_from_mono_type instead of playing
5929         with MonoType directly.
5930
5931 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
5932
5933         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
5934         checks must ignore generic instantiations, so mono_class_has_parent is not
5935         suitable. Fixes #390128.
5936
5937 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
5938
5939         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
5940         it to avoid registering tokens during metadata generation. Fixes #390023.
5941
5942 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5943
5944         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
5945         consistent.
5946
5947         Contributed under MIT/X11 license.
5948
5949 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
5950
5951         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
5952         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
5953         to fixup the EXE image.
5954         (mono_cleanup): Use mono_close_exe_image.
5955         (mono_close_exe_image): New function.
5956         * image.c: Include "marshal.h".
5957         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
5958         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
5959         counting when the image is loaded outside of mono_image_open_full. Set status
5960         based on GetLastError.
5961         * coree.c: Include required headers. Add init_from_coree.
5962         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
5963         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
5964         (_CorExeMain): Set init_from_coree.
5965         (CorExitProcess): Only call ExitProcess for now.
5966         (CorBindToRuntimeEx): New stub implementation.
5967         (CorBindToRuntime): New function.
5968         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
5969         (MonoFixupExe): ILONLY executables require no fixups.
5970         (mono_set_act_ctx): New function to set activation context.
5971         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
5972         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
5973         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
5974         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
5975         as MONO_INTERNAL.
5976         * domain-internals.h: Add mono_close_exe_image.
5977
5978         Contributed under MIT/X11 license.
5979
5980 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
5981
5982         * metadata.c (mono_metadata_compute_size): Correctly calculate field
5983         size for generic param and event tables. Fixes #388977.
5984
5985 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * loader.c (mono_method_signature): Use memory barriers because of the double
5988         checked locking pattern.
5989
5990         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
5991         aborting or aborted as well. Fixes #376391.
5992         
5993         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
5994         existing runtime state in the Suspend handler during shutdown.
5995
5996 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
5999
6000         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
6001         which are starting up or shutting down.
6002
6003         * threads.c (mono_threads_set_shutting_down): Don't return a value since
6004         this function never returns if the runtime is already shutting down.
6005
6006         * icall.c (ves_icall_System_Environment_Exit): Update after 
6007         mono_threads_set_shutting_down () signature change.
6008         
6009 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
6010
6011         * class.c: Added can_access_instantiation to verify if the instantiation
6012         is visible. Fix access check for nested types as they returned TRUE
6013         before doing type and generic instantiation visibility checks.
6014
6015 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6016
6017         * reflection.c (mono_reflection_create_generic_class): The created type
6018         must have a different container from its TypeBuilder. Otherwise they
6019         will end sharing generic arguments, which is wrong.
6020
6021         Due to the sharing, making a generic instance of the created type using
6022         the TypeBuider generic arguments resulted in the generic type definition
6023         been returned, which is wrong as well.
6024
6025         As a bonus the code was leaking the type_params array. This memory should
6026         be allocated from the image mempool.
6027
6028         This fixes bug #354047.
6029
6030 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6031
6032         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
6033         to here         as they are now used in assembly.c new code.
6034         Added a skipverification flag to MonoAssembly.
6035         New internal function mono_assembly_has_skip_verification.
6036
6037         * assembly.c: New function mono_assembly_has_skip_verification. It checks
6038         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
6039         part of #387274.
6040
6041 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
6044         needed. Fixes #387034.
6045
6046         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
6047
6048 2008-05-06  Miguel de Icaza  <miguel@novell.com>
6049
6050         * assembly.c (mono_assembly_load_reference): Prevent crash while
6051         disassembling Silverlight 2.0 executables while we still do not
6052         have GACed libraries.
6053
6054 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6055
6056         * reflection.c: Special case generic type definitions as well. Fixes #383444.
6057
6058 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
6059
6060         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
6061         of the dynamic case. Fixes #387404.
6062
6063 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6064
6065         *verify.c (mono_verifier_is_class_full_trust): If under
6066         verify_all and the verifier mode was not set, only
6067         gac and corlib types are fulltrust. This makes --verify-all
6068         usable to detect unverifiable code, which is the expected
6069         use case.
6070
6071 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6072
6073         * verify.h: Ops, commited the header with debug
6074         enabled.
6075
6076 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6077
6078         * verify.c (merge_stack): Use the new value on unverifiable
6079         stack merges.
6080
6081         * verify.c (verify_type_compatibility_full): Comparison
6082         of nullable types can't use mono_class_is_assignable_from.
6083
6084         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
6085         that makes all verification errors be reported.
6086
6087         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
6088         mono_method_verify.
6089
6090 2008-05-05  Robert Jordan  <robertj@gmx.net>
6091
6092         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
6093         support for value types. See #386415.
6094
6095         * object.c: comments.
6096
6097         Code is contributed under MIT/X11 license.
6098
6099 2008-05-05  Martin Baulig  <martin@ximian.com>
6100
6101         * debug-mono-symfile.h
6102         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
6103         for old pre-terrania symbol files.
6104
6105 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6106
6107         * mono-config.c: Add ppc64 architecture.
6108
6109         Code is contributed under MIT/X11 license.
6110
6111 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6112
6113         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
6114           PPC64 uses function descriptors as well.
6115
6116         Code is contributed under MIT/X11 license.
6117
6118 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
6119
6120         * object.c (compute_class_bitmap): Ignore literal static fields.
6121
6122         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
6123         var has an invalid format.
6124         (describe_ptr): Add some sanity checks for the vtable.
6125         (add_nursery_frag): Clear unused nursery fragments.
6126         (major_collection): Clear all remaining nursery fragments.
6127
6128 2008-05-03  Robert Jordan  <robertj@gmx.net>
6129
6130         * image.c, metadata-internals.h: add thunk_invoke_cache.
6131
6132         * marshal.c, marshal.h: implement
6133         mono_marshal_get_thunk_invoke_wrapper ().
6134
6135         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
6136
6137         Code is contributed under MIT/X11 license.
6138
6139 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6140
6141         * verify.c (do_leave): Empty the stack.
6142
6143 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6144
6145         * class.c (mono_class_is_assignable_from): Variance
6146         doesn't work between reference and value types. For example,
6147         given type C<T+>, C<int32> is not assignable to C<object>.
6148         Break the argument checking loop on first error. 
6149
6150 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
6151
6152         * icall.c : base64_to_byte_array() needs some more strict
6153           check for sequence of '=' characters. Patch by Santa
6154           Marta (http://deee.g.hatena.ne.jp/santamarta).
6155
6156           Contributed under MIT/X11 license.
6157           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
6158
6159 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
6160
6161         * domain.c: Disable LoadLibrary support to fix Win32 build.
6162
6163         Code is contributed under MIT/X11 license.
6164
6165 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
6166
6167         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
6168         to help with cache behaviour.
6169
6170 2008-05-01  Miguel de Icaza  <miguel@novell.com>
6171
6172         * appdomain.c (mono_domain_from_appdomain): Add new accessor
6173         method. 
6174
6175 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
6176
6177         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
6178
6179 2008-05-01  Dick Porter  <dick@ximian.com>
6180
6181         * process.c (process_get_fileversion): Only pass 16 bits of
6182         language ID to VerLanguageName.  Fixes bug 381204.
6183
6184 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6185
6186         * verify.c (mono_method_verify): Fix the comparison
6187         operator for code bounds check.
6188
6189 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6190
6191         * verify.c (mono_method_verify): Check the bounds of
6192         all access of the code array.
6193
6194 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
6195
6196         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
6197
6198 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * image.c (mono_image_strong_name_position): Fix return value when the rva is
6201         not valid.
6202
6203 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6204
6205         * loader.c (mono_get_method_from_token, mono_method_signature): Add
6206         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
6207         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
6208         fixup main EXE images when using mono.exe for mixed-mode assembly support.
6209         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
6210         mono_runtime_load.
6211         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
6212         runtime initialization from metadata.
6213         * assembly.c: Remove obsolete ceGetModuleFileNameA.
6214         (mono_set_rootdir): Use mono_get_module_file_name.
6215         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
6216         handles.
6217         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
6218         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
6219         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
6220         MonoCLIImageInfo. Add support for module handles.
6221         (load_cli_header): Update mono_cli_rva_image_map signature.
6222         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
6223         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
6224         (mono_image_rva_map): Add support for module handles.
6225         (mono_image_ensure_section_idx): Add support for module handles.
6226         (mono_image_close): Add support for module handles.
6227         (do_load_header): Add support for module handles.
6228         (mono_image_open_from_module_handle): New function for internal use.
6229         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
6230         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
6231         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
6232         handles.
6233         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
6234         * image.h: Add mono_image_fixup_vtable.
6235         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
6236         support.
6237         * coree.h: New file.
6238         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
6239         unsupported native code.
6240         (mono_marshal_set_callconv_from_modopt): New function splitted from
6241         mono_marshal_get_managed_wrapper.
6242         (mono_marshal_get_managed_wrapper): Use
6243         mono_marshal_set_callconv_from_modopt.
6244         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
6245         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
6246         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
6247         that results in a deadlock when the runtime is loaded in _CorDllMain.
6248         * Makefile.am: Add coree.c and coree.h.
6249
6250         Contributed under MIT/X11 license.
6251
6252 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6253
6254         * generic-sharing.c: Search for type arguments in array element
6255         types as well.
6256
6257 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6258
6259         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6260
6261         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6262
6263         * object.c: Don't setup the RGCTX when the vtable is created,
6264         because we're setting it up lazily now.
6265
6266 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6267
6268         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6269         64 bit support.
6270
6271 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6272
6273         * verify.c (verify_class_for_overlapping_reference_fields): 
6274         If class is under fulltrust allow reference types to overllap
6275         if they have the same RVA.
6276
6277 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6278
6279         * pedump.c: Added new flag valid-only, that makes the verifier
6280         behaves just like --security=validil. It won't fail type load
6281         due to unverifiable restrictions.
6282
6283 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6284
6285         * class-internals.h (struct MonoMethod): Added a verification_success
6286         field to cache verifier executions. Reduced MonoMethod:slot size by
6287         one bit.
6288
6289 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6292         instead of a 'vt' argument to save an indirection and to allow these to be used
6293         for valuetypes.
6294         (scan_vtype): New helper function to scan an area using a gc descriptor.
6295         (mono_gc_wbarrier_value_copy): Implement this.
6296         (handle_remset): Add support for REMSET_VTYPE.
6297         (find_in_remset_loc): Ditto.
6298         (mono_gc_base_init): Allow some debugging options to be controlled through the
6299         use of the MONO_GC_DEBUG env variable.
6300         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6301         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6302
6303 2008-04-23  Martin Baulig  <martin@ximian.com>
6304
6305         * domain.c (mono_domain_create): Move the call to
6306         mono_debug_domain_create() down, after allocating the domain id.
6307
6308 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6309
6310         verify.c (verify_class_for_overlapping_reference_fields): Skip
6311         static fields while verifying for overlapping fields as they
6312         don't matter at all.
6313
6314 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6315
6316         * domain-internals.h: added a declaration of
6317         mono_make_shadow_copy.
6318
6319         * assembly.c (mono_assembly_open_full): shadow copying of
6320         assemblies moved to here, so that all the assemblies within the
6321         application domain's private binary directories can be
6322         processed. Fixes bug #380546
6323
6324         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6325         mono_make_shadow_copy and made non-static. The decision whether
6326         to shadow-copy an assembly is made based on its location - it's
6327         copied if it's in one of the private application domain binary
6328         directories and its different to the target file in the shadow
6329         directory. Fixes bug #380546
6330
6331 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6332
6333         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6334
6335         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6336         types.
6337
6338         * reflection.c (mono_image_create_token): Handle 
6339         Method/ConstructorOnTypeBuilderInst.
6340         (resolve_object): Ditto.
6341         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6342         so it can be called from resolve_object. Also handle the case when the inflated
6343         class already has its methods setup.
6344
6345 2008-04-21  Martin Baulig  <martin@ximian.com>
6346
6347         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6348
6349 2008-04-20  Geoff Norton  <gnorton@novell.com>
6350
6351         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6352         pointer dereference.
6353
6354 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6355
6356         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6357         portability API to look up the assembly file. Fixes behavior in
6358         situations when the application has a bin/ directory, but the
6359         assembly search patch refers to Bin/ (and thus the requested file
6360         name is Bin/SomeLibrary.dll). Fixes bug #379888
6361
6362 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6363
6364         verify.c (mono_type_is_generic_argument): Extracted this check
6365         from a dozen places to here.
6366
6367         verify.c: Fixed all issues related to boxing generic arguments
6368         and their constraints.
6369
6370 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6371
6372         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6373
6374 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6375
6376         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6377         isn't finished yet. Fixes #363447.
6378
6379 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6380
6381         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6382         Fixes #346419.
6383
6384 2008-04-13  Jb Evain  <jbevain@novell.com>
6385
6386         * domain.c: update the 2.1 profile versions.
6387         Merged from the Moonlight 2 branch.
6388
6389 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6390
6391         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6392         mscorlibs for the non-refonly case as well.
6393
6394         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6395         in mono_assembly_load_from_full (). Fixes #378924.
6396
6397 2008-04-11  Geoff Norton  <gnorton@novell.com>
6398
6399         * icall.c: The global extern environ doesn't exist on Mac.  We
6400         need to call NSGetEnviron instead.
6401
6402 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6403
6404         verify.c: Add generic method constraint verification.
6405
6406 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6407
6408         class.c (mono_class_inflate_generic_method_full): Add a long
6409         explanation to the is_mb_open hack. Remove the FIXME.
6410
6411 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6412
6413         * verify.c (mono_method_verify): Mark all unknown opcodes
6414         as invalid. Mark jmp as unverifiable.
6415
6416 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6417
6418         * verify.c: Add code to do type constraint verification on class instances.
6419
6420         * verify.c (mono_verifier_verify_class): Use the type constraint 
6421         verification code.
6422
6423 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6424
6425         * class.c (mono_class_get_field_default_value): Don't pass cindex
6426         as hint to mono_metadata_get_constant_index. The local is not initialized
6427         and should contain garbage most of the time. This could only work
6428         with a lot of luck.
6429
6430 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6431
6432         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6433
6434 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6435
6436         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6437
6438         * class.c (mono_class_from_generic_parameter): Save the token of the
6439         generic param in MonoClass::sizes.generic_param_token.
6440
6441         * reflection.c (mono_custom_attrs_from_class): If the class type is
6442         VAR or MVAR retrieve the attributes of the generic param.
6443
6444 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6445
6446         * class.c (mono_class_init): Do class verification if the verifier
6447         is enabled.
6448
6449 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * verify-internal.h: Added mono_verifier_verify_class.
6452
6453         * verify.c: Added mono_verifier_verify_class. It checks for
6454         classes with explicit layout that have overlapping reference fields.
6455
6456         * pedump.c: Init the verifier state prior to verification. Fixed
6457         command line arguments.
6458
6459 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6460
6461         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6462
6463 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6464
6465         * verify-internals.h: Fix a warning.
6466
6467 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6468
6469         * verify-internals.h: New header with the verifier configuration
6470         extracted from mini.c.
6471
6472         * verify.c: Implemented the new functions exported by verify-internals.h.
6473
6474 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6475
6476         * verify.c: Add proper verification of ckfinite.
6477
6478 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6479
6480         * verify.c (do_conversion): Improved error message to something
6481         more meanfull.
6482
6483         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6484         with primitive types.
6485
6486 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6487
6488         * verify.c: Added tail prefix checking. Marked icall
6489         as unverifible.
6490
6491 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6492
6493         * verify.c: Fix the detection of branches to the middle
6494         of an instruction.
6495
6496 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6497
6498         * verify.c: Implemented verification of volatile. and
6499         unaligned. prefix. Check if a type is valid after retrieving it.
6500
6501 2008-04-01  Dick Porter  <dick@ximian.com>
6502
6503         * process.c (process_get_fileversion): If there's no string block,
6504         set the file language to en_US.  Fixes the other new part of bug
6505         374600.
6506
6507 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6508
6509         * class.c: New functions mono_method_can_access_field_full and
6510         mono_method_can_access_method_full. They perform type visibility
6511         and type site check.
6512
6513         * class-internal.h: Added exported functions.
6514
6515         * verify.c: Use new functions to implement proper visibility checks.
6516
6517 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6518
6519         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6520
6521 2008-03-28  Dick Porter  <dick@ximian.com>
6522
6523         * process.c (process_get_fileversion): Use the first language ID
6524         we see, rather than insisting on an invariant language.  Fixes bug
6525         374600.
6526
6527 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6528
6529         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6530         the streams to fix reading of invalid memory later.
6531
6532         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6533         to ease debugging.
6534
6535 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6536
6537         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6538         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6539
6540 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6541         * threads.h: Added MonoThreadManageCallback type and
6542         mono_thread_set_manage_callback prototype
6543         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6544         (used to store the mono_thread_manage callback).
6545         * threads.c: Added mono_thread_set_manage_callback, and handle
6546         "MonoThread->manage_callback" in build_wait_tids.
6547
6548 2008-03-26  Dick Porter  <dick@ximian.com>
6549
6550         * process.c (process_get_fileversion): Set FileVersionInfo strings
6551         to Empty when the resource doesn't have the particular info.
6552         Fixes bug 355717.
6553
6554 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6555
6556         * verify.c (mono_method_verify): Proper prefix validation.
6557
6558 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6559
6560         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6561         itself in a separate argument instead of throwing them. Fixes #373448.
6562
6563         * appdomain.c: Bump corlib version.
6564
6565 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6566
6567         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
6568
6569 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6570
6571         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
6572         version macros.
6573
6574 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6575
6576         * generic-sharing.c, class-internals.h: Code for putting
6577         reflection types into the runtime generic context.
6578
6579 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6580
6581         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
6582         Fixes #340662. 
6583
6584
6585 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
6586
6587         * verify.c (VerifyContext): Added instruction prefix data to the struct.
6588
6589         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
6590
6591         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
6592
6593         * verify.c (do_cast): Let the result value keep the boxed status.
6594
6595         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
6596
6597 2008-03-17  Jb Evain  <jbevain@novell.com>
6598
6599         * reflection.c: when running on a 2.0 runtime, emit
6600         unconditionally the #~ header version as 2.0, and the
6601         CLI header version as 2.5, for symmetry's sake with csc.
6602
6603 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6604
6605         * class.c: Remove the unused cache_interface_offsets stuff.
6606
6607         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
6608         profiler.c: Fix warnings.
6609
6610 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6611
6612         * generic-sharing.c, class-internals.h: Support for putting
6613         methods into the runtime generic context.
6614
6615 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6616
6617         * class.c (mono_class_setup_fields): Ignore calls made to this function for
6618         classes which are generic instances of not-yet finished typebuilders. Fixes
6619         #351172.
6620
6621         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
6622
6623 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
6624
6625         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
6626
6627         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
6628         field, replace it with a hash table in MonoDynamicImage.
6629
6630         * reflection.c (inflate_mono_method): Access the generic definition object from
6631         image->generic_def_objects instead of imethod->reflection_info.
6632
6633         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
6634
6635         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
6636         
6637         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
6638         function in reflection.c so it is easier to keep in sync with the dynamic image
6639         creation code.
6640
6641         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
6642         mono_image_close ().
6643
6644 2008-03-15  Mark Probst  <mark.probst@gmail.com>
6645
6646         * class.c (mono_class_generic_sharing_enabled): Disable generic
6647         sharing for all architectures except AMD64 and x86 to fix build.
6648
6649 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6650
6651         * verify.c: Use the generic definition MonoGenericContext when available.
6652         Remove code for checking generics instance compatibility in favor of
6653         mono_class_is_assignable_from.
6654
6655 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6656
6657         * marshal.c, marshal.h, metadata-internals.h, image.c,
6658         wrapper-types.h: New wrapper for invoking a shared static method
6659         without having to pass the runtime generic context argument.
6660
6661 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6662
6663         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
6664
6665 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6666
6667         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
6668         
6669         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
6670         create a token from a FieldOnTypeBuilderInst.
6671         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
6672         (resolve_object): Ditto.
6673
6674         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
6675         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
6676
6677 2008-03-14  Martin Baulig  <martin@ximian.com>
6678
6679         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
6680
6681         * debug-mono-symfile.h
6682         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
6683         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
6684
6685 2008-03-10  Martin Baulig  <martin@ximian.com>
6686
6687         * debug-mono-symfile.h
6688         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
6689         `lexical_block_table_offset'.
6690         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
6691         `lexical_blocks'.
6692         (MonoSymbolFile): Added `version'.
6693
6694         * mono-debug.h
6695         (MonoDebugLexicalBlockEntry): Removed.
6696         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
6697         `lexical_blocks'.
6698
6699         * mono-debug.c (mono_debug_add_method): Don't compute lexical
6700         blocks here; the debugger now does this internally.
6701
6702 2008-02-27  Martin Baulig  <martin@ximian.com>
6703
6704         * object.c (mono_runtime_exec_main): Call
6705         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
6706         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
6707
6708 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6709
6710         * verify.c (verify_type_compatibility_full): Allow native int to be converted
6711         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
6712
6713 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6714
6715         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
6716         ldftn with a virtual method.
6717
6718 2008-03-13  Geoff Norton  <gnorton@novell.com>
6719
6720         * decimal.c:  Only include memory.h if the platform has it.
6721
6722 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
6723
6724         * assembly.c, class.c, metadata-internals.h: make sure public key
6725         tokesns are compared in a case-insensitive way. Also, all
6726         the lookups in the GAC use a lowercase public key token
6727         (gaacutil already does the lowercasing on install). Fixes
6728         bug #369541.
6729
6730 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
6731
6732         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
6733         and return value.
6734
6735 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
6736
6737         * image.c: when someone loads a mscorlib from a file, return the
6738         currently loaded mscorlib (fixes bug #369253).
6739
6740 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6741
6742         * class.c: handle types with no parents by forcing them to have
6743         System.Object as a parent and marking them as broken (this currently
6744         allows the first part of bug #369173 to work as well, likely because
6745         we don't check for typeload exceptions everywhere yet).
6746
6747 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
6748
6749         * class.c: more complete check that types belong to corlib
6750         (fixes second part of bug #369173).
6751
6752 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
6753
6754         * generic-sharing.c:  Including glib.h for the MSVC builds to define
6755           "inline" to "__inline" before including mono-membar.h.
6756           
6757         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
6758           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
6759           MSVC builds.
6760
6761         Contributed under MIT/X11 license.
6762
6763 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6764
6765         * verify.c (do_invoke_method): Remove return type validation.
6766
6767         * verify.c (do_ret): Do return type validation at return site instead of
6768         call site.
6769
6770 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6771
6772         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
6773
6774         * verify.c: Some todos cleaned and improved a few error messages.
6775
6776 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
6777
6778         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
6779
6780 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6781
6782         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
6783         system types correctly.
6784
6785         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
6786         function.
6787
6788 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6789
6790         * assembly.c (build_assembly_name): Fix a warning.
6791
6792 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6793
6794         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
6795         the called function takes an object type argument. Fixes storing or
6796         valuetypes across remoting as well as reducing memory usage.
6797         * image.c, metadata-internals.h: remove now unused ldfld_remote and
6798         stfld_remote wrapper caches.
6799
6800 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6801
6802         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
6803         is not found.
6804
6805         * reflection.c (mono_image_register_token): New helper function to save
6806         a token->object mapping.        
6807
6808         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
6809         managed code.
6810
6811         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
6812         one dimension arrays. Fixes #367670.
6813         (mono_reflection_get_type_internal): Ditto.
6814
6815 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6816
6817         * marshal.c: mono_load_remote_field_new() always returns object.
6818         so use the proper signature (fixes bug #366445).
6819
6820 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6821         
6822         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
6823         add an 'inline_failure' flag instead.
6824
6825 2008-03-04  Mark Probst  <mark.probst@gmail.com>
6826
6827         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
6828         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
6829         contains the location of "this", used for exception handling.
6830
6831 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6832
6833         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
6834         their size on all platforms for perf reasons.
6835
6836 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6837
6838         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
6839         object-internal.h
6840
6841         * object-internal.h: Same.
6842
6843 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6844
6845         * reflection.h: Fix the build I just broke.
6846
6847 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6848
6849         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
6850         Test if a token is valid, this remove explicit usage of 
6851         MonoDynamicImage::tokens from the verifier code.
6852
6853         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
6854
6855         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
6856         instead of direct access to MonoDynamicImage::tokens.
6857
6858 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6859
6860         * verify.c (token_bounds_check): Fix the build I just broke.
6861
6862 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6863
6864         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
6865
6866         * verify.c (verifier_load_method): Fixed the errors message.
6867
6868         * verify.c (mono_method_verify): Fixed a debug message.
6869
6870 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
6871
6872         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
6873         mono-perfcounters.h, class-internals.h: support for predefined
6874         writable counters, query of categories and counters, bugfixes.
6875
6876 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6877
6878         * verify.c (do_refanytype): Verify the refanytype opcode.
6879
6880         * verify.c (mono_method_verify): Use do_refanytype.
6881
6882 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6883
6884         * verify.c (do_mkrefany): Verify the mkrefany opcode.
6885
6886         * verify.c (mono_method_verify): Use do_mkrefany.
6887
6888 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
6889
6890         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
6891         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
6892         implementation.
6893
6894 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6895
6896         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
6897         the type load exception.
6898
6899 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
6900
6901         * verify.c: Added a few FIXME for method signatures
6902
6903         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
6904         of mono_method_get_signature and get vararg call working. Removed unused
6905         checks for return value.
6906
6907         * verify.c (do_refanyval): Verify the refanyval opcode.
6908
6909         * verify.c (mono_method_verify): Implemented verification of arglist and
6910         use do_refanyval.
6911
6912 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
6913
6914         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
6915         vtypes to marshal.c.
6916
6917         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
6918         it works for AOT as well.
6919
6920 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6921
6922         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
6923         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
6924         the system time is adjusted.
6925
6926 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
6927
6928         * icall.c, icall-def.h: use the new time functions (fixes the
6929         non-monotonic behaviour of TickCount).
6930
6931 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
6932
6933         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
6934         it breaks the build.
6935         
6936         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
6937         cattr is not finished yet.
6938
6939 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6940
6941         * verify.c: Proper token validation for field, method and type.
6942
6943 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
6944
6945         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
6946
6947         * loader.c (method_from_memberref): Generate type load error instead of method missing
6948         if the type is not found.
6949
6950 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
6951
6952         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
6953         some of the conversions caused the generation of a marshal directive exception.
6954
6955 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6956
6957         verify.c: Report which exception should be thrown by the JIT.
6958         Added a lot of FIXME notes.
6959
6960 2008-02-22  Mark Probst  <mark.probst@gmail.com>
6961
6962         * generic-sharing.c: Runtime generic context slots are not
6963         instantiated on init anymore.  Instead, provide function to do the
6964         instantiating on demand.
6965
6966         * class-internals.h: Added vtable to runtime generic context.
6967         Macros for encoding direct and indirect slot offsets in one
6968         guint32.
6969
6970 2008-02-21  Mark Probst  <mark.probst@gmail.com>
6971
6972         * object.c, generic-sharing.c: Moved some generic sharing code
6973         from object.c to generic-sharing.c.
6974
6975         * generic-sharing.c: Added support for extensible runtime generic
6976         context.
6977
6978         * metadata-internals.h: Two new hash tables in MonoImage for
6979         extensible runtime generic context support.
6980
6981         * domain.c: Unregister generic vtables upon domain unloading.
6982
6983         * image.c: Destroy new hash tables upon image unloading.
6984
6985         * metadata.c: Unregister generic subclasses upon image unloading.
6986
6987         * class-internals.h: New data structure for runtime generic
6988         context template.  New fields in the runtime generic context for
6989         extensible part.
6990
6991         * Makefile.am: Added generic-sharing.c.
6992
6993 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
6994
6995         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
6996         there is a pending loader exception, raise it.
6997
6998         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
6999         same.
7000
7001         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
7002         same.
7003
7004         Fixes #363450.
7005
7006 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7007
7008         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
7009
7010         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
7011         
7012         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
7013         ref-only requests for compatibility with MS.
7014
7015 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7016
7017         * reflection.c (mono_custom_attrs_from_method): Don't silently
7018         return an empty list for generic method instances.
7019         (mono_custom_attrs_from_param): Likewise.
7020
7021 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
7022             Raja R Harinath  <harinath@hurrynot.org>
7023
7024         Fix #354757
7025         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
7026         * class.c (mono_class_inflate_generic_method_full): Initialize it
7027         when a fully-open method is instantiated.
7028         * metadata.c (inflated_method_equal, inflated_method_hash): Update
7029         to new field.
7030         * reflection.c (inflate_mono_method): Don't create a temporary context.
7031
7032 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7033
7034         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
7035         Compute correct value, to prepare for imethod->reflection_info going away.
7036
7037 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7038
7039         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
7040
7041 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7042
7043         * verify.c: Implement skip visibility flag.
7044
7045 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7046
7047         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
7048         which contains an extra field to tell the kind of exception that should be thrown.
7049
7050         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
7051
7052 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
7053
7054         * loader.c (mono_method_get_param_names): Initialize 'klass' after
7055         'method' is updated.
7056
7057 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * class.c (mono_class_layout_fields): Set class->min_align for classes using
7060         explicit layout as well. Fixes #360375.
7061
7062 2008-02-11  Geoff Norton  <gnorton@novell.com>
7063
7064         * loader.c: Guard and dereference against inflated generic methods
7065
7066 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
7067
7068         * class.c: Include Retargetable spec in assembly name.
7069         * assembly.c: Always include PublicKeyToken spec in assembly name
7070         (with value "null" if assembly is not signed), and include
7071         Retargetable spec.
7072         * icall-def.h: Added icall for Assembly.get_fullname.
7073         * icall.c: Added icall returning the fullname of an assembly.
7074
7075 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7076
7077         * class.c (mono_class_setup_vtable_general): Add a missing call to
7078         mono_class_setup_methods () which is needed in the AOT case.
7079
7080 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
7081
7082         * verify.c (mono_type_get_stack_name): Added. Return the name for the
7083         stack type of the given MonoType.
7084
7085         * verify.c (verify_type_compatibility_full): Handle the void type.
7086
7087         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
7088         way stack merging works.
7089
7090         * verify.c (store_local): Improved verification message.
7091
7092         * verify.c (do_branch_op): If the merging is invalid, the method
7093         is unverifiable and not invalid. Improved error message.
7094
7095         * verify.c (merge_stacks): Properly merge a boxed valuetype and
7096         a reference type diferent than System.Object. Improved error
7097         message.
7098
7099 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
7100
7101         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
7102
7103         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
7104         type of an enum even if the argument is byref.
7105
7106         * verify.c: Replace all explicit uses of enumtype and enum_basetype
7107         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
7108
7109         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
7110
7111         *verify.c (verify_type_compatibility_full): Make enum types
7112         compatible with their base types.
7113
7114         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
7115         types are compatible for the special case of a boxed valuetype and
7116         System.Object.
7117
7118         * verify.c (verify_stack_type_compatibility): The function
7119         is_compatible_boxed_valuetype was extracted from here.
7120
7121         * verify.c (push_arg): Only set ctx->has_this_store if the method
7122         is not static.
7123
7124         * verify.c (do_ldelem): Fixed a typo in an error message and added
7125         strict check for mixing int32 and native int as the array type
7126         and ldelem type.
7127
7128         * verify.c (merge_stacks): Consider boxed valuetypes in the
7129         compatibility checks.
7130
7131 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
7132         * profiler.h: (MonoGCEvent): Added start-stop the world events.
7133
7134 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7135         *class.c: use_new_interface_vtable_code: renamed the env var to have
7136         a "MONO_" prefix, and fix the logic to enable it by default.
7137
7138 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7139         *class.c:
7140         mono_class_setup_vtable_general: rewrote the way in which interface
7141         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
7142         makes the code more maintainable.
7143         For now the old code is still there, and can be activated setting
7144         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
7145
7146 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
7147
7148         * verify.c: guarded some debug functions around and #ifdef.
7149
7150         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
7151
7152 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7153
7154         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
7155         changes for now since they seem to break too many things.
7156
7157 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7158
7159         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
7160         mono_marshal_find_nonzero_bit_offset): Added macro and function
7161         for finding the byte- and bit-offset of a bitfield within a
7162         struct.
7163
7164 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7165
7166         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
7167         (mono_marshal_get_struct_to_ptr): Ditto.
7168
7169         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
7170         cctor_signature.
7171
7172 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7173
7174         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
7175         between methods for non-corlib types.
7176
7177 2008-02-02  Geoff Norton  <gnorton@novell.com>
7178
7179         * loader.c (mono_method_get_param_names): Populate the parameter name for 
7180         generic parameters as well. (Fixes #342536)
7181
7182 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
7183
7184         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
7185
7186         * verify.c (do_invoke_method): Fix for calling with byref structs.
7187
7188         * verify.c (do_cast): push a boxed value type based on the type token and not
7189         the type of stack.
7190
7191 2008-01-31  William Holmes  <billholmes54@gmail.com>
7192
7193         * process.c (process_module_string_read): Check the size returned form 
7194           VerQueryValue to avoid out of memory exception. 
7195
7196 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7197
7198         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
7199         Handle properly modules which are not in the moduleref table. Fixes
7200         #356938.
7201
7202 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7203
7204         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
7205         the dynamic case which is now in managed code.
7206         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
7207
7208         * marshal.c (mono_string_to_bstr): Fix a warning.
7209         (init_com_provider_ms): Ditto.
7210
7211         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
7212
7213         * exception.c (mono_get_exception_out_of_memory): New helper function.
7214
7215 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
7216
7217         * marshal.c: Add support for BSTR marshalling
7218         using other COM systems.
7219
7220         Code is contributed under MIT/X11 license.
7221
7222 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7223
7224         * object.c (mono_runtime_invoke_array): reverted previous
7225         commit as it breaks the build.
7226
7227 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7228
7229         * object.c (mono_runtime_invoke_array): Verify arguments for
7230         invalid types. Fixes #348522.
7231
7232 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7233
7234         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
7235         non-final virtual calls using call. 
7236
7237         * verify.c (do_invoke): fixed some TODOs.
7238
7239         * verify.c (push_arg): set has_this_store for "ldarga 0".
7240
7241 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7242
7243         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
7244         which belong to an inflated class. Fixes #356531.
7245
7246 2008-01-26  Robert Jordan  <robertj@gmx.net>
7247
7248         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
7249         which resort to FindFirstFile when a certain error condition
7250         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7251         Code is contributed under MIT/X11 license.
7252
7253 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7254
7255         * marshal.c (emit_marshal_string): Fix out string marshalling
7256         to use specified encoding. Fixes #323900.
7257
7258         Code is contributed under MIT/X11 license.
7259
7260 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7261
7262         * class.c (mono_class_inflate_generic_method_full): Don't modify
7263         iresult->context after cache check.
7264
7265 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7266
7267         * class.c (mono_class_inflate_generic_method_full): Change the
7268         struct assignments to memcpy for better visibility and add some comments.
7269
7270 2008-01-23  Dick Porter  <dick@ximian.com>
7271
7272         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7273         procedure, and make it work on windows.
7274
7275 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7276
7277         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7278         a MonoReflectionTypeBuilder since it is always of that type.
7279
7280         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7281
7282         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7283
7284         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7285         
7286         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7287
7288         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7289
7290         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7291         instantiations from the type cache.
7292
7293 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7294
7295         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7296
7297         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7298
7299 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7300
7301         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7302
7303         * verify.c (mono_method_verify): removed old TODO
7304
7305 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7306
7307         * verify.c (do_newobj): add visibility check.
7308
7309 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7310
7311         * verify.c (do_load_function_ptr): add visibility check.
7312
7313 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7314         *class.c:
7315         mono_generic_class_get_class: hook profiler events.
7316         mono_field_get_offset: added to support heap-shot in the new profiler.
7317         *class.h: exported mono_field_get_offset.
7318         * reflection.c:
7319         mono_reflection_setup_internal_class: hook profiler events.
7320
7321 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7324         argument here too and use it to avoid checking for pending exceptions if 
7325         possible.
7326
7327 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7328
7329         * assembly.c (build_assembly_name): add arg for passing the assembly
7330         flags. Do not consider a PublicKey with value "null" valid.
7331         (mono_assembly_name_parse_full): added boolean argument that will be
7332         set if the assembly name contains a PublicKeyToken spec. Added support
7333         for the Retargetable spec for which only Yes or No are allowed as valid
7334         value. Consider assembly name invalid if Retargetable spec is set, but
7335         either version, culture or public key (token) are not specified.
7336         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7337         with implementation in assembly.c.
7338         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7339         from MonoAssemblyName.
7340         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7341         introduced argument for mono_assembly_name_parse_full to know if the
7342         assembly name has a PublicKeyToken spec, and if it has instruct
7343         fill_reflection_assembly_name to use default value for keyToken (if
7344         PublicKeyToken is null).
7345
7346 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7347
7348         * verify.c (mono_method_verify): fixed ovf ops with
7349         float values. They are unverifiable now.
7350
7351 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7352
7353         * class.c (set_failure_from_loader_error): add BadImageException to the
7354         list of exceptions that can cause a type to fail to load.
7355
7356         * class.c (mono_class_get_exception_for_failure): same.
7357
7358 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7359
7360         * verify.c (in_any_exception_block): added, check if offset
7361         is part of any exception handling clause.
7362
7363         * verify.c (get_stack_type): added VAR and MVAR types.
7364
7365         * verify.c (do_stobj): better error messages.
7366
7367         * verify.c (do_cpobj): added, check cpobj.
7368
7369         * verify.c (do_initobj): added, check initobj.
7370
7371         * verify.c (do_sizeof): added, check sizeof.
7372
7373         * verify.c (do_localloc): added, check localloc.
7374
7375         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7376
7377 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7380         save_lmf/restore_lmf opcodes.
7381
7382         * threads.c (mono_threads_install_notify_pending_exc): New function to
7383         install a callback notifying the JIT there is a pending exception on a thread.
7384         (mono_thread_request_interruption): Call the new callback.
7385         (mono_thread_get_and_clear_pending_exception): New function to return the
7386         exception pending on a thread.
7387
7388         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7389         to turn off checking for pending exceptions.
7390         (mono_marshal_get_native_wrapper): Ditto.
7391
7392 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * threads-types.h: Get rid of the unnecessary extern declarations.
7395
7396 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7397
7398         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7399         return field from parent class if not private.
7400         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7401         returns fields from parent class if they are not private.
7402         (method_nonpublic): added function to determine if a given method
7403         should be considered non-public. Returns false for private methods
7404         on parent class, and internal methods from parent on the 1.0 profile.
7405         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7406         use method_nonpublic function to determine whether method should be
7407         returned.
7408         (property_accessor_public): use newly introduced method_nonpublic
7409         function to determine whether accessor is non-public. 
7410         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7411         event from parent class if not private. Only return static event if
7412         Static flag is set, and only return static event from parent class if
7413         FlattenHierarchy flag is set.
7414         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7415         include non-private events from parent class.
7416
7417 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7418
7419         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7420         warning.
7421
7422 2008-01-16  Wade Berrier <wberrier@novell.com>
7423
7424         * security.c: Add assembly.h header to appease some warnings
7425
7426 2008-01-16  Dick Porter  <dick@ximian.com>
7427
7428         * process.c (process_module_string_read): Remove trailing null
7429         when saving string.
7430
7431 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7432
7433         * class-internals.h: A new data structure describing the layout of
7434         a runtime generic context (MonoRuntimeGenericContextTemplate).
7435
7436         * metadata-internals.h: Added a hash table to MonoDomain that maps
7437         from open generic classes to their runtime generic context
7438         templates.
7439
7440         * object.c: Building of the runtime generic context, including
7441         proper handling of generic type arguments of superclasses.
7442         Building of the runtime generic context according to the template.
7443
7444 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7445
7446         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7447         Fixes #350856.
7448
7449         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7450         mono_portability_find_file (). Fixes #325466.
7451         (mono_image_get_public_key): Fix a warning.
7452
7453 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7454
7455         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7456         Fixes #353550.
7457         (mono_class_from_name_case): Ditto.
7458
7459 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7460
7461         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7462           common storage for the tables used in the System/NumberFormatter class.
7463
7464 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7465
7466         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7467
7468 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7469
7470         * verify.c (get_boxable_mono_type): check if the token is valid.
7471
7472         * verify.c (set_stack_value): changed to add an error if an
7473         invalid type is set on stack. Changed all callers due to signature change.
7474
7475         * verify.c (do_stobj): implement stobj validation.
7476
7477 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7478
7479         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7480         set container->is_method, it was set earlier.
7481
7482         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7483         generic methods.
7484
7485         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7486         is_method of the generic container to TRUE for methods.
7487
7488 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7489
7490         * metadata.c (type_in_image): Handle type parameters properly.
7491
7492         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7493         memory ownership of this structure.
7494
7495 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7496
7497         * verify.c (get_boxable_mono_type): make typedref types been just
7498         unverifiable. check for void type.
7499
7500         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7501
7502         * verify.c (do_load_function_ptr): accept method spec tokens.
7503
7504 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7505
7506         * marshal.c (mono_class_native_size): Always set *align even if this is called
7507         recursively.
7508
7509 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7510
7511         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7512         out-of-date.
7513
7514 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7515
7516         * verify.c: removed some old unused tables. A huge bunch of small fixes
7517         to things found while testing the verifier with mono basic.
7518
7519         * verify.c (dump_stack_value): dump null literal flag to.
7520
7521         * verify.c (verify_type_compatibility_full): fix comparison
7522         for types that have a generic super type.
7523
7524         * verify.c (verify_stack_type_compatibility): fix compatibility
7525         between null literals and reference types. fix compatibility between
7526         boxed valuetypes and object. fix corner case test for enums.
7527
7528         * verify.c (do_cmp_op): proper verification of cgt.un in case
7529         of reference types.
7530
7531         * verify.c (do_invoke_method): fix error message.
7532
7533         * verify.c (do_store_indirect
7534
7535         * verify.c (check_is_valid_type_for_field_ops): proper verification
7536         of managed pointers to valuetypes and boxed valuetypes. proper verification
7537         of null literals.
7538
7539         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7540         allow token to be a reference type.
7541
7542         * verify.c (do_cast): proper handling of boxes valuetypes.
7543
7544         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7545         in object[].
7546
7547         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7548         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7549         fixed the decoding of unbox_any
7550
7551 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7552
7553         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7554
7555 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7556
7557         * verify.c (do_newobj): do delegate verification.
7558
7559         * verify.c (verify_delegate_compatibility): perform delegate
7560         verification.
7561
7562         * verify.c (verify_ldftn_delegate): perform tests related to
7563         ldftn delegates.
7564
7565         * verify.c (mono_delegate_signature_equal): perform the
7566         slightly diferent signature comparison required by delegates.
7567
7568         * metadata.c (mono_metadata_type_equal_full): added and exported
7569         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
7570         allows signature only comparison.
7571
7572         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
7573         as MONO_INTERNAL.
7574
7575 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7576
7577         * verify.c: added a bunch of stack_slot_* functions to
7578         make access to stack slot type easier. This is required to
7579         allow optional flags, like null literal, boxed value and
7580         this pointer.
7581         All access paths to IlStackDesc::stype have been changed 
7582         to use these new funcions.
7583         Removed a bunch of unused functions and cleared all warnings.
7584         This patch introduces the usage of the this pointer and 
7585         boxed value flags.
7586
7587 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
7588
7589         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
7590
7591 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7592
7593         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
7594         match managed version.
7595
7596         * appdomain.c: Bump corlib version.
7597         
7598         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
7599         argument.
7600
7601 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
7602
7603         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
7604         Set public key token to zero-length byte array if assembly is not
7605         strongnamed.
7606
7607 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7608
7609         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
7610         writing a vtype array elem.
7611
7612 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
7613
7614         * assembly.c (build_assembly_name): return FALSE if length of token is
7615         not 16 (if not "null").
7616         (mono_assembly_name_parse_full): return FALSE if value of version,
7617         culture, token or key is 0.
7618         * icall.c (fill_reflection_assembly_name): add boolean arguments to
7619         specify whether public key and public key token must be set to default
7620         value (zero-length byte array) if not available. Set versioncompat to
7621         SameMachine. If public key is available or the default is set, then
7622         set PublicKey flag.
7623         (ves_icall_System_Reflection_Assembly_FillName): if no public key
7624         is available, use empty byte array as default value. On the 2.0
7625         profile, use default value for public key token if not set.
7626         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
7627         profile, use default value for public key if not set. On the 2.0
7628         profile, use default value for public key token if not set.
7629         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
7630         default values for public key and public key token.
7631
7632 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7633
7634         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
7635         field to keep it in synch with the managed object.
7636
7637         * marshal.c (emit_marshal_object): Add support for byref marshalling of
7638         delegates. Fixes #351520.
7639
7640         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
7641         contains defined memory.
7642         
7643         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
7644
7645         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
7646         
7647         * sgen-gc.c (check_consistency): New helper function to do a consistency check
7648         of the GC data structures.
7649
7650         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
7651
7652         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
7653         
7654         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
7655         barrier.
7656         (mono_array_clone_in_domain): Ditto.
7657         (mono_array_clone_in_domain): Ditto.
7658
7659         * threads.c (start_wrapper): Register the thread start argument as a GC root.
7660         (cache_culture): Use a write barrier.
7661
7662         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
7663         (ves_icall_get_property_info): Ditto.
7664
7665         * object.h (MONO_STRUCT_SETREF): New macro.
7666
7667         * class-internals.h (MonoStats): Add some GC statistics.
7668
7669         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
7670
7671 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
7672
7673         * exception.c (mono_exception_from_name_two_strings):
7674         Break from loop after method is found.
7675
7676 2008-01-04  Dick Porter  <dick@ximian.com>
7677
7678         * process.c (process_module_string_read): Rename variable to
7679         reflect correct usage, after fixing bug 345972.
7680
7681 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
7682
7683         * verify.c (mono_type_create_fnptr_from_mono_method): 
7684         created a MonoType function pointer instance to be used during
7685         verification. The verifier releases this memory at end.
7686
7687         * verify.c (mono_method_is_constructor): extracted repeated
7688         checks for constructor into a single class.
7689
7690         * verify.c (do_push_field): use new extracted method
7691         for constructor check.
7692
7693         * verify.c (do_newobj): same.
7694
7695         * verify.c (do_ldftn): renamed to do_load_function_ptr
7696         and make it verify ldvirtftn too.
7697
7698         * verify.c (mono_method_verify: proper verification
7699         of ldvirtftn. release created MonoMethod instances.
7700
7701 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7702
7703         * verify.c (token_bounds_check): added.
7704
7705         * verify.c (do_ldftn): added.
7706
7707         * verify.c (mono_method_verify): proper verificartion of ldftn.
7708
7709 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7710
7711         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
7712         than the table row count. It's the resposibility of the caller to
7713         make the bounds check and raise the correct error.
7714
7715         * metadata.c (mono_metadata_decode_row_col): Same.
7716
7717         * loader.c (mono_get_method_from_token): perform bounds check
7718         on token for methoddef table.
7719
7720 2007-12-29  Miguel de Icaza  <miguel@novell.com>
7721
7722         * icall.c
7723         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
7724         assert into a negative result, the managed code already coped with
7725         that.
7726
7727         Some folks on Windows reported this error. 
7728
7729 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
7730
7731         * appdomain.c: Bump corlib version.
7732         * icall.c:
7733         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
7734         CultureInfo.CreateCulture to create CultureInfo for name.
7735         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
7736         create CultureInfo for name. Fixes bug #347174.
7737
7738 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7739
7740         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
7741         flags.
7742
7743         * verify.c (is_valid_branch_instruction): allow branching to the
7744         first instruction of the protected block.
7745
7746         * verify.c (is_valid_cmp_branch_instruction): same.
7747
7748         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
7749         avoid double initialization.
7750
7751         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
7752         detect which cases the eval stack should just be copied.
7753
7754         * verify.c (mono_method_verify): check if the eval stack
7755         is empty when entering a protected block.
7756
7757 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7758
7759         * verify.c: added is_clause_in_range, is_clause_inside_range,
7760         is_clause_nested and verify_clause_relationship. They perform
7761         the verifications stated in P1 12.4.2.7.
7762
7763         * verify.c (mono_method_verify): remove some unused variables,
7764         add the new exception clause checks, add instruction border
7765         checks for protected block start/end, improved some error 
7766         messages and fixed a bug in the way invalid instruction access
7767         is detected.
7768
7769 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7770
7771         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
7772         from GC 7.0 if available.
7773
7774         * object.c: Remove an unused define.
7775         
7776         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
7777
7778         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
7779
7780         * null-gc.c (mono_gc_make_descr_for_array): Implement.
7781
7782         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
7783
7784         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
7785         to take the same arguments as the other make_descr functions.
7786
7787         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
7788
7789         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
7790         directly.
7791
7792         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
7793         mini.c.
7794
7795         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
7796         call to boehm-gc.c.
7797
7798         * boehm-gc.c (mono_gc_register_root): Fix a warning.
7799
7800         * null-gc.c (mono_gc_register_root): Fix a warning.
7801
7802         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
7803
7804         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
7805         (mono_gc_base_init): Call GC_init ().
7806
7807         * null-gc.c: Define mono_gc_register_root () as a no-op.
7808
7809         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7810
7811 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
7812
7813         * verify.c: add prototype for merge_stacks at top
7814
7815         * verify.c (do_switch): added.
7816
7817         * verify.c (merge_stacks): on some cases the stack merging
7818         was not happening properly. Unequal stack sizes at merge
7819         points should be invalid.
7820
7821         * verify.c (mono_method_verify): added more debug info on stack state.
7822         verify switch properly.
7823
7824 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
7825
7826         * method-builder.h: New file, moved the mono_mb_ declarations here from 
7827         marshal.h.
7828
7829         * boehm-gc.c marshal.c: Include method-builder.h.
7830
7831         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
7832
7833         * marshal.c: Remove some code which is now in method-builder.c.
7834
7835 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7836
7837         * method-builder.c: New file, extraction of the method builder functionality 
7838         from marshal.c.
7839
7840         * marshal.c: Move the mb functions into method-builder.c.
7841
7842         * marshal.h marshal.c: Export some mono_mb_... functions.
7843
7844         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
7845
7846         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
7847         the caller.
7848
7849         * class.c (mono_class_get_full): Check the token type in the dynamic case.
7850
7851         * loader.c (mono_field_from_token): Ditto.      
7852
7853         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
7854         type as well.
7855         
7856         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
7857         Fixes #342565.
7858
7859         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
7860         a helper function for setting it.
7861
7862         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
7863
7864         
7865         * assembly.c: Significally simplify code now that referenced assemblies are 
7866         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
7867
7868         * threads.h: Don't include  the internal threads-types.h header file. Fixes
7869         #349952.
7870
7871 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
7872
7873         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
7874         instructions that were target of branches or are at protected block boundaries.
7875
7876         * verify.c (in_same_block): handle filter clauses.
7877
7878         * verify.c (is_valid_branch_instruction): added. checks the target of
7879         instructions br or brtrue/false.
7880
7881         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
7882         binary branch instructions such as beq and bge.
7883
7884         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
7885         and made it pin the instruction as been part of the exception block.
7886
7887         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
7888         of in_same_block.
7889
7890         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
7891         of in_same_block.
7892
7893         * verify.c (do_ret): ret from a protected block is unverifiable and
7894         not invalid.
7895
7896         * verify.c (do_static_branch): verify br and br.s instructions.
7897
7898         * verify.c (merge_stacks): add extra param to support detection
7899         of branches in the middle of instructions.
7900         
7901         * verify.c (mono_method_verify): verify branches and exception blocks
7902         that target the middle of instructions. Proper verification of br and br.s.
7903
7904 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
7905
7906         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
7907         skip_visibility field.
7908         (reflection_methodbuilder_from_dynamic_method): Ditto.
7909
7910         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
7911         registrations. Fixes #348193.
7912
7913         * threads.h: Move the internal mono_thread_get_pending_exception () to
7914         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
7915
7916 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
7917
7918         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
7919         icall registration. Fixes #348193.
7920
7921         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
7922         for corlib classes into object. Fixes #349621.
7923
7924 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
7925
7926         * icall.c (property_accessor_nonpublic): new function to determine
7927         whether an accessor allows a property to be considered non-public.
7928         Returns false for private accessor(s) from parent class, and internal
7929         accessor(s) from parent on 2.0 profile (and higher).
7930         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
7931         to determine whether property should be included if NonPublic flag
7932         is set. Fixes bug #349078.
7933
7934 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
7935
7936         * verify.c (init_stack_with_value): added.
7937
7938         * verify.c (mono_method_verify): extracted common
7939         code for exception initialization into init_stack_with_value.
7940
7941         * verify.c (mono_method_verify): initialize the exception
7942         for handler clauses as well.
7943
7944         * verify.c (mono_method_verify): fix the exception clause
7945         ordering rules, it should use handler end offset and not
7946         start offset.
7947
7948 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
7949
7950         * rawbuffer.c: remove useless warning.
7951
7952 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
7953
7954         * threads.h, threads-types.h: move functions to the correct header
7955         (fixes bug#349952).
7956
7957 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7958
7959         * verify.c (mono_method_verify): proper verification
7960         of exception handling clauses ranges and fallthru in
7961         and out of protected blocks.
7962
7963 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         * verify.c (mono_method_verify): fixed compilation issue.
7966
7967 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
7968
7969         * verify.c (mono_method_verify): a printf slipped in, changed
7970         to use verifier debug macro.
7971
7972 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
7973
7974         * verify.c (is_correct_leave): check for filter clauses.
7975
7976         * verify.c (do_filter): added.
7977
7978         * verify.c (mono_method_verify): property verification of leave.
7979
7980
7981 2007-12-18  Mark Probst  <mark.probst@gmail.com>
7982
7983         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
7984         Win32 build, until we figure out how to do the proper thing on
7985         Win32.
7986
7987 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
7988
7989         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
7990         by the previous patch.
7991         
7992         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
7993         the assembly resolve handler for refonly assemblies.
7994
7995 2007-12-17  Mark Probst  <mark.probst@gmail.com>
7996
7997         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
7998         Make sure only one thread is allowed to commence shutdown, and
7999         don't allow new threads to be started once shutdown is in
8000         progress.
8001
8002 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
8003
8004         * verify.c (is_correct_endfilter): added.
8005
8006         * verify.c (is_unverifiable_endfilter): added.
8007
8008         * verify.c (do_endfilter): added.
8009
8010         * verify.c (mono_method_verify): property verification of endfilter
8011         and fixed a corner case or endfinally.
8012
8013 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
8014
8015         * verify.h: new flags to support fail fast of unverifiable code and
8016         do non-strict verification. Non-strict verification is required to
8017         have MS runtime compatibility. There are a huge amount of unverifiable
8018         code that it accepts as verifiable. The strict mode verifies the code
8019         as the specs says.
8020         Non-strict mode will be required in cases where code needs to be
8021         accepted as verifiable but fails under strict mode.
8022
8023         * pedump.c: added support to fail fast and non-strict verification.
8024
8025         * verify.c: added support for both fail fast and non-strict verification.
8026
8027 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
8028
8029         * verify.c (is_correct_endfinally): added.
8030
8031         * verify.c (mono_method_verify): property verification of endfinally.
8032
8033 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8034
8035         * verify.c (in_any_block): check for filter clauses.
8036
8037         * verify.c (is_correct_rethrow): added.
8038
8039         * verify.c (mono_method_verify): property verification of rethrow.
8040
8041         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
8042
8043 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8044
8045         * verify.c (do_throw): added.
8046
8047         * verify.c (mono_method_verify): property verification of throw
8048
8049 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
8050
8051         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
8052         assemblies. Fixes #346425.
8053
8054 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
8055
8056         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
8057         FieldBuilders.
8058
8059         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
8060
8061         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
8062         prevent asserts when this is called with a token which might not be valid.
8063
8064         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
8065         lookup_dynamic_token_class with valid_token == FALSE.
8066
8067         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
8068
8069         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
8070
8071         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
8072         
8073 2007-12-10  Mark Probst  <mark.probst@gmail.com>
8074
8075         * gc.c: Don't delay threadpool thread finalization unless Mono is
8076         shutting down.
8077
8078 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8079
8080         * threads.c: turn an assert into a non-fatal warning.
8081
8082 2007-12-09  Robert Jordan  <robertj@gmx.net>
8083
8084         * icall.c (GetVirtualMethod): Add missing argument validation.
8085
8086 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8087
8088         * verify.c (do_cast): added.
8089
8090         * verify.c (mono_method_verify): property verification of castclass and isinst.
8091
8092
8093 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8094
8095         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
8096
8097         * verify.c (do_stelem): added.
8098
8099         * verify.c (mono_method_verify): property verification of stelem.X.
8100
8101 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8102
8103         * class.c, class-internals.h: Introduce an environment variable
8104         (MONO_GENERIC_SHARING) through which the extent of generic code
8105         sharing can be controlled (share all classes, share only corlib
8106         classes, or share nothing).
8107
8108         * object.c: Only create runtime generic context for classes for
8109         which sharing is enabled.
8110
8111 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8112
8113         * verify.c (do_ldelem): refactor it to work with ldelem.any.
8114
8115         * verify.c (mono_method_verify): property verification of ldelem.any.
8116
8117 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8118
8119         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
8120         added ldelem.X opcodes.
8121
8122         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
8123
8124         * verify.c: proper verification of ldelem.X 
8125
8126 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8127
8128         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
8129
8130 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8131
8132         * verify.c (mono_method_verify): null literal requires special handling,
8133         the value pushed on stack need to be flagged as so.
8134
8135         * verify.c (do_ldelema): Verify ldelema properly.
8136
8137 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8138
8139         * verify.c: Verify ldlen properly.
8140
8141 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
8142
8143         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
8144         to the target object's type. Fixes #346160.
8145
8146 2007-12-05  Dick Porter  <dick@ximian.com>
8147
8148         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
8149         Solaris needs the same workaround as BSD-derived systems.  Fixes
8150         bug 323524, patch by Burkhard Linke
8151         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
8152
8153 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
8154
8155         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
8156         handle to use when error dialog is shown; otherwise, update mask
8157         to show no error dialog when an error occurs.
8158
8159 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8160
8161         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
8162
8163         * class.c (mono_class_get_field_default_value): New helper function to initialize
8164         field->def_type and field->data.
8165
8166 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8167
8168         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
8169         the general one.
8170
8171         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
8172
8173         * marshal.c: Avoid depending on delegate->method_info being set.
8174
8175         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
8176         
8177         * object.c (mono_delegate_ctor): Set delegate->method.
8178
8179         * object-internals.h (struct _MonoDelegate): Add 'method' field.
8180
8181         * appdomain.c: Bump corlib version.
8182
8183 2007-11-27  Raja R Harinath  <harinath@gmail.com>
8184
8185         * metadata.c (mono_generic_inst_equal_full): Short-circuit
8186         equality check if we're comparing canonicalized MonoGenericInsts.
8187
8188 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8189
8190         * class.c (generic_array_methods): Call mono_class_setup_methods () before
8191         accessing class->methods.
8192
8193 2007-11-22  Dick Porter  <dick@ximian.com>
8194
8195         * threads.c: Ensure that the synch_cs is set before trying to use
8196         it.
8197
8198 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
8199
8200         * profiler.c: r89126 broke the statistial profiler, unbreak.
8201
8202 2007-11-22  Martin Baulig  <martin@ximian.com>
8203
8204         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
8205
8206         * mono-debug.c
8207         (mono_debug_debugger_version): Bump to 3.
8208         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
8209         -> mono_debugger_class_initialized().
8210
8211         * mono-debug-debugger.c
8212         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
8213
8214         * class.c
8215         (mono_debugger_start_class_init_func): Removed.
8216         (mono_debugger_class_loaded_methods_func): Added.
8217         (mono_class_setup_methods): Call it here.
8218
8219 2007-11-22  Martin Baulig  <martin@ximian.com>
8220
8221         * mono-debug.c
8222         (mono_debug_add_delegate_trampoline): New public method.
8223         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
8224
8225         * mono-debug.h
8226         (MonoSymbolTable): Added `global_data_table'.
8227         (MonoDebuggerTypeKind): Removed.
8228
8229 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
8232         these methods.
8233
8234         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8235         
8236 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8237
8238         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
8239
8240 2007-11-20  Martin Baulig  <martin@ximian.com>
8241
8242         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
8243
8244         * mono-debug-debugger.c
8245         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
8246         (mono_debugger_remove_breakpoint): Likewise.
8247         (mono_debugger_check_breakpoints): Likewise.
8248         (mono_debugger_register_class_init_callback): New public method.
8249         (mono_debugger_remove_class_init_callback): Likewise.
8250         (mono_debugger_add_type): Likewise.
8251
8252         * mono-debug-debugger.h
8253         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8254
8255 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8256
8257         * class.c: more interface implementations needed for the
8258         array enumerator (fixes bug #341112).
8259
8260 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8261
8262         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8263         fix ParamName of ArgumentNullExceptions.
8264
8265 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8266
8267         * reflection.c (mono_reflection_encode_sighelper): Generate the
8268         modopts and modreqs.   I have a useless test that crashes monodis,
8269         but that shows the code working.
8270
8271 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8272
8273         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8274         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8275
8276 2007-11-15  Dick Porter  <dick@ximian.com>
8277
8278         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8279         When joining a thread, it's the thread that's calling Join that
8280         gets WaitSleepJoin state not the target.  Fixes the standalone
8281         test case in bug 334740, and hopefully the whole bug too.
8282
8283 2007-11-15  Dick Porter  <dick@ximian.com>
8284
8285         * process.c: Read file version info from the files pointed at by
8286         process modules, not the current process.  Fixes bug 315969.
8287
8288         Use windows typedef names in some places to fix warnings on the
8289         windows build.
8290
8291 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8292
8293         * image.c, metadata-internals.h: Added a generic_class_cache hash
8294         to MonoImage for looking up generic classes when sharing generics.
8295
8296 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8297
8298         * sgen-gc.c: warning cleanups.
8299
8300 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8301
8302         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8303         inherited properties.
8304
8305 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8306
8307         * object.c, class-internals.h: Added more information to the
8308         runtime generic context.
8309
8310 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8311
8312         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8313         instead of just the target method. Generalize the abstract method handling to
8314         handle any non-static method.
8315
8316         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8317         mono_marshal_get_delegate_invoke () signature change.
8318
8319 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8320
8321         * class.c, class-internals.h: Made
8322         mono_type_get_basic_type_from_generic () public.  Fixed member
8323         access check for shared generics.
8324
8325         * loader.c: Don't insert field into field cache if it's part of a
8326         non-inflated generic class.
8327
8328         * domain.c, domain-internals.h: The generic sharing context is now
8329         part of the jit info data structure.  Added two accessor
8330         functions.
8331
8332 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8335         the array Get/Set/Address methods, since the JIT inlines them.
8336
8337         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8338
8339         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8340         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8341
8342         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8343         mono_marshal_get_delegate_invoke signature change.
8344
8345         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8346         an additional argument. Add support for invoking abstract methods.
8347
8348         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8349
8350         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8351
8352 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8353
8354         * class.c: Do field layout for open generic classes as well.
8355
8356 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8357
8358         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8359         other objects, because the threadpool is still around.  Put them
8360         in a list instead and after finalizing all other objects in the
8361         root domain shut down the thread pool and then finalize the
8362         threads.  Fixes bug #337383.
8363
8364         * threads.c, thread-types.h: New mono_thread_create_internal()
8365         function for marking a thread with the threadpool flag before it
8366         started.  Set synch_cs to NULL after freeing it.
8367
8368         * threadpool.c: Mark threadpool threads before they start.
8369
8370 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8371
8372         * reflection.h, reflection.c: don't export random functions
8373         and lazy load dbnull and missing objects.
8374
8375 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8376
8377         * class.c: Initialize COM types if COM interfaces
8378         are present (not just COM classes).
8379         
8380         Code is contributed under MIT/X11 license.
8381
8382 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8383         * reflection.c:
8384         create_dynamic_mono_image: hook module profiler events (dynamic case).
8385         mono_image_basic_init: hook assembly profiler events (dynamic case).
8386
8387 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8388         * profiler.c:
8389         simple_appdomain_unload: completely terminate the profiler
8390         instead of only processing the statistical samples.
8391         simple_shutdown: make sure this is really called exactly once,
8392         even in multithreaded applications, and always listen to
8393         appdomain events.
8394         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8395         here, the "[un]load" functions will do it.
8396         Fixes bugs #333791 and #325261.
8397
8398 2007-11-07  Geoff Norton  <gnorton@novell.com>
8399
8400         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8401         rather than depend on __APPLE__.
8402
8403 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8404
8405         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8406
8407 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8408
8409         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8410         UTF16 MonoString. Fix the crash from bug #335488
8411
8412 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8413
8414         * marshal.c: Correct (for non-Win32 OS) length != size in 
8415         mono_string_from_bstr. Fix #339530.
8416
8417 2007-11-06  Geoff Norton  <gnorton@novell.com>
8418
8419         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8420         to succeed
8421
8422 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
8423
8424         * process.c: Added run-time GetProcessId API detection for Windows.
8425
8426 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8427
8428         * reflection.c  (mono_param_get_objects): If a parameter has the
8429         attribute [System.Runtime.InteropServices.Optional] we should
8430         set the DefaultValue of the ParameterInfo to be
8431         System.Reflection.Missing instead of DBNull.
8432
8433         See bug #339013.
8434
8435         (mono_get_reflection_missing_object): New method,
8436         returns the System.Reflection.Missing.Value singleton instance.
8437
8438 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8439
8440         * culture-info-table.h : regenerated.
8441
8442 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8443
8444         * icall.c: Use GetEnvironmentStrings on windows
8445         so we are using the same environment block as 
8446         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8447         #333740.
8448         
8449         Code is contributed under MIT/X11 license.
8450
8451 2007-10-31  Martin Baulig  <martin@ximian.com>
8452
8453         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8454
8455         * mono-debug-debugger.h
8456         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8457
8458 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8459
8460         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8461         classes.
8462
8463 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8464
8465         * culture-info-table.h : regenerated.
8466
8467 2007-10-30  Robert Jordan  <robertj@gmx.net>
8468
8469         * icall-def.h, icall.c:
8470         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8471
8472         Code is contributed under MIT/X11 license.
8473
8474 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8475
8476         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8477         inflated class instead of inflating them again.
8478         
8479         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8480         dynamic case.
8481
8482         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8483         Call setup_supertypes () after klass->parent is set.
8484         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8485
8486         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8487         for inflated instances of not yet created dynamic generic classes.
8488         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8489         times from inflated_method.
8490         (methodbuilder_to_mono_method): Ditto.
8491
8492 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8493
8494         * gc.c: code cleanup and removed old untested option of not creating the
8495         finalizer thread.
8496
8497 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8498
8499         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8500         creating a jump trampoline for dynamic methods.
8501
8502 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8503
8504         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8505         generic TypeBuilders when called from another method of the same type (bug #335131).
8506
8507
8508 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8509
8510         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8511         doesn't seem to work perfectly.
8512         
8513         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8514         called multiple times.
8515         (methodbuilder_to_mono_method): Ditto.
8516         (resolve_object): Inflate FieldBuilder's.
8517
8518 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8519
8520         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8521         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8522         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8523
8524 2007-10-26  Dick Porter  <dick@ximian.com>
8525
8526         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8527         Thread initialisation changes
8528
8529 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8530
8531         * verify.c: fix compatibility check between arrays and System.Array
8532
8533 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8534
8535         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8536         too. Fixes #336999.
8537
8538 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8539
8540         * object.c (mono_value_box): Use typed allocation here.
8541
8542 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8543
8544         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8545         trampoline instead of compiling the method right away.
8546
8547         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8548
8549 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8550
8551         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8552         related fields for dynamic classes. Fixes #334493.
8553
8554 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8555
8556         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8557         
8558         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8559
8560         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8561         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8562
8563         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8564
8565         * reflection.c (create_generic_typespec): Initialize klass->generic_container
8566         if needed.
8567         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
8568
8569 2007-10-18  Jonathan Chambers <joncham@gmail.com>
8570
8571         * marshal.c: Use correct key when removing item
8572         from ccw_hash.
8573         
8574         Code is contributed under MIT/X11 license.
8575
8576 2007-10-17  William Holmes  <billholmes54@gmail.com>
8577
8578         *marshal.c: Adding a case to marshal booleans to U1
8579
8580         Code is contributed under MIT/X11 license.
8581
8582 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
8583
8584         * class.c (mono_class_from_name): Search the modules compromising dynamic
8585         assemblies. Fixes #331601.
8586
8587 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
8588
8589         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
8590         exception if the type name contains an assembly component. Fixes #334203.
8591
8592         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
8593         modules inside dynamic assemblies. Fixes #334200.
8594         
8595         * reflection.c: Set image->public_key and image->public_key_length;
8596
8597         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
8598         fields.
8599
8600         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
8601         
8602 2007-10-16  Mark Probst  <mark.probst@gmail.com>
8603
8604         * metadata.c: Implemented correct comparing of generic classes.
8605         An inflated generic class can be equal to a non-inflated one if it
8606         is inflated with generic type variables as type arguments.  Fixes
8607         bug #333798.
8608
8609 2007-10-15  Dick Porter  <dick@ximian.com>
8610
8611         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
8612         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
8613         81646.
8614
8615         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
8616         instead of a monitor lock.  This means that monitor_try_enter and
8617         co can set the thread state safely.
8618         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
8619         thread_interrupt_requested, so interrupt actually works.
8620
8621         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
8622         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
8623         state accessor function
8624
8625 2007-10-15  Martin Baulig  <martin@ximian.com>
8626
8627         * mono-debug.h
8628         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
8629         the debugger with the current runtime.
8630
8631 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8632
8633         * object.c, object-internals.h: added the ability to set a single
8634         trampoline for all the slots in a vtable.
8635
8636 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8637
8638         * marshal.c: deal with a possible race condition during multicast
8639         delegate invocation.
8640
8641 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8642
8643         * class.c: ensure value type methods don't have the synchronized
8644         flag set.
8645
8646 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8647
8648         * string-icalls.c, string-icalls.h: reverted unapproved patch that
8649         breaks the build.
8650
8651 2007-10-11  Joel Reed  <joelwreed@comcast.com>
8652
8653         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
8654         to take an options parameter so that empty entries can be removed during
8655         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
8656
8657 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8658
8659         * marshal.c: make sure we don't store the signature from a dynamic
8660         method into the runtime invoke cache (bug #327189).
8661
8662 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8663
8664         * marshal.c: make sure the wrapper methods are properly initialized.
8665
8666 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8667
8668         * metadata.c, metadata-internals.h: Generalized
8669         mono_type_stack_size() to mono_type_stack_size_internal() which
8670         takes an additional argument specifying whether it allows open
8671         types.
8672
8673 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8674
8675         * verify.c (do_invoke_method): handle typedbyref params
8676         correctly and check for unverifiable return values.
8677
8678         * verify.c (do_newobj): fix a warning.
8679
8680 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8681
8682         * verify.c: don't tread typedbyref as allways unverifable,
8683         so uses, like (ld/st)loc.0 are valid. verify for the cases
8684         that it matters, like boxing related operations.
8685
8686 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8687
8688         * verify.c: add verification of the newobj opcode. verification
8689         of delegate instantation still missing due ldftn and virldftn not
8690         pushing the function type on stack
8691
8692 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8693
8694         * class-internals.h: Runtime generic context data structure
8695         definition.
8696
8697         * object.c: Initialization of runtime generic context at runtime
8698         vtable creation time.
8699
8700 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
8701         * class.c (mono_class_create_from_typedef,
8702         mono_class_from_generic_parameter, mono_ptr_class_get,
8703         mono_fnptr_class_get, mono_bounded_array_class_get)
8704         * domain.c (mono_domain_create, mono_domain_free)
8705         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
8706         * image.c (do_mono_image_load, mono_image_close):
8707         Hooked up load-unload profiler events.
8708
8709 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8710
8711         * domain.c: track statistics about the actual amount of native code
8712         allocated.
8713
8714 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8715
8716         * class.c: the valuetype enumerators don't have the additional
8717         supertypes interfaces.
8718
8719 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8720
8721         * class.c: need more interfaces setup for the IEnumerator<T>
8722         object created for arrays (tests/ienumerator-interfaces.2.cs).
8723
8724 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
8725
8726         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
8727
8728 2007-10-05  Alp Toker  <alp@atoker.com>
8729
8730         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8731         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8732         #315863.
8733
8734 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8735
8736         * verify.c (verify_type_compatibility_full): verification of
8737         compatibility improved, validates correctly non-strict checks between
8738         native int and I4 types different than (unsigned)int32.
8739
8740         * verify.c (do_store_indirect): added, do all verification of
8741         ldind.X opcodes. 
8742
8743         * verify.c (get_load_indirect_mono_type): renamed to
8744         get_indirect_op_mono_type, as it now returns the MonoType for 
8745         ldind.X and stind.X opcodes.
8746
8747 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8748
8749         * reflection.c: Fix the encoding of generic type definition for
8750         TypeBuilders.
8751
8752         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
8753         mono_image_typedef_or_ref but allows to specify if typespec lookups should
8754         be made. Typespec check is done prior to typeref cache lookup.
8755
8756         * reflection.c (mono_image_typedef_or_ref): now just delegate to
8757         mono_image_typedef_or_ref_full.
8758
8759         * reflection.c (encode_generic_class): encode the generic class
8760         directly instead of calling encode_type.
8761
8762         * reflection.c (encode_type): encode the generic type definition
8763         MonoClass as a generic instantiation.
8764
8765         * reflection.c (create_typespec): cache typespec tokens in
8766         the assembly->typespec cache. Don't create typespec for a generic
8767         instance MonoClass. Create typespec for the generic type defintion.
8768
8769         * reflection.c (create_generic_typespec): encode the generic
8770         class directly instead of calling encode_type.
8771
8772         * reflection.c (mono_image_create_token): encode the generic
8773         type definition not using a typespec for MonoType instances.
8774
8775
8776 2007-10-04  Raja R Harinath  <rharinath@novell.com>
8777
8778         Fix #328812
8779         * class.c (mono_image_init_name_cache): Don't return nested
8780         'protected internal' classes.
8781         (mono_class_from_name_case): Likewise.
8782
8783 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
8784
8785         * icall-def.h, icall.c : get_bundled_machine_config() is now the
8786           common function used by both DefaultConfig in System.dll and
8787           InternalConfigurationHost in System.Configuration.dll.
8788
8789 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8790
8791         * class.c: automatically add to vectors only a few essential explicit
8792         generic interfaces. The rest of the interfaces that arrays should
8793         provide are currently implicitly added (but still not lazily, see the
8794         design in the discussion of bug#325495 for the details of what is
8795         needed for that). Additionally, implicit interfaces are assigned the
8796         same vtable slot as the explicit interfaces (as they are compatible):
8797         this enables huge memory savings since we don't need to instantiate
8798         as many memthods and as large vtables anymore. Also, Since
8799         GetEnumerator<T> returns an instance of a type that is required to
8800         support a similarly large set of interfaces as arrays, we add
8801         implicit interfaces and interface offset sharing support to those
8802         types, too. This change adds all the required interfaces so that
8803         the anonarray.cs test case in the bug report works (we don't add
8804         all the interfaces to arrays of arrays 3-level deep and more because
8805         of the memory requirements explained in the bug and since they are much
8806         less common: the lazy-loading support will enabled them to work, too).
8807
8808 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8809
8810         * verify.c (merge_stacks): major clean up, all type compatibility
8811         checks are done by verify_type_compatibility. This fix my earlier lack
8812         of understanding of the CLR type system and merge_stacks no longer looks
8813         scary.
8814
8815         * verify.c: fixed some bad spelling.
8816
8817 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8818
8819         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
8820         a given stack slock.
8821         
8822         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
8823         verify_type_compatibility_full. This removed a near indentical function and fixed
8824         handling of Int32 and IntPtr across all opcodes.
8825
8826 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8827
8828         * class.c: only vectors have the additional generic interfaces.
8829
8830 2007-10-01  Jonathan Chambers <joncham@gmail.com>
8831
8832         * mono-config.c: Use g_strcasecmp instead of
8833         strcasecmp like everywhere else to fix
8834         compilation with MSVC.
8835         
8836         Code is contributed under MIT/X11 license.
8837
8838 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8839
8840         * object.c, object-internals.h: refactored the IMT code to enable
8841         building a single slot at a time and lazily creating the IMT trampolines
8842         and thunks.
8843
8844 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
8845
8846         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
8847
8848         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
8849         Fixes #328501.
8850         
8851 2007-09-29  Raja R Harinath  <harinath@gmail.com>
8852
8853         * loader.c (method_from_methodspec): Rearrange to avoid
8854         un-necessary exposition.  Don't assert out if the method's
8855         declaring type is a generic type definition.
8856
8857 2007-09-28  Martin Baulig  <martin@ximian.com>
8858
8859         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
8860
8861 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
8862
8863         * class-internals.h: optimize field layout of MonoClass to
8864         requires less cachelines at runtime and save a few bytes on 64 bit
8865         systems.
8866
8867 2007-09-28  Jb Evain  <jbevain@novell.com>
8868
8869         * reflection.c: when encoding type names in custom attributes,
8870         if the type is a closed generic type, its generic arguments
8871         have to be serialized as AssemblyQualifiedName, so that when
8872         they are deserialized, it's possible to re-create them properly.
8873         Fixes #329450.
8874
8875
8876 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8877
8878         * object.c, class-internals.h: added delegate-creation counter.
8879
8880 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
8881
8882         * class.c: cleanup of the code that synthetizes interfaces for
8883         arrays in 2.0: saves quit a bit of corlib mempool memory.
8884         Code to fix bug #325495 ifdeffed out for now until the issues
8885         with memory usage and O(n^2) behaviour are fixed.
8886
8887 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8888
8889         * marshal.c: when possible, do not duplicate the name of the methods
8890         in the method builder and in the generated MonoMethod.
8891
8892 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8893         * verify.c: added support for type checking ldind_* opcodes.
8894
8895 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
8896
8897         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
8898         which is used to distinguish the fully open instantiation of a TypeBuilder
8899         with the rest. This temporary hack is required to restore the property that
8900         the fully open instantiation is the same type of the generic type definition.
8901
8902         * class-internals.h (mono_generic_class_is_generic_type_definition):
8903         new function as part of the internal API.
8904
8905         * class.c (inflate_generic_type): return NULL when the generic inst is
8906         fully open. The fully open generic type is now the same as the generic type
8907         definition for non TypeBuilder types.
8908
8909         * class.c (mono_generic_class_get_class): removed assert since it is
8910         no longer valid, gklass->cached_class can point to the generic type definition.
8911
8912         * class.c (mono_generic_class_is_generic_type_definition): new.
8913
8914         * metadata.c (mono_generic_class_hash): added is_tb_open field
8915         to the hash calculation.
8916
8917         * metadata.c (free_generic_class): if the generic class is associated
8918         with the generic type definition, its field will come from the mempool and
8919         must not be freed.
8920
8921         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
8922         new, this function identifies the corner case of a TypeBuilder fully open
8923         instantiation.
8924
8925         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
8926         for lookup. Set gclass->cached_class to be the container class in case of
8927         the fully open instantiation of non TypeBuilder types.
8928
8929         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
8930         to compare generic classes.
8931
8932         * reflection.c (method_encode_methodspec): remove assert that
8933         no longer is valid.
8934
8935         * reflection.c (mono_reflection_generic_class_initialize): add
8936         an aditional assert to ensure the proper type is used.
8937
8938 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
8939
8940         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
8941         to enjoy it.
8942
8943 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8944
8945         * verify.c (push_arg): Fixed support for ldarga
8946         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
8947         MonoType used as first arg in case of instance calls.
8948
8949 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
8950
8951         * verify.c: Support for verifying VAR and MVAR types, 
8952
8953 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
8954
8955         * icall.c (ves_icall_get_property_info): Set the reflected type of the
8956         accessors correctly.
8957
8958 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
8959
8960         * threads.c: support OSX and other systems in
8961         mono_thread_get_stack_bounds (bug #328026).
8962
8963 2007-09-25  Martin Baulig  <martin@ximian.com>
8964
8965         * mono-debug.h
8966         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
8967
8968 2007-09-24  Martin Baulig  <martin@ximian.com>
8969
8970         * mono-debug.h
8971         (MonoDebugClassEntry): Moved the definition of this struct into
8972         mono-debug.c to make it private.
8973
8974         * mono-debug.c
8975         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
8976         type table per symbol file, we don't need to store the symfile id
8977         any longer.
8978
8979 2007-09-24  Martin Baulig  <martin@ximian.com>
8980
8981         Create one type table per symbol file, since a `MonoClass *' gets
8982         invalid when its image is unloaded.
8983
8984         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
8985         (MonoDebugHandle): Added `type_table'.
8986
8987 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
8988
8989         * mempool.c, mempool.h: added mono_mempool_new_size () API
8990         to be able to specify a smaller initial size for the pool.
8991         Adjusted the code to slowly increase pool size before using
8992         the previous default size.
8993         * image.c: use a small initial size for image mempools.
8994
8995 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
8996
8997         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
8998         Fixes ##320990.
8999
9000         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
9001         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
9002
9003 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
9004
9005         * metadata.c (mono_type_create_from_typespec): Remove an invalid
9006         free. Fixes #327438.
9007
9008 2007-09-21  Raja R Harinath  <harinath@gmail.com>
9009
9010         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
9011         generic instantiations, etc.
9012         <MONO_TYPE_ARRAY>: Likewise.
9013
9014 2007-09-21  Martin Baulig  <martin@ximian.com>
9015
9016         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
9017         these structs were never defined.
9018         (MonoDebugHandle): Removed the `_priv' field, it was never used.
9019
9020 2007-09-21  Martin Baulig  <martin@ximian.com>
9021
9022         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
9023
9024 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
9025
9026         * image.c: removed the guid hash tables: we can get the same info
9027         without the additional memory usage hit (partially fixes also bug #327052).
9028
9029 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9030
9031         * profiler.h, profiler-private.h, profiler.c: add a new profiler
9032         event to handle unloading methods. After the event is called, the
9033         corresponding MonoMethod* must be considered invalid.
9034         * loader.c (mono_free_method): call the new mono_profiler_method_free
9035         event.
9036
9037 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9038
9039         * domain-internals.h: New flag in MonoJitInfo which marks shared
9040         generic methods.  New hash table (shared_generics_hash) in
9041         MonoDomain to keep track of shared generic methods.  Prototypes
9042         for functions to register and lookup shared generic methods.
9043
9044         * domain.c: Support for registering and looking up shared generic
9045         methods via a hash table (shared_generics_hash) in MonoDomain.
9046
9047         * class-internals.h: New exception to signal failure of shared
9048         compilation of a generic method.  New counters for generics
9049         sharing in MonoStats.
9050
9051 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9052
9053         * image.c, metadata-internals.h: don't keep a file descriptor open
9054         for loaded assemblies (bug#325988).
9055
9056 2007-09-19  Raja R Harinath  <rharinath@novell.com>
9057
9058         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
9059         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
9060         use the corresponding datatypes.
9061         (type_in_image): Update to changes.
9062         (CleanForImageUserData): Simplify.
9063         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
9064         Avoid quadratic behaviour in handling the "stolen" list by
9065         separating the filter predicate out, and by prepending the stolen
9066         items rather than appending them.
9067         (steal_ginst_in_image): Likewise.
9068         (mono_metadata_clean_for_image): Update to changes.
9069
9070 2007-09-19  Martin Baulig  <martin@ximian.com>
9071
9072         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
9073
9074 2007-09-19  Martin Baulig  <martin@ximian.com>
9075
9076         * mono-debug.c (mono_debug_cleanup): Don't call
9077         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
9078
9079 2007-09-19  Raja R Harinath  <harinath@gmail.com>
9080
9081         Fix crash on 'make run-test' in mcs/errors
9082         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
9083         Avoid more potential allocations in mono_class_from_mono_type.
9084         (ginst_in_image): Update to changes.
9085         (gclass_in_image): Rearrange slightly.
9086
9087 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9088
9089         * class.c (mono_class_init): Move the code that sets up class->methods to 
9090         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
9091
9092         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
9093         canonical instance of an inflated generic signature.
9094         (mono_type_create_from_typespec): Remove an invalid free.
9095
9096         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
9097
9098 2007-09-18  Marek Habersack  <mhabersack@novell.com>
9099
9100         * domain-internals.h: added a declaration of the
9101         mono_assembly_load_full_nosearch internal function.
9102
9103         * assembly.c (mono_assembly_load_with_partial_name): use
9104         mono_try_assembly_resolve return value properly.
9105         (mono_assembly_load_full_nosearch): copied the function body from
9106         mono_assembly_load_full, without the code to invoke assembly
9107         search hooks.
9108         (mono_assembly_load_full): calls the above new function and if the
9109         assembly is not resolved, invokes the search hooks.
9110
9111         * appdomain.c (mono_runtime_init): restore the global postload
9112         assembly search handlers.
9113
9114 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9115
9116         * class.c (mono_class_init): Make sure class->methods and class->properties
9117         are never NULL in the generics case.
9118
9119         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
9120
9121 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9122
9123         * metadata.c (free_generic_class): Disable some code to fix the build.
9124
9125         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
9126
9127         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
9128         from the image mempool.
9129
9130         * metadata.c (free_generic_class): Free more data from the inflated class.
9131
9132         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
9133
9134         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
9135         mempool.
9136         (mono_type_create_from_typespec): Ditto.
9137
9138         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
9139         MonoImage to the caller.
9140         (mono_init_internal): Save the opened image in a global variable.
9141         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
9142
9143         * reflection.c (resolve_object): Fix a leak.
9144
9145         * metadata.c: Fix the freeing of data in the generics caches.
9146         
9147         * metadata.c (free_generic_inst): Comment this out to fix the build.
9148         (free_generic_class): Ditto.
9149
9150         * metadata.c: Free cached generic methods, instantinations and classes when
9151         they are removed from the caches.
9152         (mono_metadata_free_type): Free the type itself.
9153
9154         * class.c: Free the result of mono_class_inflate_generic_type () in a few
9155         places.
9156
9157 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9158
9159         * boehm-gc.c: restrict managed allocs to __thread supporting
9160         architectures.
9161
9162 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
9163
9164         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
9165         (mono_generic_class_get_class): Fix a leak.
9166
9167         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
9168         mono_metadata_free_type ().
9169         (mono_metadata_inflate_generic_inst): Fix a leak.
9170
9171 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9172
9173         * mono-debug.c (free_header_data): Fix a leak missed earlier.
9174
9175         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
9176         mempool.
9177
9178         * mono-debug.c (mono_debug_close_image): Fix call to 
9179         g_hash_table_remove ().
9180
9181 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9182
9183         * icall-def.h: redirect all the string ctor to the managed
9184         CreateString () methods.
9185         * string-icalls.c, string-icalls.h: removed dead code for string
9186         ctors and icalls.
9187
9188 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * mono-debug.c: Fix memory leaks.
9191
9192 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9193
9194         * threads-types.h: Implement mono_hazard_pointer_set and 
9195         mono_hazard_pointer_clear macros using do/while(0) to fix
9196         compilation with MSVC.
9197         
9198         Code is contributed under MIT/X11 license.
9199
9200 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9201
9202         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
9203         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
9204
9205 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9206
9207         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
9208         icalls.
9209
9210 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9211
9212         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
9213         managed-code allocated as well.
9214
9215 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9216
9217         * class.c (mono_class_is_assignable_from): Add support for generic variance.
9218
9219 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
9220
9221         * boehm-gc.c: fixed the build after the AOT changes.
9222
9223 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9224
9225         * wrapper-types.h: Add an ALLOC wrapper type.
9226
9227         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
9228         reference managed allocator methods.
9229
9230 2007-09-12  Marek Safar  <marek.safar@gmail.com>
9231
9232         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
9233         of Type array and not MonoType, a fix suggested by Hari.
9234         
9235 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9236
9237         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
9238         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
9239         
9240         Code is contributed under MIT/X11 license.
9241
9242 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9243
9244         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
9245
9246 2007-09-12  Marek Habersack  <mhabersack@novell.com>
9247
9248         * image.c (do_mono_image_open): if assembly file fails to open and
9249         MONO_IOMAP is in effect, try to find the path in a
9250         case-insensitive way.
9251
9252         * appdomain.c (mono_runtime_init): do not install postload hooks -
9253         tests show that MS.NET doesn't use anything of that sort to
9254         trigger the AppDomain.AssemblyResolve event.
9255         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9256         made non-static.
9257         (mono_runtime_init): init portability helpers here.
9258
9259         * assembly.c (mono_assembly_load_with_partial_name): if other   
9260         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9261         to resolve the assembly.
9262
9263         * domain-internals.h: added mono_try_assembly_resolve and marked
9264         it as internal.
9265
9266 2007-09-11  Jb Evain  <jbevain@novell.com>
9267
9268         * object-internals.h (MonoReflectionDynamicMethod): add
9269         a `MonoReflectionType *owner` field. The owner is used
9270         * reflection.c:
9271         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9272         method as the class declaring the dynamic method.
9273         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9274         dynamic method to the declaring type of the methodbuilder.
9275
9276 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9277
9278         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9279         rules for calling methods via reflection.
9280
9281 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9284         Inflate MonoType's.
9285
9286 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9287
9288         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9289         provide a managed method that does fast allocations without needing
9290         a managed->unmanaged transition. Boehm GC implementation currently
9291         enabled for ptrfree objects on sane architectures.
9292
9293 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9294
9295         * marshal.c, marshal.h: exported a couple of useful functions and
9296         added mono_mb_get_label () to easily handle backward branches.
9297
9298 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9299
9300         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9301
9302 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9303
9304         * loader.c (find_method): Fixed the regression introduced while
9305         fixing bug #81466.
9306
9307 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9308
9309         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9310         well.
9311         
9312         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9313         icall.c reflection.c: Pass a MonoGenericContext argument to 
9314         mono_lookup_dynamic_token ().
9315
9316         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9317         #82744.
9318         
9319 2007-09-09  Robert Jordan  <robertj@gmx.net>
9320
9321         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9322         for generic methods.
9323
9324         * object.c (mono_object_get_virtual_method): Handle generic methods.
9325         Fixes bug #78882.
9326
9327         Code is contributed under MIT/X11 license.
9328
9329 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9330
9331         * image.c: fix locking in mono_image_load_file_for_image ().
9332
9333 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9334
9335         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9336         used only as a cache: added an icall to fill it.
9337
9338 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9339
9340         * reflection.h: exposed mono_reflection_free_type_info
9341         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9342         since mono_reflection_bind_generic_parameters makes a copy of it.
9343         * reflection.c (free_type_info): subinfos should be freed.
9344         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9345         made non static.
9346         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9347         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9348         this fixes #82695 and #81726.
9349    
9350
9351 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9352
9353         * process.h, process.c:  added support for user profile/info in
9354           ProcessStartInfo. For now only Windows works.
9355
9356 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9357
9358         * metadata.c: consider the generic arguments when comparing
9359         signatures (bug #82614).
9360
9361 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9362
9363         * cil-coff.h, image.c: updated assembly loader to cope with the
9364         PE32+ 64 bit file format.
9365
9366 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9367
9368         * assembly.c, class.c, domain.c, loader.c: remove useless
9369         inclusion of cil-coff.h.
9370
9371 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9372
9373         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9374         if interface is marked with CoClassAttribute. 
9375    
9376         Code is contributed under MIT/X11 license.
9377
9378 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9379
9380         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9381         if it's seen twice in major collections.
9382
9383 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9384
9385         * sgen-gc.c: big objects are not copied to the gray area, but they
9386         need to be considered for scanning, too, if they are brought alive
9387         by an object ready for finalizations or a survived one.
9388
9389 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9390
9391         * sgen-gc.c: properly account the number of disappearing links when
9392         they are nullified.
9393
9394 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9395
9396         * sgen-gc.c: share the code to scan the registered roots between the
9397         different types of collections.
9398
9399 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9400
9401         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9402
9403 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9404
9405         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9406         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9407
9408 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9409
9410         * security-manager.c (mono_security_manager_get_methods):
9411         LinkDemandSecurityException now has 2 arguments instead of 3.
9412
9413 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9414
9415         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9416         platforms which need it.
9417
9418 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9419
9420         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9421         dtor.
9422
9423 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9424
9425         * threads.c: free the thread static data on thread exit.
9426
9427 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9428
9429         * class.c: walk the hierarchy to find the generic definition for
9430         a class (fixes runtime part of bug #82498).
9431
9432 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9433
9434         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9435         ...
9436
9437         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9438
9439 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9440
9441         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9442
9443 2007-08-24  Robert Jordan  <robertj@gmx.net>
9444
9445         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9446
9447 2007-08-24  Jb Evain  <jbevain@novell.com>
9448
9449         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9450         for byref types.
9451
9452 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9453
9454         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9455         #82286.
9456
9457 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9458
9459         * assembly.c: Fix a warning.
9460         
9461 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9462
9463         * appdomain.c: parse the <runtime> section looking for the probing
9464         element with the 'privatePath' attribute, which sets additional
9465         directories in which the runtime should look for assemblies.
9466
9467 2007-08-23  Robert Jordan  <robertj@gmx.net>
9468
9469         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9470         Fixes #82499.
9471
9472 2007-08-23  Martin Baulig  <martin@ximian.com>
9473
9474         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9475         _mono_debug_init_corlib() and remove it from the header file.
9476
9477 2007-08-23  Martin Baulig  <martin@ximian.com>
9478
9479         * mono-debug-debugger.c
9480         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9481         don't notify the debugger about it.
9482
9483         * mono-debug-debugger.h
9484         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9485
9486 2007-08-23  Robert Jordan  <robertj@gmx.net>
9487
9488         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9489         Code is contributed under MIT/X11 license.
9490
9491 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9492
9493         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9494
9495 2007-08-22  Martin Baulig  <martin@ximian.com>
9496
9497         * mono-debug.c: Store debugging info on a per-domain basis and
9498         free it on domain unload.  Add support for unloading symbol files.
9499
9500         * mono-debug.h
9501         (MonoDebugList): New typedef.
9502         (MonoSymbolTable):
9503         - add `data_tables and `type_table'.
9504         - replace 'symbol_files' and `num_symbol_files' with a
9505           `MonoDebugList *'.
9506         (mono_debug_data_table): Removed.
9507         (mono_debug_list_add): New public function.
9508         (mono_debug_list_remove): New public function.
9509         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9510         (mono_debug_init_2_memory): Renamed into
9511         mono_debug_open_image_from_memory().
9512         (mono_debug_close_image): New public function.
9513         (mono_debug_domain_create): Likewise.
9514         (mono_debug_domain_unload): Likewise.
9515         (MONO_DEBUGGER_VERSION): Bump to 60.
9516
9517         * mono-debug-debugger.h
9518         (MonoDebuggerEvent):
9519         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9520         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9521         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9522         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9523           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9524         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9525           meaning.
9526         (mono_debugger_add_symbol_file): Removed.
9527         (mono_debugger_add_type): Removed.
9528         (mono_debugger_lookup_type): Removed.
9529         (mono_debugger_lookup_assembly): Removed.
9530
9531         * domain.c
9532         (mono_domain_create): Call mono_debug_domain_create().
9533         (mono_init_internal): Call mono_debug_init_corlib().
9534
9535         * assembly.c
9536         (mono_assembly_close): Call mono_debug_close_image().
9537
9538 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9539
9540         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9541         mmap call.
9542
9543 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9544
9545         * sgen-gc.c: ensure section->pin_queue_end is initialized
9546         correctly when non pinning objects in the section have been found.
9547
9548 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9549
9550         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9551         containing a list of directories separated by ':'. MSDN docs say
9552         the directories should be separated with ';'. Part of a bugfix for
9553         bug #81446
9554
9555 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9556
9557         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9558         it should MonoType and not MonoClass.
9559
9560 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9561
9562         * culture-info-table.h : regenerated.
9563
9564 2007-08-20  William Holmes  <billholmes54@gmail.com>
9565
9566         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
9567          to call ReplaceFile Kernel32 on windows or in io-layer.
9568         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
9569         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
9570          as an internal call.
9571
9572         Code is contributed under MIT/X11 license.
9573
9574 2007-08-20  Jb Evain  <jbevain@novell.com>
9575
9576         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
9577         and MONO_EXCEPTION_FIELD_ACCESS.
9578
9579         * debug-helpers.[c|h]: new mono_field_full_name function.
9580
9581 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9582
9583         * class.c: Removed class_security_level() and moved it to
9584         security-core-clr.c.
9585
9586         * security-core-clr.c, security-core-clr.h: class_security_level()
9587         is now public and renamed to mono_security_core_clr_class_level().
9588         It also looks for security attributes in the classes a class is
9589         nested in.
9590
9591 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9592
9593         * security-core-clr.c, security-core-clr.h: CoreCLR security
9594         utility functions.
9595
9596         * Makefile.am: Added security-core-clr.[ch].
9597
9598         * security-manager.c, security-manager.h: Functions and enum for
9599         setting and getting the security mode.
9600
9601         * class.c: CoreCLR security checks.
9602
9603 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9604
9605         * icall-def.h, process.c, process.h: implemented icall to get
9606         user/system processor times.
9607
9608 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9609
9610         * domain.c, threads.c, class-internals.h, domain-internals.h: New
9611         reader-lock-free jit_info_table.
9612
9613 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
9614
9615         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
9616
9617         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
9618
9619         * object-internals.h (MonoException): Add missing _data member.
9620
9621 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9622
9623         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
9624         checking that only methods with matching qname or fqname are picked
9625         from implemented interfaces.
9626
9627 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9628
9629         * verify.c (do_newarr):added, do type verification of
9630         newarr ops, push the right value on the eval stack.
9631         * verify.c (mono_method_verify): use do_newarr
9632
9633
9634 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9635
9636         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
9637         factored the common code into get_boxable_mono_type, which
9638         is now using mono_type_get_full, this fixed byref related tests.
9639
9640 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9641
9642         * class.c: added mono_type_get_full, this function has the same
9643         behavior of mono_class_get_full but the returned MonoType has
9644         all metadata of the associated token in case of a typespec token.
9645         * class.c: added mono_type_retrieve_from_typespec, used by 
9646         mono_type_get_full to retrieve the token type.
9647         * class.c (mono_class_create_from_typespec): changed to use
9648         mono_type_retrieve_from_typespec.
9649         * class.c (mono_ldtoken): changed to use mono_type_get_full
9650         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
9651         * class-internals.h: exported mono_type_get_full for internal use.
9652
9653 2007-08-16  Jb Evain  <jbevain@novell.com>
9654
9655         * domain.c (supported_runtimes): add entry for
9656         the 'moonlight' runtime version.
9657
9658 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9659
9660         * verify.c (mono_method_verify): small typo sliped in.  
9661
9662 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9663
9664         * verify.c (do_unbox_value): added, do type verification of
9665         unboxing ops
9666         * verify.c (mono_method_verify): use do_unbox_value
9667
9668
9669 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9670
9671         * verify.c (dump_stack_value): fixed typo, was printing string
9672         instead of object on stack.
9673         * verify.c (do_box_value): moved the byref check up as it leads
9674         to invalid code and should be done earlier.
9675         * verify.c: improved error messages for and ldobj
9676
9677 2007-08-15  William Holmes  <billholmes54@gmail.com>
9678
9679         * marshal.c (emit_marshal_custom): Omit the call to 
9680           marshal_native_to_managed when calling native to managed 
9681           and the argument is specified as an out argument.
9682
9683         Code is contributed under MIT/X11 license.
9684
9685 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9686
9687         * verify.c: fixed the type checks for generics, function pointers and vectors.
9688         Added type verification for ldobj and ldtoken. The verifier
9689         would segfault if header or signature of a method contained references
9690         to non-existant types.
9691
9692 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9693
9694         * marshal.c (cominterop_get_ccw): Patch from
9695         Bill Holmes to no walk up interface hierarchy. 
9696         All parent methods should be present in the interface for COM.
9697    
9698         Code is contributed under MIT/X11 license.
9699
9700 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9701
9702         * marshal.c (emit_marshal_com_interface): Patch from
9703         Bill Holmes to handle COM Interfaces as return values
9704         for native->managed calls.
9705    
9706         Code is contributed under MIT/X11 license.
9707
9708 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
9709
9710         * marshal.c (cominterop_get_idispatch_for_object): Implement
9711         for runtime callable wrappers.
9712    
9713         Code is contributed under MIT/X11 license.
9714
9715 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
9716
9717         * pedump.c (main): changed from mono_init to mono_init_from_assembly
9718         so 2.0 types are accessible
9719
9720
9721 2007-08-13  Miguel de Icaza  <miguel@novell.com>
9722
9723         * domain.c (mono_init_internal): Call mono_assembly_load_friends
9724         once we load mscorlib.   Due to the order in which we initialize,
9725         the mono_assembly_load_full routine that loads mscorlib did not
9726         load friends.   We now load it once we load the
9727         mono_defaults.internals_visible_class class. 
9728
9729         * assembly.c: Expose the mono_load_friend_assemblies method.
9730
9731 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
9732
9733         * verify.c: improved the handling of boxing, better
9734         type checking for unary ops and conversion. Fix bug
9735         regarding managed pointer compatibility checking
9736
9737 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9738
9739         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
9740
9741         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
9742
9743 2007-08-09  Raja R Harinath  <rharinath@novell.com>
9744
9745         * reflection.c (dup_type): Remove.
9746         * class.c (dup_type): Remove.
9747         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
9748         instead of the dodgy 'dup_type'.
9749         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
9750         handle the case where 'dup_type' needed the second argument.
9751
9752 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9753
9754         * domain.c: Fix a warning.
9755
9756 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9757
9758         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
9759         checking that methods with the same fqname are not overridden
9760         with a method from an ancestor.
9761
9762 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
9763
9764         * threads.c (free_thread_static_data_helper): Avoid a crash if
9765         thread->static_data is not yet set.
9766
9767 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
9768
9769         * marshal.c: Use correct image when emitting
9770         native wrapper for COM calls.
9771    
9772         Code is contributed under MIT/X11 license.
9773
9774 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
9775
9776         * icall-def.h, security.c, security.h :
9777           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
9778
9779 2007-08-07  Martin Baulig  <martin@ximian.com>
9780
9781         * mono-debug-debugger.h
9782         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
9783
9784         * domain.c (mono_domain_free): Call
9785         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
9786
9787 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9788
9789         * verify.c (check_underflow, check_overflow): error message now returns IL offset
9790         * verify.c (in_same_block): code should test if either offset is inside the clauses
9791         * verify.c (mono_method_verify): push the exception into the eval stack of exception
9792         and filter blocks
9793
9794 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9795
9796         * image.c (mono_image_close): Fix a leak.
9797
9798         * object.c (mono_runtime_invoke_array): Avoid using alloca.
9799
9800         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
9801
9802 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9803
9804         * domain.c, threads.c, threads-types.h: fix memory retention issue
9805         with thread static variables not being cleared on domain unload.
9806         Reuse thread static slots after domain unload.
9807
9808 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9809
9810         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
9811         nullable type.
9812
9813         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
9814         now done in mono_runtime_invoke_array.
9815
9816         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
9817         receiver is a nullable type.
9818
9819         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
9820         generic parameter.
9821
9822 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
9823
9824         * marshal.c: Implement COM Objects as return type for 
9825         managed->unmanaged calls. Added Release calls for COM Object
9826         out/return values in managed->unmanaged calls.
9827
9828         Code is contributed under MIT/X11 license.
9829
9830 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9831
9832         * threads.h, threads-type.h: move the hazard pointer declarations
9833         to the private header.
9834
9835 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9836
9837         * file-io.c, appdomain.c: memory leak fixes.
9838
9839 2007-08-02  Dick Porter  <dick@ximian.com>
9840
9841         * socket-io.c
9842         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
9843         SO_REUSEADDR setting into io-layer/sockets.c.
9844
9845 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9846
9847         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
9848         from Object when called on a generic parameter. Fixes #82211.
9849
9850 2007-08-01  Dick Porter  <dick@ximian.com>
9851
9852         * file-io.c (convert_share): Test FileShare values bit-by-bit.
9853         Fixes bug 79250 yet again.
9854
9855 2007-07-30  Martin Baulig  <martin@ximian.com>
9856
9857         Merged the `debugger-dublin' branch.
9858
9859         * mono-debug.h
9860         (MonoDebugDataTable): New typedef.
9861         (MonoDebugMethodAddressList): New typedef.
9862         (MonoDebugWrapperData): Removed.
9863         (MonoDebugSymbolTable): Removed `current_data_table',
9864         `current_data_table_size', `current_data_table_offset'.
9865         (MonoDebugDataItemType): Moved into mono-debug.c.
9866         (MonoDebugMethodJitInfo): Remove `address'.
9867         (mono_debug_data_table): New global variable.
9868         (mono_debug_lookup_method_addresses): New public function.
9869         (mono_debug_find_method): Take a `MonoMethod *', not a
9870         `MonoDebugMethodInfo *'.
9871
9872         * mono-debug.c: Drop support for the old symbol tables.
9873
9874 2007-06-28  Martin Baulig  <martin@ximian.com>
9875
9876         * mono-debug.c (mono_debug_debugger_version): New public variable.
9877
9878 2007-07-31  William Holmes  <billholmes54@gmail.com>
9879
9880         * metadata.c Changed mono_type_create_from_typespec to not insert
9881           the type into the hash map until after
9882           do_mono_metadata_parse_type has completed.
9883         Fixes Bug #82194
9884         Code is contributed under MIT/X11 license.
9885
9886 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
9887
9888         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
9889         generic parameter. Fixes #82211.
9890
9891 2007-07-27  Jb Evain  <jbevain@novell.com>
9892
9893         * pedump.c (dump_metadata, dump_metadata_header): dump
9894         versions contained in the metadata header.
9895
9896 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9897
9898         * threads.c: register small_id_table with the GC.
9899
9900 2007-07-27  Mark Probst  <mark.probst@gmail.com>
9901
9902         * threads.c, threads.h, class-internals.h, object-internals.h:
9903         Hazard pointers, to be used by lock-free parallel algorithms.
9904
9905 2007-07-26  Dick Porter  <dick@ximian.com>
9906
9907         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
9908         routine on non-windows platforms, as I've not managed to think of
9909         a non-kludgy way of doing this.  Finishes off bug 78739.
9910
9911 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
9912
9913         * object.c: properly setup interface_bitmap in proxy vtables.
9914
9915 2007-07-25  Marek Habersack  <mhabersack@novell.com>
9916
9917         * appdomain.c (get_shadow_assembly_location): do not use TickCount
9918         to create unique shadow copy target directories, use the domain's
9919         serial number instead. Each domain gets a unique target directory
9920         that way.
9921
9922         * domain.c (mono_domain_create): added code to increment domain
9923         shadow copy serial number and cache the value in the current
9924         domain structure.
9925
9926         * domain-internals.h (struct _MonoDomain): added a new field -
9927         shadow_serial to hold the serial number used in generation of
9928         shadow-copy directories. This is to make sure that the directory
9929         name is unique for each and every domain created. We avoid a race
9930         condition with overriding assemblies already in use by other app
9931         domains.
9932
9933 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
9934
9935         * class.c (mono_bounded_array_class_get): fixed memory leak when 
9936         binding generic parameters.
9937
9938 2007-07-24  Raja R Harinath  <rharinath@novell.com>
9939
9940         * metadata.c (do_mono_metadata_parse_generic_class): Use
9941         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
9942         error.
9943
9944 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
9945
9946         * loader.c, class-internals.h, reflection.c: removed the per-method
9947         generics hashtable: we use the global one through the call of
9948         mono_class_inflate_generic_method ().
9949
9950 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9951
9952         * class.c, metadata.c, class-internals.h: introduce yet another
9953         generics global cache for inflated methods (fixes 98% of the perf
9954         issue in bug #81806).
9955
9956 2007-07-23  Raja R Harinath  <rharinath@novell.com>
9957
9958         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
9959         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
9960         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
9961         return a MonoGenericInst containing (a copy) of those types.
9962         (mono_metadata_inflate_generic_inst): Update to changes.
9963         (mono_metadata_parse_generic_inst): Likewise.
9964         (mono_get_shared_generic_inst): Likewise.
9965         * reflection.c (mono_class_bind_generic_parameters): Likewise.
9966         (mono_reflection_bind_generic_method_parameters): Likewise.
9967         * metadata-internals.h: Likewise.
9968         * icall.c (free_generic_context): Kill.
9969         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
9970
9971         * reflection.c (reflection_methodbuilder_to_mono_method): Use
9972         mono_metadata_type_dup.
9973         * marshal.c (mono_mb_create_method): Likewise.
9974
9975         * metadata.c (mono_metadata_type_dup): Rename from
9976         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
9977         MonoImage.  Handle a few more cases, esp. when no mempool is given.
9978         * marshal.c, metadata-internals.h: Update to changes.
9979
9980 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9981
9982         * class.c: fixed a small leak for array classes and removed warning.
9983
9984 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
9985
9986         * loader.c (mono_method_get_param_token): Make this work on generic methods.
9987         Return 0x8000000 for return parameters. Fixes #82161.
9988
9989 2007-07-21  Marek Habersack  <grendello@gmail.com>
9990
9991         * appdomain.c (get_shadow_assembly_location): append the current
9992         ticks value to the path. Avoids overwriting the same assemblies by
9993         several threads at the same time.
9994
9995 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
9996         and Raja R Harinath  <rharinath@novell.com>
9997
9998         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
9999         Simplify slightly.
10000         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
10001         property for testing if a method is a generic method definition.
10002
10003 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10004
10005         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
10006
10007 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10008
10009         * verify.c: used function from private branch, reverted to the one in class.h 
10010
10011 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10012
10013         * verify.c: a typo slipped in and the code wont compile
10014
10015 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10016
10017         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
10018         disabled box instruction as it is doing the wrong thing
10019         improved stack dump messages, now it is easier to debug type related issues
10020
10021
10022 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
10023
10024         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
10025
10026 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10027
10028         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
10029         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
10030         grouped with class and valuetype. This change will simply 
10031         the code as it should be handled just like unmanaged pointers.
10032
10033 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10034
10035         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
10036
10037 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10038
10039         * verify.c: several stack merge issues fixed, reference comparisons now
10040         check the type size. strict type check now works correctly.
10041         added more uses of IS_MANAGED_POINTER macro.
10042         fixed issues pointed by running the test suite against .net.
10043         
10044
10045 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10046
10047         * class.c, loader.c, class-internals.h: Removed the
10048         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
10049         defines.
10050
10051         * icall.c: Better error checking in some internal reflection
10052         methods.
10053
10054 2007-07-18  William Holmes  <billholmes54@gmail.com>
10055
10056         * filewatcher.c : removed unused variable 'filename' in 
10057           ves_icall_System_IO_FSW_SupportsFSW
10058
10059 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10060
10061         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
10062         obsolete, removed.
10063
10064 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10065
10066         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
10067         
10068         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
10069
10070 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10071
10072         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
10073         Implement generics support.
10074         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10075
10076         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
10077         type_args and method_args arguments.
10078         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
10079         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10080         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
10081
10082 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
10083
10084         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
10085           It adds a rootimage parameter to mono_reflection_get_type_internal,
10086           adds new function mono_reflection_get_type_with_rootimage and use
10087           the rootimage to resolve the types instead of the current image
10088
10089 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10090
10091         * culture-info-table.h: Forgot to update after r78304.
10092
10093 2007-07-13  Raja R Harinath  <rharinath@novell.com>
10094
10095         * class.c (mono_class_is_open_constructed_type)
10096         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
10097
10098 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
10099
10100         * class.c (mono_bounded_array_class_get):  method fails if used with
10101         an incomplete TypeBuilder enum (no basetype field), fixed it by 
10102         avoiding calculating the size for such array as it cannot be instantiated.
10103         Fix bug #82015
10104
10105 2007-07-12  Raja R Harinath  <rharinath@novell.com>
10106
10107         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
10108         field.
10109         * metadata.c, reflection.c: Update to changes.
10110
10111 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
10112
10113         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
10114         mono_class_is_valid_enum, they are used to valide a enum when loading.
10115         * reflection.c: used new functions to throw TypeLoadException when and
10116         invalid enum is build with TypeBuilder. Fixes #82018
10117   
10118 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10119
10120         * object.c: forgot commit of mono_class_setup_methods () to access
10121         iface->methods.
10122         * object-internals.h: added a few more handy fields to
10123         MonoIMTCheckItem.
10124
10125 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
10128         iface->methods.
10129
10130 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10131
10132         * class-internals.h, object-internals.h, object.c: IMT-based
10133         interface invocation core from Massimiliano Mantione
10134         (massi@ximian.com) with a reworked arch-specific interface,
10135         bsearch implementation and a few bugfixes and memory savings by me.
10136
10137 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
10138
10139         * class.c (mono_class_create_from_typedef): mono would segfault if 
10140         an enum did not have a __value field. It now throws a TypeLoadException
10141         for such cases. Fix bug #82022
10142
10143 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10144
10145         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
10146
10147 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10148
10149         * class.c (mono_class_init): If a class is already inited but has
10150         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
10151
10152 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10153
10154         * class.c: Properly handle the case of an unimplemented interface
10155         method.  Fixes: 81673.
10156
10157 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10158
10159         * class-internals.h, object.c: cleanup patch from massi: use
10160         MonoVTable->interface_bitmap since the vtable interfaces offset array
10161         is going away.
10162
10163 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10164
10165         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
10166         GetMDStreamVersion icall instead.
10167
10168 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10169
10170         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
10171         not use mono_dl_build_path() with a full library name: makes
10172         fallbacks to libgaim and libfam work.
10173
10174 2007-07-06  William Holmes  <billholmes54@gmail.com>
10175
10176         * assembly.c: Added a continue statement in probe_for_partial_name when
10177          parse_assembly_directory_name fails.  Fixes : 82002
10178
10179 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
10180
10181         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
10182         and added a verification  for TYPEDBYREF.
10183         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
10184         make native int interchangeable with int32 and some small cleanup and formating.
10185         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
10186         handle byref of byref.
10187         * verify.c (push_local): handle byref of byref.
10188         * verify.c (do_binop): invalid mix of values is unverifiable
10189         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
10190         added visibility checks
10191         * verify.c (field related method): added visibility checks
10192         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
10193
10194 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
10195
10196         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
10197         string.
10198
10199 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10200
10201         * profiler.c (mono_profiler_load): Fix an off-by-one error.
10202
10203         * marshal.c (emit_marshal_string): When returning a string from managed code,
10204         allways make a copy even for unicode strings. Fixes #81990.
10205
10206 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
10207
10208         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
10209         of byref generic inst types (bug #81997).
10210
10211 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10212
10213         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
10214         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
10215
10216 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
10217
10218         * marshal.c (emit_marshal_string): Add support for unicode strings in
10219         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
10220
10221 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
10222
10223         * verify.c: field load/store are now verified, missing only access checks now
10224
10225 2007-06-28  Martin Baulig  <martin@ximian.com>
10226
10227         * mono-debug.c (mono_debug_debugger_version): New public variable.
10228
10229 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
10230
10231         * locales.c: When constructing DateTimeFormat or NumberFormat for
10232         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
10233         MonoCultureInfo contructed from the current locale is always
10234         read-only and has UseUserOverride set to true. All MonoCultureInfo
10235         instances returned for GetCultures have both IsReadOnly and
10236         UseUserOverride set to true. Fixes part of bug #81930.
10237
10238 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
10239
10240        * icall-def.h: Update System.__ComObject icalls
10241        * marshal.c: Avoid managed transition (and object creation)
10242        when looking up COM interface in RCW.
10243        * marshal.h: Ditto.
10244        
10245        Code is contributed under MIT/X11 license.
10246
10247 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
10248
10249         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
10250         to avoid crashes during assembly unloading.
10251
10252 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10253
10254         Fix MethodInfo.IsGenericMethodDefinition
10255         * reflection.c (mono_reflection_bind_generic_method_parameters):
10256         Rearrange code to ensure we always uses a generic method definition.
10257         * class.c (mono_class_inflate_generic_method_full): Set
10258         'generic_container' field only for generic method definitions.
10259         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10260         Use presense of 'generic_container' field as indication of being a
10261         generic method definition.
10262
10263 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10264
10265         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10266
10267         * object-internals.h: Reflect changes in the layout of the managed Delegate
10268         class.
10269         
10270         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10271         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10272         runtime memory used by the dynamic method. Fixes #77146.
10273
10274 2007-06-21  Dick Porter  <dick@ximian.com>
10275
10276         * file-io.h: 
10277         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10278         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10279         81767.
10280
10281 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10282
10283         * reflection.c (method_encode_methodspec): Add a tripwire.
10284         * class.c (inflate_generic_type): The fully open generic type is
10285         not the same as the generic type definition.
10286
10287 2007-06-21  Martin Baulig  <martin@ximian.com>
10288
10289         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10290
10291         * mono-debug-debugger.h
10292         (MonoDebuggerBreakpointInfo): Removed.
10293         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10294         (mono_debugger_remove_breakpoint): Likewise.
10295         (mono_debugger_breakpoint_callback): Likewise.
10296         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10297
10298 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10299
10300         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10301         generic type is not the same as the generic type definition.
10302         * class.c (mono_generic_class_get_class): Likewise.
10303
10304 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10305
10306         * icall.c: The second argument to 
10307         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10308         is a MonoType not a MonoClass.
10309
10310 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10311
10312         * verify.c: support for function pointers in the verifier
10313
10314 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10315
10316         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10317
10318 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10319
10320         * assembly.c: removed Mono.Data.SqliteClient from the list of
10321         forward-compatible assemblies as it breaks the ABI (bug #81899).
10322
10323 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10324
10325         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10326         lookup/update with the loader lock.
10327         * reflection.c (mono_class_bind_generic_parameters): No need to
10328         protect mono_metadata_lookup_* with the loader lock.
10329         * class.c (inflate_generic_type): Likewise.
10330         
10331         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10332         on a generic instantiated type.
10333
10334 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10335
10336         *verify.c: produce meanfull error messages on verification error
10337         *verify.c: fixed some cases of verification errors reported as validation errors
10338         *pedump.c: fixed the error name array, now it shows validation errors properly
10339         *verify.h: fixed the contant that should be used for verification errors
10340
10341 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10342
10343         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10344         for bug #77596, 81858 and 80743 (generics data structures on domain
10345         unload).
10346
10347 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10348
10349         Avoid allocating 'MonoGenericContext' on the heap.
10350         * class-internals (_MonoMethodInflated::context): Make field
10351         inline, not a pointer.
10352         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10353         stack.  Use the context embedded within the inflated method as the
10354         hash key, rather than 'new_context'.
10355         * class.c (inflate_generic_context): Simplify.  Return a struct
10356         rather than allocating on the heap.
10357         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10358         doesn't salt away a copy of the context -- simplifying the
10359         lifetime rules of a 'MonoGenericContext *'.
10360         (mono_method_get_context): Return pointer to embedded context.
10361         (setup_generic_array_ifaces): Allocate temporary context on stack.
10362         * reflection.c (inflate_mono_method): Likewise.
10363         (mono_reflection_bind_generic_method_parameters): Likewise.
10364         Use the context embedded within the inflated method as the hash key.
10365
10366         Avoid a source of allocation of 'MonoGenericContext'.
10367         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10368         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10369         * class.c: Update to changes.
10370         (mono_generic_class_get_context): Simplify drastically.  Now just
10371         returns a pointer to the field.
10372         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10373         argument as a const pointer.
10374         (mono_metadata_generic_context_equal): Likewise.
10375         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10376         Update to changes.
10377
10378 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10379
10380         * verify.c improved the handling of brtrue/brfalse, factored out common code
10381
10382 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10383
10384         Kill MonoGenericMethod.
10385         * class-internals.h (MonoGenericContext::method_inst): Rename from
10386         'gmethod' and convert to a MonoGenericInst.
10387         (MonoGenericMethod): Remove.
10388         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10389         * loader.c (method_from_methodspec): Update to changes.  Use a
10390         MonoGenericContext as the key to the hashtable.
10391         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10392         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10393         (mono_metadata_generic_context_hash): Likewise from
10394         'mono_metadata_generic_method_hash'.  Change hash function.
10395         (mono_metadata_load_generic_params): Update to changes.
10396         (mono_get_shared_generic_method): Remove.
10397         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10398         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10399         (inflate_generic_context): Likewise.
10400         (mono_class_inflate_generic_method_full): Likewise.
10401         (setup_generic_array_ifaces): Likewise.
10402         (mono_class_create_from_typespec): Likewise.
10403         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10404         (method_encode_methodspec): Update callsite.
10405         (reflection_methodbuilder_to_mono_method): Update to changes.
10406         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10407         MonoGenericContext as the key to the hashtable.
10408         (inflate_mono_method): Update to changes.
10409
10410         * class-internals.h (MonoGenericMethod::container): Remove.
10411         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10412
10413 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10414
10415         * profiler-private.h, profiler.c, profiler.h: added API to profile
10416         exception events.
10417
10418 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10419
10420         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10421
10422 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10423
10424         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10425         Fixed overflow and underflow not aborting the verification process.
10426
10427 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10428
10429         * class-internals.h (MonoStats): Added stats entries for dynamic
10430         code allocations.
10431
10432 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10433
10434         * loader.c (mono_free_method): Free header->locals and header->clauses.
10435
10436         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10437         dynamic case.
10438
10439         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10440
10441         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10442
10443 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10444
10445         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10446         the tables.
10447
10448 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10449
10450         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10451
10452 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10453
10454         MonoGenericMethod on a diet
10455         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10456         here ...
10457         (_MonoGenericMethod::reflection_info): ... from here.
10458         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10459         Update to changes.
10460         * reflection.c (inflate_mono_method): Likewise.
10461         (mono_reflection_bind_generic_method_parameters): Likewise.
10462
10463 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10464
10465         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10466         *verify.c: factored long ldarg forms to share code with short forms
10467
10468 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10469
10470         *verify.c: fixed code formating factored some duplicate code
10471         into a new function
10472
10473         *verify.h: fixed binary incompatibility introduced earlier
10474
10475         *pedump.c: fixed formating
10476
10477 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10478
10479         Fix assertion when disassembling Mono.C5.dll
10480         * loader.c (method_from_methodspec): Avoid inflating a method
10481         twice with the same context.  If the methodref is inflated, use
10482         the declaring method instead.
10483
10484         * class.c (mono_class_from_generic_parameter): Fix case similar to
10485         bug #81830 handled below, but for method containers.
10486
10487 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10488
10489         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10490         get_shared_generic_class.  Directly inflate the instance.
10491         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10492         (inflate_generic_class): Delete.
10493         (get_shared_generic_class): Delete.  Move setting of
10494         'cached_class' and 'cached_context' ...
10495         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10496
10497         * metadata.c (mono_metadata_lookup_generic_class): Change
10498         signature to take the components of a MonoGenericClass rather than
10499         an allocated MonoGenericClass.  Change semantics to be intern-like.
10500         * reflection.c (mono_class_bind_generic_parameters): Update to
10501         changes.  Make locking region tighter.
10502         * class.c (inflate_generic_class): Update to changes.
10503         (get_shared_generic_class): Likewise.
10504         * metadata-internals.h: Likewise.
10505
10506         * reflection.c (mono_class_bind_generic_parameters): Take and
10507         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10508         (mono_reflection_bind_generic_parameters): Use
10509         'mono_class_bind_generic_parameters' rather than duplicate the code.
10510         * class.c (mono_bounded_array_class_get): Update to changes.
10511         * object-internals.h: Likewise.
10512
10513         * reflection.c (mono_class_bind_generic_parameters): Only support
10514         parameterizing generic type definitions.  Remove support for other
10515         open types.
10516
10517 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10518
10519         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10520
10521         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10522         in the dynamic case.
10523
10524 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10525
10526         * threads.c: When cleaning up thread, reset the Background bit.
10527         Fixes bug #81720.
10528
10529 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10530
10531        * metadata.c: Move variable declarations to top of scope.
10532        * verify.c: Move variable declarations to top of scope.
10533
10534        Code is contributed under MIT/X11 license.
10535
10536 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10537
10538         * reflection.c (mono_class_bind_generic_parameters): Replace
10539         open-coded loop with mono_metadata_inflate_generic_inst.
10540
10541         * class.c (get_shared_generic_class): Don't call
10542         mono_get_shared_generic_inst.  Use the container's own
10543         'class_inst'.
10544
10545         * metadata.c (mono_metadata_load_generic_params): Move
10546         initialization of 'context' field here from ...
10547         * class.c (mono_class_create_from_typedef): ... here, and ...
10548         * loader.c (mono_get_method_from_token): ... here.
10549
10550         * class.c (get_shared_generic_class): Rename from
10551         mono_get_shared_generic_class and make static.
10552         (mono_get_shared_generic_inst): Move to metadata.c.
10553         * loader.c (mono_get_shared_generic_method): Likewise.
10554         * class-internals.h, metadata-internals.h: Update to changes.
10555
10556         Fix #81830
10557         * class.c (mono_class_from_generic_parameter): Don't assume a
10558         generic container owner exists.  Generic containers from monodis
10559         don't have any.
10560
10561 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10562
10563         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10564         * verify.h: new typedefs to returns the non-verifiable status
10565         * verify.c: initial implementation of generics, stack merging and object compatibility check
10566
10567 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10568
10569         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10570         a MonoInternalHashTable again (fixed bug in internal hash table
10571         code).
10572
10573 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10574
10575         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10576         MonoInternalHashTable again (fixed bug in internal hash table
10577         code).
10578
10579 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10580
10581         * class.c, image.c, class-internals.h, domain.c,
10582         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
10583         changes.  Have to figure out what makes them break the SWF
10584         regression.
10585
10586 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10587
10588         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10589         a MonoInternalHashTable now.
10590
10591 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10592
10593         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10594         MonoInternalHashTable now.
10595
10596 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
10599         invoke_impl code.
10600
10601         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
10602
10603         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
10604         dependent trampoline.
10605
10606         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10607
10608         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
10609
10610 2007-05-29  Robert Jordan  <robertj@gmx.net>
10611
10612         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
10613
10614 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
10615
10616         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
10617
10618 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
10619
10620        * marshal.c: Fix interface lookup loops for
10621        cominterop_get_com_slot_for_method and 
10622        cominterop_get_method_interface. Only need to lookup
10623        if type is a class, else use interface type method is on.
10624
10625        Code is contributed under MIT/X11 license.
10626
10627 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
10628
10629         * reflection.c: HasSecurity can be present even if no specially 
10630         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
10631         SecurityAttribute). Fix CAS regression tests on buildbot.
10632
10633 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10634
10635        * appdomain.c: Add configure checks for header files.
10636        * image.c: Add configure checks for header files.
10637        * file-io.c: Add configure checks for header files.
10638        * debug-mono-symfile.c: Add configure checks for header files.
10639        * threadpool.c: Add configure checks for header files.
10640        * console-io.c: Add configure checks for header files.
10641        * profiler.c: Add configure checks for header files.
10642        * rawbuffer.c: Add configure checks for header files.
10643        * icall.c: Add configure checks for header files.
10644        * rand.c: Add configure checks for header files.
10645        * socket-io.c: Add configure checks for header files.
10646
10647        Code is contributed under MIT/X11 license.
10648
10649 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
10650
10651         * reflection.c (mono_custom_attrs_from_builders): Remove the 
10652         assertion as it breaks the build.
10653         
10654         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
10655
10656         * reflection.c (lookup_custom_attr): Make a copy here too.
10657
10658         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
10659         dynamic images.
10660
10661         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
10662         images.
10663
10664         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
10665         info.
10666
10667 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10668
10669         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
10670         (load_cattr_value): Ditto.
10671
10672 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
10675
10676 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
10677
10678         * threads.c: In "start_wrapper", set apartment_state to MTA if
10679         apartment_state is Unknown and we're running on 2.0 profile or
10680         higher.
10681         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
10682         to main method, then set apartment_state to Unknown on 1.0 profile,
10683         and MTA on 2.0 profile.
10684
10685 2007-05-16  Jb Evain  <jb@nurv.fr>
10686
10687         * class-internals.h (MonoDefaults): Add an attribute_class and
10688           customattribute_data_class.
10689         * domain.c (mono_init_internal): Populate them.
10690         * reflection.c: Use them to remove duplicates. Make a vew
10691         MonoClass variables `static'.
10692
10693 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10694
10695         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
10696         step in implementing IMT, so that all isinst checks now can go
10697         through the bitmap.
10698         This was needed because vtables for TransparentProxy need to look
10699         like the vtable of the "target" class, so they need to point to
10700         its interface bitmap directly.
10701
10702         * object.c: inside "mono_class_create_runtime_vtable" and
10703         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
10704
10705 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
10706
10707         * object-internals.h
10708           culture-info.h : added territory field in MonoCulture and
10709           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
10710         * locales.c : fill territory field above too.
10711         * culture-info-table.h : regenerated.
10712
10713 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10714
10715         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
10716         Fixes #81599.
10717
10718 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
10719
10720         * object.c: Always initialize apartment, even if 
10721         there is no custom attributes on entry point.
10722         
10723         Code is contributed under MIT/X11 license.
10724
10725 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
10726
10727         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
10728         * metadata.c: If no encoding is set, check for unicode
10729         on class.
10730         
10731         Code is contributed under MIT/X11 license.
10732
10733 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10734
10735         * threads.c: Handle if mono_thread_current returns NULL 
10736         
10737         Code is contributed under MIT/X11 license.
10738
10739 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10740
10741         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
10742         in start_wrapper. Added mono_thread_init_apartment_state and
10743         mono_thread_cleanup_apartment_state.
10744         * object.c: Initialize thread apartment state on main thread
10745         by checking for STAThreadAttribute on entry point.
10746         * object-internals.h: Add apartment_state field to MonoThread.
10747         * threads-types.h: Add unmanaged definition of 
10748         System.Threading.ApartmentState, MonoThreadApartmentState.
10749         
10750         Code is contributed under MIT/X11 license.
10751         
10752 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
10753
10754         * class.c: Fix windows build.
10755         * class-internals.h: Fix windows build.
10756         
10757         Code is contributed under MIT/X11 license.
10758
10759 2007-05-08  Robert Jordan  <robertj@gmx.net>
10760
10761         * process.c (CreateProcess_internal):
10762         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
10763         .CreateNoWindow was specified. Fixes #81496.
10764
10765 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10766
10767         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
10768         step in implementing IMT, replaced it with two compact arrays
10769         (interfaces_packed and interface_offsets_packed) and a bitmap that
10770         is used for isinst checks (interface_bitmap).
10771
10772         * class.c: (compare_interface_ids): compare function to pass to
10773         bsearch when looking for an interface with a given id.
10774         (mono_class_interface_offset): reimplemented using bsearch on
10775         interfaces_packed, getting the offset from interface_offsets_packed.
10776         (print_implemented_interfaces): utility debugging function.
10777         (setup_interface_offsets): reworked to initialize interfaces_packed,
10778         interface_offsets_packed and interface_bitmap.
10779
10780         * object.c: replaced all accesses to "MonoClass.interface_offsets"
10781         with uses of interfaces_packed and interface_offsets_packed.
10782
10783 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10784
10785         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
10786         mono_class_interface_offset prototype to wrap all accesses to
10787         "MonoClass.interface_offsets".
10788
10789         * class.c: Implemented mono_class_interface_offset, and wrapped all
10790         accesses to "MonoClass.interface_offsets".
10791
10792         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
10793         "MonoClass.interface_offsets".
10794
10795 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
10796
10797         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
10798         GetMethodFromHandle overloads (bug #78637).
10799
10800 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10801
10802         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
10803         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
10804
10805 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
10806
10807         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
10808         #81498.
10809
10810         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
10811         gracefully.
10812         (mono_custom_attrs_from_index): Ditto.
10813
10814         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
10815         Fixes #81501.
10816
10817 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10818
10819         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
10820         is now allocated from a mempool.
10821
10822 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
10823
10824         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
10825         caller holds threads_lock, leading to deadlocks. Fixes #81476.
10826
10827 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10828
10829         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
10830         mono_loader_clear_error () too late. Fixes #81463.
10831
10832 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
10833
10834         * culture-info-table.h : regenerated.
10835
10836 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10837
10838         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
10839         is missing.
10840
10841 2007-04-25  Dick Porter  <dick@ximian.com>
10842
10843         * Makefile.am: Put the mingw enforced-optimisation back into the
10844         PLATFORM_WIN32 section.
10845
10846 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10847
10848         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
10849         patch.
10850
10851         * image.c (mono_image_load_module): New API function to load a module reference.
10852
10853         * image.c (load_modules): Load modules lazily. Fixes #80812.
10854
10855         * class.c (mono_class_from_typeref): Use mono_image_load_module.
10856         
10857         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
10858
10859         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
10860         to mono_image_load_module_dynamic.
10861
10862 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
10863
10864         * marshal.c: Fix calling convention for CCW on non-windows
10865         platforms. STDCALL on windows, CDECL everywhere else to work 
10866         with XPCOM and MainWin COM.
10867         
10868         Code is contributed under MIT/X11 license.
10869
10870 2007-04-23  Martin Baulig  <martin@ximian.com>
10871
10872         Fix #80969.
10873
10874         * loader.c
10875         (method_from_memberref): Added `gboolean *used_context' argument.
10876         (mono_get_method_from_token): Likewise.
10877         (mono_get_method_full): Don't insert the method in the cache when
10878         `used_context' is true.
10879
10880 2007-04-23  Raja R Harinath  <rharinath@novell.com>
10881
10882         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
10883
10884         * reflection.c (mono_reflection_bind_generic_parameters): Don't
10885         create new MonoTypes for returned types.
10886         * class.c (mono_generic_class_get_class): Export mono-internal.
10887         * class-internals.h: Update to changes.
10888
10889 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
10890
10891         * threadpool.c, threadpool.h, icall-def.h: patch from
10892         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
10893
10894 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
10895
10896         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
10897         
10898         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
10899
10900         * threads.c (mono_thread_get_stack_bounds): New helper function.
10901
10902         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
10903         Correctly compute stack bounds when attaching. Fixes #81394.
10904
10905 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
10906
10907         * reflection.c: fix handling of doubles in custom attributes
10908         for the arm-fpa format (bug #81368).
10909
10910 2007-04-18  Raja R Harinath  <rharinath@novell.com>
10911
10912         * reflection.c (assembly_add_win32_resources): Mildly relax an
10913         bounds check to let the end pointer point just past the end of the
10914         allocated buffer.  (may fix #81384)
10915
10916 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
10917
10918         * culture-info-table.h : regenerated.
10919
10920 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
10923         the thread is aborted early.
10924
10925 2007-04-05  Dick Porter  <dick@ximian.com>
10926
10927         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
10928         FindFirstFile()/FindNextFile() to find entries.  This lets the
10929         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
10930         81038.
10931
10932         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
10933         the parameters of
10934         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
10935
10936 2007-04-04  Martin Baulig  <martin@ximian.com>
10937
10938         * debug-helpers.c
10939         (mono_method_desc_full_match): Add support for nested classes.
10940
10941 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
10942
10943         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
10944
10945 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
10946
10947         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
10948         waiting for too many threads.
10949
10950 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
10951
10952         * environment.c: Fix return value check on uname so we can get the 
10953         executing version on Solaris operating systems.
10954
10955 2007-03-28  Jb Evain  <jbevain@gmail.com>
10956
10957         * class.c (mono_type_get_name_recurse): Complete the
10958         fix for the creation of assembly qualified names for
10959         pointer types. Fixes #81208.
10960
10961 2007-03-27  Dick Porter  <dick@ximian.com>
10962
10963         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
10964         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
10965         changed.
10966
10967         * threads.c
10968         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
10969         the value of ReleaseMutex().
10970
10971 2007-03-27  Dick Porter  <dick@ximian.com>
10972
10973         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
10974         in little-endian order, not network endian, so must be converted
10975         to host endian here.  Fixes bug 80593.
10976
10977 2007-03-22  Jb Evain  <jbevain@gmail.com>
10978
10979         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
10980         qualified names for pointer types. Fixes #81208.
10981
10982 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
10983
10984         * marshal.c: Add support for PreserveSigAttribute. 
10985         
10986         Code is contributed under MIT/X11 license.
10987
10988 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
10989
10990         * process.c: Fix endianness issues. Fixes #81126.
10991
10992         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
10993         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
10994
10995         * image.c (mono_image_lookup_resource): Make this work on big-endian
10996         machines.Change API contract so the caller needs to free the return value.
10997         
10998         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
10999         API change.
11000         
11001 2007-03-14  Martin Baulig  <martin@ximian.com>
11002
11003         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
11004         mono_type_get_desc() as well.
11005
11006 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11007
11008         * icall.c:  Fix environ access in VS.  
11009         
11010 2007-03-13  Alp Toker  <alp@atoker.com>
11011
11012         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
11013         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
11014         #63841.
11015
11016 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
11017
11018         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
11019         circular references among dynamic methods. Fixes #81091.
11020
11021         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
11022
11023 2007-03-09  Martin Baulig  <martin@ximian.com>
11024
11025         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
11026
11027 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
11028
11029         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
11030         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
11031         
11032         Code is contributed under MIT/X11 license.
11033         
11034 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
11035
11036         * loader.c: Reapply patch for bug #79424.
11037
11038 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11039
11040         * metadata.c (mono_type_to_unmanaged): Only convert object to
11041         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
11042
11043 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
11044
11045         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
11046         (and incorrectly set) is_reference field from MonoGenericInst.
11047
11048 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11049
11050         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
11051         a little earlier.
11052
11053         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
11054
11055         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
11056
11057 2007-03-05  Miguel de Icaza  <miguel@novell.com>
11058
11059         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
11060         FileOptions.1 value to mean "temporary", map that to
11061         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
11062
11063         Fixes 80688
11064
11065 2007-03-03  Marek Habersack  <mhabersack@novell.com>
11066
11067         * appdomain.c: implement MS .Net style shadow copying. Copies of
11068         the assemblies are made in a subdirectory of the dynamic base
11069         directory, the assembly names are preserved.
11070         Copy .mdb and .config files along with the assemblies being shadowed.
11071
11072 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11073
11074         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
11075         (emit_marshal_handleref): Ditto.
11076
11077         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
11078         on Visual C++. Fixes #80671.
11079
11080 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11081
11082         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
11083         for clone operations.
11084
11085 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11086
11087         * marshal.c: Fix warnings.
11088
11089 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
11090
11091         * loader.c: allow case-insensitive matching of the dll name
11092         in dllmap handling when prefixed with "i:".
11093
11094 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
11095
11096         * threads.c: Fix #ifdef for dummy_apc function for VS.
11097
11098 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11099
11100         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
11101
11102 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
11103         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
11104         giving precedence to the methods with a fully qualified name
11105         (InterfaceName.MethodName) when building the interface sections
11106         of the vtable.
11107
11108 2007-02-16  Dick Porter  <dick@ximian.com>
11109
11110         * threadpool.c (append_job): Fix fast-path array handling, so it's
11111         less likely the array will grow exponentially when the load is
11112         heavy.
11113
11114 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11115
11116         * metadata-internals.h, loader.c: fix dllmap lookup order
11117         for non-function maps, too, and prepare for fallback code.
11118
11119 2007-02-12  Robert Jordan  <robertj@gmx.net>
11120
11121         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
11122         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
11123         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
11124         GlobalFree. Fixes a part of bug #77075.
11125
11126 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
11127
11128         * loader.c: implemented typedef parent in field memberref.
11129
11130 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
11131
11132         * marshal.c: Fix warnings and remember to call Release on
11133         IUnknown of RCW.
11134         
11135         Code is contributed under MIT/X11 license.
11136
11137 2007-02-10  Miguel de Icaza  <miguel@novell.com>
11138
11139         * class-internals.h: Add MonoHandleRef definition, and
11140         handleref_class to mono_defaults. 
11141
11142         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
11143         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
11144
11145         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
11146         (do nothing on this stage)
11147         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
11148         (emit_marshal_handleref): New method, used for argument handling
11149         of HandleRefs. 
11150
11151 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
11152
11153         * class.c (mono_class_setup_parent): Lazily init com types.
11154         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
11155         init com types.
11156         * object.c (mono_remote_class_vtable): Lazily init com types.
11157         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
11158         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
11159         * domain-internals.h: Expose mono_init_com_types.
11160         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
11161         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
11162         Add support for COM Callable Wrapper marshalling.
11163         * marshal.h: Add icall definitions.
11164         * gc.c: Handle freeing of CCWs in finalizer code.
11165         
11166         Code is contributed under MIT/X11 license.
11167
11168 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
11169
11170         * reflection.c: changed all the signature encoding code to use
11171         a variable-sized buffer.
11172
11173 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11174
11175         * marshal.c: locking fixes: never take the loader lock
11176         or other runtime locks when holding the marshal lock
11177         (fixes bug#80664).
11178
11179 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
11180
11181         * marshal.c: make the delegate function pointer mapping
11182         work for the moving GC.
11183
11184 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
11185
11186         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
11187         for bug #80618.
11188
11189 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11190
11191         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
11192         gmodule.
11193
11194 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11195
11196         * threadpool.c: made the code moving-GC safe.
11197
11198 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
11199
11200         * assembly.c, boehm-gc.c, class-internals.h, class.c,
11201         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
11202         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
11203         warning cleanup.
11204         * reflection.c: warning cleanup, some threading and moving GC fixes.
11205
11206 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
11207
11208         * class.c, loader.c: create the needed Set/Get/Address array methods
11209         as well as the .ctors in mono_class_init (), fixes bug #80567.
11210
11211 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11212
11213         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
11214         we doesn't decrease its alignment. Should fix the sparc build.
11215
11216 2007-01-24  Dick Porter  <dick@ximian.com>
11217
11218         * socket-io.c
11219         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
11220         Create the returned object if we need to ignore an unsupported
11221         socket option.  Fixes a segfault reported by Atsushi.
11222
11223 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11224
11225         * class.c, object.c: restrict GC-tracked fields to
11226         UIntPtr fields used inside corlib, so we provide better
11227         type info to the GC and also allow broken packing as in
11228         bug #80580.
11229
11230 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
11231
11232         * sgen-gc.c: removed duplicated function.
11233
11234 2007-01-19  Miguel de Icaza  <miguel@novell.com>
11235
11236         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
11237         value that means that the value is not supported, but that we
11238         should not return a failure, but instead report this as a
11239         successful operation.
11240
11241 2007-01-19  Raja R Harinath  <rharinath@novell.com>
11242
11243         Fix tests/bug79956.2.il
11244         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
11245         (mono_generic_class_get_class): If the generic definition in an
11246         enum, copy over other fields related to it.
11247
11248 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11249
11250         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11251         genericinst enums (bug #79215).
11252
11253 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11254         * class.c: Fix bug 80307.
11255
11256 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11257
11258         * image.c: if the file table is not present, try to load
11259         all the modules, since we don't have info about them
11260         having or not metadata (bug #80517).
11261         * assembly.c: allow mono_assembly_load_references () to
11262         work for netmodules.
11263
11264 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11265
11266         * image.c, metadata-internals.h, object.c: execute module
11267         cctors when running on the 2 runtime if present (bug #80487).
11268
11269 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11270
11271         * icall.c: optimized InitializeArray() on bigendian.
11272
11273 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11274
11275         * icall.c: fix for the broken ARM FPA double format.
11276
11277 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11278
11279         * icall.c: handle endian issues for r4 and r8 types, too, in
11280         the InitializeArray() icall.
11281
11282 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11283
11284         * loader.c (mono_loader_error_prepare_exception): Clear the error
11285         once we have extracted the information from it, do this before we
11286         call into the JIT's class loading mechanisms.
11287
11288         * object.c (mono_class_create_runtime_vtable): Do not clear the
11289         loader error before calling mono_class_get_exception_for_failure
11290         as the loader error is needed inside
11291         mono_class_get_exception_for_failure to throw the error (thinko).
11292
11293         Fixes #80521
11294         
11295 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11296
11297         * reflection.c: align fields rva data so it's faster to load at
11298         runtime.
11299
11300 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11301
11302         Prepare to simplify GenericMethod handling.
11303         * class-internals.h (mono_method_get_context): New accessor function.
11304         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11305         rather than directly accessing '->context' field.
11306
11307         * class-internals.h (_MonoGenericParam.method): Move ...
11308         (_MonoGenericContainer): ... here.  Add into union with klass field.
11309         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11310         Update to changes.
11311
11312 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11313
11314         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11315         the wrapper type enum and reduce relocations.
11316
11317 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11318
11319         * reflection.c (inflate_mono_method): Reuse method instantiation
11320         from the generic method, if available.
11321
11322 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11323
11324         * marshal.c (emit_marshal_variant): Fix conv_arg
11325         type in last commit, based on whether parameter is byref.
11326         
11327 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11328
11329         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11330         marshalling.
11331         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11332         MONO_TYPE_OBJECT back for VARIANT support.
11333
11334 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11335
11336         * marshal.c, marshal.h, icall-def.h: Implement 
11337         Marshal.ReAllocCoTaskMem.
11338
11339 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11340
11341         * marshal.c: memory retention fixes: use the proper
11342         image cache for runtime_invoke method lookups.
11343
11344 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11345
11346         * mempool.c: added code to help debug mempool allocations.
11347
11348 2007-01-11  Dick Porter  <dick@ximian.com>
11349
11350         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11351         support (experimenting with faking it with IP_MTU_DISCOVER for
11352         systems that don't have IP_DONTFRAGMENT.)
11353         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11354         icall.
11355
11356         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11357
11358         * socket-io.h: Add new fields to MonoSocketAsyncResult
11359         corresponding to the new ones in Socket.cs.
11360
11361 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11362
11363         Fix IronPython regression mentioned in #80249
11364         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11365         'cached_context' field, since it may have been initialized as a
11366         side-effect of metadata parsing.
11367
11368         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11369         (_MonoGenericClass.cached_class): Move here and rename from lone
11370         remaining field of ...
11371         (_MonoInflatedGenericClass): ... this.  Remove.
11372         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11373         to changes.
11374
11375         Fix mcs/tests/test-128.cs regression.
11376         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11377         2007-01-10 change below.
11378         [MONO_TYPE_OBJECT]: Recurse into array case.
11379
11380 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11381
11382         * class-internals.h (mono_get_inflated_generic_class): Remove.
11383         * class.c (mono_get_inflated_generic_class): Remove.
11384         (mono_generic_class_get_class): Rename from
11385         mono_class_create_generic.
11386         (mono_class_from_mono_type) [GENERICINST]: Use it.
11387         * reflection.c, metadata.c: Update to changes.  Use
11388         'mono_class_from_mono_type'.
11389
11390 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11391
11392         * reflection.c: use passed type when encoding an array element
11393         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11394
11395 2007-01-09  Robert Jordan  <robertj@gmx.net>
11396
11397         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11398         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11399         Fixes bug #80392.
11400
11401 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11402
11403         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11404
11405         * object.c (set_value): Avoid aliasing between type->data.klass
11406         and type->data.generic_class.
11407
11408         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11409
11410 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11411
11412         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11413         between type->data.klass and type->data.generic_class.
11414
11415 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11416
11417         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11418         value in out parameters.
11419
11420 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11421
11422         Simplify invariant for MonoGenericClass::klass field.
11423         * class.c (mono_class_create_generic): Verify 'klass' is null.
11424         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11425         initialize 'klass' field.
11426
11427 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11428
11429         Ongoing work to avoid redundant data and simplify invariants.
11430         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11431         'generic_class', and change type to a GenericInst.
11432         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11433         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11434
11435 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11436
11437         * class.c : skip io-layer under PLATFORM_WIN32.
11438
11439 2007-01-03  Tor Lillqvist  <tml@novell.com>
11440
11441         Fix #80305: In a bundled executable, look in the bundled exe
11442         assembly to determine the runtime version. Add the possibility to
11443         bundle also the machine.config file.
11444         
11445         * assembly.c (mono_assembly_open_from_bundle): Make
11446         non-static. Allow being called even if we have no bundled
11447         assemblies, and return NULL right away in that case.
11448
11449         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11450         here.
11451
11452         * domain.c (app_config_parse): Take an assembly exe file name as
11453         parameter instead of a config file name. Check for a bundled
11454         config file for that assembly by calling
11455         mono_config_string_for_assembly_file() (see below) before looking
11456         for one in the file system.
11457         (get_runtimes_from_exe): Corrsponding change to call of
11458         app_config_parse().
11459         (get_runtimes_from_exe): Check for bundled assembly exe file first
11460         by calling mono_assembly_open_from_bundle(). If no bundled
11461         assembly exe file is found, call mono_image_open() as before to
11462         look it up in the file system.
11463
11464         * mono-config.c: Add variable bundled_machinec_onfig.
11465         (mono_config_string_for_assembly_file): New function.
11466         (mono_config_for_assembly): Move code snippet that looks for a
11467         bundled assembly .config file into the above new function. Call
11468         it.
11469         (mono_register_machine_config, mono_get_machine_config): New
11470         functions to set and retrieve
11471
11472         * assembly.h: Declare mono_register_machine_config().
11473
11474         * mono-config.h: Declare mono_get_machine_config() and
11475         mono_config_string_for_assembly_file().
11476
11477         * icall.c: No declaration of environ necessary on Win32. It is
11478         declared (as a macro expanding to a function call) in stdlib.h.
11479         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11480         New internal mono function. Returns the value of
11481         mono_get_machine_config() as a Mono string.
11482
11483         * icall-def.h: Add get_bundled_machine_config().
11484
11485 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11486
11487         Remove redundant field
11488         * class-internals.h (_MonoGenericContext.container): Remove field.
11489         * loader.c (mono_method_get_signature_full): Don't parse a
11490         "container" for a signature parse when the signature is inflated
11491         immediately.
11492         (method_from_methodspec): Likewise, for a generic_inst.
11493         * class.c, metadata.c, reflection.c: Update to changes.
11494
11495 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11496
11497         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11498         'cached_context', and change semantics -- it starts off NULL, and
11499         is initialized on demand.
11500         * class.c (mono_generic_class_get_context): New accessor to
11501         replace 'context' field accesses.
11502         (mono_class_get_context): New helper.
11503         (*): Update to changes.
11504         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11505
11506 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11507
11508         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11509         before the memcpy.   Fixes Marshal2 regression.
11510
11511 2007-01-02  Jb Evain  <jbevain@gmail.com>
11512
11513         * blob.h: add a MONO_TYPE_ENUM definition
11514         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11515         fix the encoding of arrays of enums in custom attributes.
11516
11517         Fixes #79666.
11518
11519 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11520
11521         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11522         string is null terminated, but only cut the string short if it
11523         overflows the buffer.   
11524         
11525         (mono_string_to_byvalstr): Also fix this routine.   The code here
11526         was not properly terminating a string (it was only terminated
11527         because of the previous catch-all memset). 
11528
11529         I left the memset, because I do not know if applications expect
11530         the runtime to clear this region. 
11531
11532         Fixes #79944.
11533
11534         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11535         Clear the error before returning to unmanaged code to prevent the
11536         runtime from being confused later on (fixes  80420).
11537         (ves_icall_type_from_name): Always call mono_loader_clear_error
11538         after parsing a type that could have failed.
11539         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11540
11541         * loader.c (mono_loader_clear_error): Fix indentation.
11542
11543 2006-12-28  Martin Baulig  <martin@ximian.com>
11544
11545         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11546
11547 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11548
11549         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11550         getting a token for an EnumBuilder.
11551
11552 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11553
11554         * reflection.c: be more careful in case resource generation
11555         fails to create the data array.
11556
11557 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11558
11559         * sgen-gc.c: write barrier for clone and fix unregister handles.
11560
11561 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11562
11563         * reflection.c: some fixes needed in the generics code for the moving GC.
11564
11565 2006-12-22  Robert Jordan  <robertj@gmx.net>
11566
11567         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
11568         account. Fixes bug #80299.
11569
11570 2006-12-21  Raja R Harinath  <rharinath@novell.com>
11571
11572         Fix WaitHandle usage in delegates.
11573         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
11574         * object.c (mono_wait_handle_new): Use the property set method to
11575         initialize the handle.
11576         (mono_wait_handle_get_handle): New.
11577         * threadpool.c (mono_async_invoke): Use it.
11578         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
11579         Likewise.
11580         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
11581
11582 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
11583
11584         * marshal.c (emit_marshal): Call emit_marshal_variant and
11585         emit_marshal_com_interface when applicable.
11586         (emit_marshal_variant, emit_marshal_com_interface): Add
11587         methods for this case and remove if's from emit_marshal_object.
11588         
11589 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
11590
11591         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
11592
11593 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
11594
11595         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
11596         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
11597         and GlobalFree on Windows. Remove FIXME.
11598
11599 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11600
11601         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
11602         implementation for managed objects.
11603
11604 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11605
11606         * object.c: implemented code to be used for checking
11607         that no reference field overlaps with non-references.
11608
11609 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11610
11611         * threadpool.c: fix queue code to be compatible with the
11612         moving GC.
11613
11614 2006-12-18  Miguel de Icaza  <miguel@novell.com>
11615
11616         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
11617         in structures by throwing ArgumentNullException.
11618
11619         (emit_marshal_safehandle): Also when they are null parameters.
11620
11621         (emit_marshal_safehandle): Add support for ref
11622         SafeHandles parameters
11623
11624 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11625
11626         * profiler.c: updated to use the mono-dl API instead of
11627         gmodule.
11628
11629 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11630
11631         * profiler.c: updated to use the mono-dl dynamic loading
11632         API instead of gmodule.
11633
11634 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11635
11636         * profiler.c: use readlink, older versions of glib don't have
11637         g_file_read_link ().
11638
11639 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11640
11641         * profiler.c: try to detect the path to mono if libc fails to provide
11642         a useful name (bug #80286).
11643
11644 2006-12-16  Raja R Harinath  <rharinath@novell.com>
11645
11646         Fix #80242
11647         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
11648         instance, use the generic type definition instead.
11649         (ves_icall_Type_GetNestedTypes): Likewise.
11650         * class.c (mono_class_create_generic): Always set the
11651         nested_classes of a generic instance to NULL, even if the generic
11652         type definition has nested types.
11653
11654 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
11655
11656         * marshal.c (mono_string_from_bstr): Revert previous Windows change
11657         and fix on Linux.
11658         
11659 2006-12-15  Miguel de Icaza  <miguel@novell.com>
11660
11661         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
11662         my arguments were in the wrong order.   I also fixed the Windows
11663         version which seems to have had the same issue.
11664
11665         (mono_free_bstr): On Unix, this is g_free.
11666         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
11667         conversions (for the tests in corlib to pass).
11668
11669 2006-12-14  Miguel de Icaza  <miguel@novell.com>
11670
11671         * marshal.c (emit_ptr_to_object_conv): For now, ignore
11672         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
11673         exception if a ref SafeHandle in a struct has changed).
11674         
11675         (emit_struct_conv): Do not perform layout checks for classes
11676         derived from SafeHandle, as those are specially handled. 
11677
11678         (emit_object_to_ptr_conv): Add support for
11679         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
11680
11681         (emit_marshal_safehandle): Implement conversion of return values
11682         of safehandles (MARSHAL_ACTION_CONV_RESULT).
11683         
11684         * threads.c: WaitHandle now is compiled with two different handles
11685         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
11686         for 2.0.
11687         
11688         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
11689         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
11690         these routines to cope with both kinds of fields.
11691
11692 2006-12-12  Miguel de Icaza  <miguel@novell.com>
11693
11694         * metadata.c (mono_type_to_unmanaged): Handle the case where
11695         type->data.klass is a SafeHandle, and in that case, return the
11696         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
11697         MONO_MARSHAL_CONV_SAFEHANDLE. 
11698
11699 2006-12-11  Miguel de Icaza  <miguel@novell.com>
11700
11701         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
11702         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
11703         calling emit_marshal_object.
11704
11705         (emit_marshal_safehandle): Implement marshalling of
11706         SafeHandle parameters (no ref support yet).
11707
11708         (MarshalAction): Document the defines as I implement
11709         them for SafeHandle.
11710
11711         (emit_marshal_object): indentation police.
11712
11713         * class-internals.h: Define MonoSafeHandle.
11714         Add safehandle_class to MonoDefaults type.
11715
11716         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
11717         list of classes to check for fields. 
11718
11719         * domain.c (mono_init_internal): Add SafeHandle to the list of
11720         mono_defaults loaded.
11721
11722 2006-12-15  Raja R Harinath  <rharinath@novell.com>
11723
11724         Fix #80253
11725         * reflection.c (mono_reflection_bind_generic_parameters): If the
11726         generic type definition is a type builder, ensure that it is fully
11727         initialized before instantiating it.  Kill some dead code.
11728
11729 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11730
11731         * object.c: clear the loader_error () before loading
11732         more metadata stuff (bug #80258).
11733
11734 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
11735
11736         * icall.c, icall-defs.h: type modifiers icalls for
11737         parameters and properties.
11738
11739 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11740
11741         * object.c, icall.c: fixed warnings.
11742
11743 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11744
11745         * marshal.c: fixed a couple of leaks and coding style in a few places.
11746
11747 2006-12-08  Dick Porter  <dick@ximian.com>
11748
11749         * process.c: Cope with NULL ProcessStartInfo arguments on windows
11750         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
11751         80173.
11752
11753 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11754
11755         * process.c: ProcessStartInfo may have only filename set and
11756         arguments can be NULL.
11757
11758 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11759
11760         * icall.c: fix leak found by Robert Jordan.
11761
11762 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11763
11764         * marshal.c, marshal.h: generate managed method to access an element
11765         of a multi-dimensional array.
11766
11767 2006-11-30  Paolo Molaro (lupus@ximian.com)
11768
11769         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
11770
11771 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11772
11773         * icall.c: back out GetFields () fix until the serialization code is
11774         fixed to not depend on the incorrect behaviour.
11775
11776 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11777
11778         * profiler.c: provide defaults if none are set.
11779
11780 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11781
11782         * Makefile.am, attrdefs.h: new public header file with
11783         constants for attributes for use by embedders.
11784
11785 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11786
11787         * icall.c: GetFields () fix for bug #80064.
11788
11789 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
11790
11791         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
11792         removed long unused icalls.
11793
11794 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
11795   
11796         * marshal.c: 
11797                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
11798                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
11799                 can be generated without a delegate class.
11800                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
11801         
11802         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11803
11804 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11805
11806         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
11807         #80069.
11808
11809 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11810
11811         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
11812         icall-def.h: added icalls needed by System.GC.
11813
11814 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
11815
11816         * loader.c: ensure the class in catch clauses is handled
11817         correctly for generics methods (fixes bug#79980).
11818
11819 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11820
11821         * monitor.h, monitor.c: added mono_locks_dump () function
11822         to help debug deadlocks involving managed locks.
11823
11824 2006-11-13  Dick Porter  <dick@ximian.com>
11825
11826         * file-io.c (get_file_attributes): If the file is a symlink try
11827         and get the stat data for the target, but also add the
11828         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
11829         the specs for the windows symlink support, but will probably have
11830         to be reworked when I have test data from a vista machine.  Fixes
11831         bug 79887.
11832
11833 2006-11-13  Dick Porter  <dick@ximian.com>
11834
11835         * gc.c (mono_domain_finalize): 
11836         * marshal.c (mono_delegate_begin_invoke): 
11837         * threadpool.c (socket_io_init, mono_thread_pool_init)
11838         (mono_thread_pool_finish): 
11839         * monitor.c (mono_monitor_try_enter_internal): 
11840         * threads.c (mono_thread_resume, mono_thread_init)
11841         (mono_thread_suspend_all_other_threads)
11842         (mono_thread_execute_interruption): 
11843         * appdomain.c (mono_domain_unload): Check for NULL error returns
11844         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
11845         75733.
11846
11847 2006-11-11  Miguel de Icaza  <miguel@novell.com>
11848
11849         * process.c
11850         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
11851         Only close the handle if the value of the handle is not
11852         INVALID_HANDLE_VALUE.  This just makes the process a bit more
11853         robust.
11854
11855         Improvement for #75733, so that we do not run into this problem. 
11856
11857         
11858         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
11859         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
11860         internal variables.  Fixes #79462 
11861         
11862
11863 2006-11-09  Dick Porter  <dick@ximian.com>
11864
11865         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11866         Use poll() not select().  Fixes bug 79397.
11867
11868 2006-11-09  Raja R Harinath  <rharinath@novell.com>
11869
11870         Fix #79872
11871         * assembly.c (mono_assembly_load_from_full): Check that the given
11872         image has an assembly manifest.
11873
11874 2006-11-09  Ankit Jain  <jankit@novell.com>
11875
11876         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
11877         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
11878         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
11879
11880 2006-11-07  Dick Porter  <dick@ximian.com>
11881
11882         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11883         Put the old resolver behaviour back for pre-2.0 profiles.
11884
11885 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
11886
11887         * threadpool.c: precise GC and locking fixes.
11888
11889 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
11890
11891         * class.c: don't load types that have an explicit unaligned
11892         managed reference. Provide better info in the TypeLoad exception.
11893         Part of the fix for bug #79744.
11894         * object.c: use the correct check for class type load issues.
11895
11896 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11897
11898         * class.c: enforce alignment of fields with managed references
11899         even when Pack=1 is forced by the user (bug #77788).
11900
11901 2006-11-03  Dick Porter  <dick@ximian.com>
11902
11903         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
11904         If the address reverse lookup fails, return it as the hostname
11905         anyway.  Fixes bug 79721.
11906
11907 2006-11-03  Dick Porter  <dick@ximian.com>
11908
11909         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
11910         Fix build on Windows.
11911
11912 2006-11-02  Dick Porter  <dick@ximian.com>
11913
11914         * icall-def.h: 
11915         * object-internals.h: 
11916         * exception.c (mono_get_exception_thread_interrupted): 
11917         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
11918         Fixes bug 74525.
11919
11920         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
11921         Check for pending Thread.Interrupt.
11922
11923 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
11924         * loader.c: Fixed bug 79684.
11925
11926 2006-10-27  Dick Porter  <dick@ximian.com>
11927
11928         * file-io.c (get_file_attributes): Force symlinks to directories
11929         to be returned as a regular file.  Fixes bug 79733.
11930 2006-10-26  Dick Porter  <dick@ximian.com>
11931
11932         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
11933         CreateFile to open a directory then we need to set the
11934         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
11935
11936 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
11937
11938         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
11939         friends.
11940
11941 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
11942
11943         * sgengc.c: small cleanup of timer code.
11944
11945 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11946
11947         * sgen-gc.c: fix some warnings and start adding support for
11948         complete object removal on domain unload.
11949
11950 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
11951
11952         * assembly.c: build_assembly_name should not consider a version
11953         number without build or revision number invalid. Fixes bug #79715.
11954
11955 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
11956
11957         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
11958         call kernel32 function OutputDebugString directly.
11959         
11960         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11961         
11962 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
11963
11964         * reflection.c: small cleanup, using a function to insert a MonoString
11965         in the string heap.
11966
11967 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
11968
11969         * reflection.c: moving GC fixes.
11970
11971 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
11972
11973         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
11974         all the objects with finalizers belonging to an unloading appdomain.
11975
11976 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
11977
11978         * sgen-gc.c: added ability to allocate even when the nursery is fully
11979         pinned and fixed a couple of bugs.
11980
11981 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
11982
11983         * threads.h: Revert the last change for now.
11984
11985         * threads.h (mono_thread_get_pending_exception): Rename this to
11986         mono_thread_get_undeniable_exception ().
11987
11988 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
11989
11990         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
11991         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
11992         when fname does not refer to valid assembly. This result in a more
11993         meaningful error message.
11994         * exception.c: added mono_get_exception_bad_image_format2 which 
11995         constructs a BadImageFormatException using the ctor taking a custom
11996         message and the file name. Passing in a NULL msg results in a default
11997         message.
11998         * exception.h: define mono_get_exception_bad_image_format2 function.
11999         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
12000         when file name pointed to an invalid IL image. Use 
12001         mono_get_exception_file_not_found2 to construct FileNotFoundException,
12002         as this results in a more meaningful error message.
12003
12004 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
12007         #79465.
12008
12009 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12010
12011         * metadata.c (mono_type_size): Change the align parameter to guint32 for
12012         consistency with the other _size functions.
12013         (mono_type_stack_size): Ditto.
12014
12015         * class.c object.c icall.c: Fix warnings caused by the above change.
12016
12017         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
12018
12019         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
12020
12021         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
12022
12023 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
12024
12025         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
12026         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
12027         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
12028         threadpool.h, threads-types.h: mark more internal functions.
12029
12030 2006-10-11  Dick Porter  <dick@ximian.com>
12031
12032         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12033         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
12034         reproduce the bug even before applying the fix.)
12035
12036 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
12037
12038         * reflection.c: allow retrieving attributes for arguments in generic
12039         methods (bug #79241).
12040
12041 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
12042
12043         * debug-mono-symfile.c: properly check fopen () result (found by
12044         coverity).
12045
12046 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
12047
12048         * reflection.c: make error message clearer and fixed two
12049         issuelets found by Coverity.
12050
12051 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
12052
12053         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
12054
12055 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12056
12057         * object-internals.h, gc-internal.h, profiler-private.h:
12058         mark internal functions.
12059
12060 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12061
12062         * reflection.c: put data in the text section.
12063         * icall.c: recognize more types in type_from_typename ().
12064         * process.c, marshal.c: added some GC FIXMEs.
12065
12066 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12067
12068         * loader.c: check for NULL before initializing.
12069
12070 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
12071
12072         * gc.c (finalizer_thread): Use a non-alertable wait here.
12073
12074         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
12075         until the correct solution is found.
12076
12077 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12078
12079         * reflection.c (mono_module_get_object): Avoid an assert when operating on
12080         modules with no metadata. Fixes #79596.
12081
12082         * image.c (load_metadata_ptrs): Put back the error message when
12083         the #- heap is encountered since the support is not complete yet.
12084
12085 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12086
12087         * gc.c: do not allow the user to SuppressFinalize () a
12088         delegate because it would leak the trampoline if present.
12089
12090 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12091
12092         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
12093         PropertyPtr table.
12094
12095 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12096
12097         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
12098
12099         * metadata.c (mono_metadata_get_param_attrs): Ditto.
12100
12101         * row-indexes.h: Add definitions for *Ptr tables.
12102
12103         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
12104
12105         * metadata.c (mono_metadata_translate_token_index): New helper function to
12106         translate table indexes used in uncompressed metadata.
12107         (mono_metadata_decode_table_row): Ditto.
12108         (mono_metadata_decode_table_row_col): Ditto.
12109
12110         * metadata.c: Add table schema for *Ptr tables.
12111
12112         * class.c loader.c: Use the new helper function to access the affected metadata
12113         tables.
12114         
12115         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
12116         #38532.
12117         
12118 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
12119
12120         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
12121         sequences which can be unbounded in size. Fixes #79583.
12122
12123 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12124
12125         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
12126         static initialization.
12127
12128         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
12129
12130         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
12131
12132         * domain.c (mono_domain_free): Free up type_init_exception_hash.
12133
12134         * object.c (mono_runtime_class_init): Implement correct semantics when a static
12135         ctor fails, i.e. throw the same exception on subsequent accesses.
12136         
12137 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
12138
12139         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
12140         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
12141         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
12142         Handle marshalling of interfaces and VARIANTs contained in structs.
12143         
12144         Code is contributed under MIT/X11 license.
12145         
12146 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
12149         
12150         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
12151         mempool.
12152
12153 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12154
12155         * console-io.c: ignore previous SIGINT handler.
12156
12157 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12158
12159         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
12160         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
12161         #79460, #79461, #79485.
12162
12163         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
12164
12165         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
12166         #79217.
12167
12168 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12169
12170         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
12171         could be generated from it.
12172
12173 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
12174
12175         * rand.c: fix read loop to correctly handle EINTR.
12176
12177 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12178
12179         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
12180         internal calls are defined to keep methods closer to the declaring
12181         type and allow a significant reduction in runtime relocations and
12182         memory usage.
12183
12184 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
12185
12186         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
12187         exception message to have FileNotFoundException use the default
12188         assembly load error message. Fixes bug #79426.
12189         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
12190
12191 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12192
12193         * threadpool.c: (start_thread_or_queue) use the root domain when
12194         creating the thread instead of the async object one.
12195
12196 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
12197
12198         * class.c, object.c, class-internals.h, reflection.c:
12199         for arrays, store element_size inside MonoClass (speedup
12200         for array object creation).
12201
12202 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
12203
12204         * icall.c: fixed CodeBase to use the file name and not the module
12205         name (bug #79365).
12206
12207 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12208
12209         * mono-debug.c, mono-debug.h: export find_method as
12210         mono_debug_find_method ().
12211
12212 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12213
12214         * debug-helpers.c, class-internals.h: added a few functions useful
12215         when debugging under gdb.
12216
12217 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12218
12219         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
12220         characters that need special handling.
12221
12222 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12223
12224         * mono-config.c: make the os/cpu specification more flexible,
12225         allowing lists and negation.
12226
12227 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
12228
12229         * marshal.c: COM Interop fixes. Handle case where method->klass.
12230         is interface. Handle BSTR/MonoString when null. Use CDECL as 
12231         calling convention on non-windows platforms. This is for
12232         compatibility with XPCOM and MainWin COM.
12233         
12234         Code is contributed under MIT/X11 license.
12235         
12236
12237 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
12238
12239         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
12240         correctly. Fixes #79217.
12241
12242         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
12243
12244 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
12245
12246         * mono-config.c: allow both an os and cpu attribute for dllmap
12247         and dllentry elemnets to enable a single config file to be used
12248         for multiple architectures.
12249
12250 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12251
12252         * loader.c: MonoLoaderError was cleared too soon on load failure.
12253         Fixes bug #79424.
12254
12255 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12256
12257         * icall.c: use the defining class vtable when accessing a
12258         static field, not a pobblibly derived class.
12259
12260 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * icall.c string-icalls.c: Remove references to unicode.h.
12263
12264         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12265
12266         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12267
12268         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12269         indicating the image where custom marshaller types should be looked up.
12270         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12271         custom marshallers, instead of corlib. Fixes #79425.
12272
12273 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12274
12275         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12276
12277 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12278
12279         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12280         Implement Environment.ProcessorCount.
12281         
12282         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12283         Implement Environment.ProcessorCount.
12284         
12285         * icall.c: 
12286         Add Environment.ProcessorCount icall.
12287         
12288         Patch by Jason McFall.
12289
12290 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12291
12292         * assembly.c: don't append .exe/.dll when the filename already contains
12293         one of those extensions.
12294
12295 2006-09-12  Martin Baulig  <martin@ximian.com>
12296
12297         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12298         to array interfaces.
12299
12300 2006-09-11  Martin Baulig  <martin@ximian.com>
12301
12302         * reflection.c (mono_image_build_metadata): Create the
12303         MethodImpl's after emitting all types and methods, so we don't
12304         need another fixup pass for them.
12305
12306 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12307
12308         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12309         change.
12310
12311 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12312
12313         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12314         unload.
12315
12316 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12317
12318         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12319         args is not set. Fixes #78926.
12320
12321 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12322
12323         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12324
12325         * image.c (load_class_names): Move this to class.c, and rename it to 
12326         'mono_image_init_name_cache'.
12327         (load_modules): Fix a warning.
12328
12329         * class.c icall.c image.c: Initialize image->name_cache lazily.
12330
12331         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12332         on its name using information in the AOT file.
12333
12334         * class.c (mono_class_from_name): Use the new hook function.
12335
12336 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12337
12338         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12339         correctly.
12340
12341         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12342         Fixes #79289.
12343         
12344 2006-09-06  Martin Baulig  <martin@ximian.com>
12345
12346         * icall.c (mono_lookup_internal_call): Small fix.
12347
12348 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12349
12350         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12351         double g_free.
12352
12353 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12354
12355         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12356         when --debug is specified.
12357
12358 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12359
12360         * class.c (setup_generic_array_ifaces): Fix a warning.
12361
12362 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12363
12364         * Temporarily remove the patch to assemly.c that checks the
12365         assembly versions as it breaks our gacutil.
12366
12367 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12368
12369         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12370
12371         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12372         a net 1.0 runtime.
12373
12374         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12375         created using the default ctor. Fixes #79152.
12376         (mono_string_builder_to_utf16): Ditto.
12377
12378 2006-09-01  Martin Baulig  <martin@ximian.com>
12379
12380         Fix handling of the generic array interfaces.
12381
12382         * class-internals.h
12383         (MonoDefaults): Removed `generic_array_class' and added
12384         `generic_ilist' class.
12385
12386         * class.c
12387         (mono_bounded_array_class_get): Add the new generic array interfaces.
12388         (setup_generic_array_ifaces): New static method; create vtable
12389         entries for each method in the generic array interfaces.
12390
12391         * metadata.c
12392         (select_container): Allow "parent-less" generic methods.
12393
12394         * marshal.c
12395         (mono_marshal_get_generic_array_helper): New public method.
12396
12397         * icall.c
12398         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12399         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12400         moved the interncall into System.Array.
12401
12402 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12403
12404         A few more cases of avoiding work on types with ->byref set.
12405         Has the real fix for #79238
12406         * icall.c (is_generic_parameter): New helper.
12407         (ves_icall_Type_GetGenericParameterPosition): Use it.
12408         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12409         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12410         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12411         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12412         reference types.
12413         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12414         reference types.
12415         (ves_icall_Type_get_IsGenericInstance): Likewise.
12416         (ves_icall_Type_get_IsGenericType): Likewise.
12417
12418 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12419
12420         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12421         class if possible.
12422
12423         * mempool.h (mono_mempool_get_allocated): New helper function.
12424
12425         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12426         change.
12427
12428         * mempool.c: Fix warnings and the calculation of stats.
12429
12430         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12431
12432         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12433
12434         * loader.c (mono_get_method_from_token): Update method_count stat.
12435
12436         * class-internals.h (MonoStats): Add some stats.
12437
12438 2006-08-31 Robert Jordan  <robertj@gmx.net>
12439
12440         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12441         with managed variants.
12442         All code is contributed under the MIT/X11 license.
12443         
12444 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12445
12446         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12447         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12448
12449         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12450
12451         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12452         with cycles in classes.
12453
12454         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12455
12456         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12457         missing a [MarshalAs] directive. Fixes #79203.
12458
12459         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12460         klass->marshal_info. Fixes #79217.
12461
12462 2006-08-30  Martin Baulig  <martin@ximian.com>
12463
12464         Committing a patch from Joachim Ante <joe@otee.dk>:
12465         Add support for binary data symbol stores.
12466
12467         * debug-mono-symfile.c
12468         (mono_debug_open_mono_symbol_file): Renamed into
12469         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12470         arguments.
12471
12472         * mono-debug.c
12473         (mono_debug_open_image): Added `raw_contents' and `size' args.
12474         (mono_debug_init_2_memory): New public function.
12475
12476 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12477
12478         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12479
12480 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12481
12482         * appdomain.c: implement support for ShadowCopyFiles.
12483
12484 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12485
12486         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12487         when value is NULL (and should remove CID #51).
12488
12489 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12490
12491         * image.c: moved 2 functions to ../utils.
12492
12493 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12494
12495         * gc.c: cope with the target object of a GC handle being NULL
12496         (bug #78877).
12497
12498 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12499
12500         * class.c: recursively check parent's explicit implementations
12501         of interface methods (fixes bug #79125).
12502
12503 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12504
12505         * filewatcher.c: Avoid warnings when building, do not redefine
12506         constants that are defined.
12507
12508         Remove warnings.
12509
12510 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12511
12512         * image.c: don't fail when the link points to an absolute path.
12513
12514 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12515
12516         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12517         Fix CID #3.
12518
12519 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12520
12521         * image.c (full_path): A new method used to obtain the actual path
12522         of an assembly even in the presence of symbolic links.  
12523
12524         This is necessary for the case where we are running a binary that
12525         has been GACed, but we are using the "published" path name
12526         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12527         file in the GAC.
12528
12529         This was the source of the failure for the `xsp' command with the
12530         recent AppDomain changes, as far as the runtime was concerned,
12531         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12532         $prefix/mono/gac/blah/version/blah.exe.
12533
12534         (do_mono_image_open): use full path
12535
12536 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12537
12538         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12539
12540 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12541
12542         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12543         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12544
12545 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12546
12547         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12548         small structures. Fixes #78990.
12549
12550 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12551
12552         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12553
12554         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12555
12556 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12557
12558         * appdomain.c:
12559         * marshal.c: don't load all the assemblies from a domain into newly
12560         created ones. The new domains might have different rules and load
12561         assemblies from different locations. Fixes bug #76757.
12562
12563         Patch by Lluis. Conflicts resolved by Brian Crowell.
12564
12565 2006-08-16  Alp Toker  <alp@atoker.com>
12566
12567         * socket-io.c: First half of the fix for #79084.
12568         Set sa_size to the length of the content, not that of the struct.
12569         Don't add NULL suffix to the content, this should be done in
12570         managed code if needed.
12571
12572 2006-08-14  Raja R Harinath  <rharinath@novell.com>
12573
12574         Fix part of #79012
12575         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
12576         mono_metadata_parse_type returns NULL.
12577
12578 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
12579
12580         * normalization-tables.h : new file for string normalization data.
12581         * locales.c, locales.h, icall.c :
12582           added load_normalization_resource() for string normalization,
12583           and icall as well.
12584         * Makefile.am : added normalization-tables.h to the sources.
12585
12586 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
12587
12588         * marshal.c: Add more helper functions to reduce code duplication and use them
12589         everywhere.
12590
12591 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
12592
12593         * marshal.c: Fix non-x86 stdcall warnings.
12594         
12595         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
12596         them everywhere.
12597
12598 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
12599
12600         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
12601         type check on multi-dimensional arrays. Fixes #79000.
12602
12603 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12604
12605         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
12606         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
12607         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
12608         * class-internals.h: add is_com_object to class structure.
12609         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
12610         null checks to COM object marshalling. Fix .ctor call on RCW.
12611         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
12612         
12613         All code is contributed under the MIT/X11 license.
12614
12615 2006-08-09  Dick Porter  <dick@ximian.com>
12616
12617         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
12618         racing mono_monitor_allocator_lock() somewhere, so don't delete
12619         the critical section for now.  Found by running and exiting
12620         monodevelop.
12621
12622 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
12623
12624         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
12625         (ves_icall_System_ComObject_FindInterface): Ditto.
12626         (ves_icall_System_ComObject_CacheInterface): Ditto.
12627
12628         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
12629         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
12630
12631 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12632
12633         * threadpool.c: treat pipes from process asynchronous reads as sockets
12634         when reading from them, so we get select/poll or epoll to wait for
12635         data.
12636
12637 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
12638
12639         * loader.c: Fix a typo (CID #233) in the null check.
12640
12641 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
12644         Hopefully fixes #78949.
12645         
12646         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
12647         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
12648         bytes. Fixes #78972.
12649
12650 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12651
12652         * filewatcher.c: we need to set errno here.
12653
12654 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12655
12656         * filewatcher.c: let Win32Exception get the error value.
12657
12658 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12659
12660         * filewatcher.c: translate errno into win32 errors for Win32Exception
12661         to know what happened.
12662
12663 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12664
12665         * threadpool.c: Fix more warnings.
12666
12667         * assembly.c (search_loaded): Fix warnings.
12668
12669         * threadpool.c (mono_thread_pool_finish): Fix warnings.
12670         (mono_async_invoke): Ditto.
12671
12672 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
12673
12674         * object.c (mono_remote_class_vtable): Need to create proxy vtable
12675         entries for __ComObject type in addition to ComImport types.
12676         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
12677         about hash table.
12678         
12679         All code is contributed under the MIT/X11 license.
12680
12681 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12682
12683         * image.c: avoid tentative loading of modulerefs that contain
12684         no metadata (P/Invoke library names).
12685
12686 2006-07-28  Dick Porter  <dick@ximian.com>
12687
12688         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
12689         mono_loader_lock() somewhere, so don't delete the critical section
12690         for now.  Found by running and exiting monodevelop.
12691
12692 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12693
12694         * filewatcher.c: define the inotify syscalls when we're building on
12695         linux and have sys/syscall.h. The build system might not have support
12696         for inotify but the target system might have it.
12697
12698 2006-07-26  Miguel de Icaza  <miguel@novell.com>
12699
12700         * domain.c: Documentation updates.
12701
12702         * loader.c (mono_free_method): Do not release the method
12703         information if we are being profiled, as profilers will use this
12704         information at shut down to present some data to the user.
12705
12706         This is needed so that the profiler does not crash, as the
12707         profiler tends to keep MonoMethods around, and they might become
12708         invalid if we free these.
12709
12710         (mono_get_method_constrained): Return the original CIL stream
12711         method as well, so verification can be performed against it.
12712
12713 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12714
12715         * filewatcher.[ch]: support for inotify file system watcher.
12716         * icall.c: add new internal calls for the inotify file system watcher.
12717
12718 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12719
12720         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
12721         #78888.
12722
12723 2006-07-20  Dick Porter  <dick@ximian.com>
12724
12725         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
12726         warning.
12727
12728 2006-07-20  Dick Porter  <dick@ximian.com>
12729
12730         * threads.c (start_wrapper): Do the thread cleanup while we still
12731         hold a reference to its object.  Fixes bug 78123.
12732
12733 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
12734
12735         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
12736         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
12737           "managed-to-managed".
12738         * icall.c: Redirect string constructors that take sbyte* to
12739           ves_icall_System_String_ctor_RedirectToCreateString.
12740         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
12741           to CreateString () methods with matching signature.
12742         * reflection.c: Use original security informations for
12743           MONO_WRAPPER_MANAGED_TO_MANAGED.
12744         * security-manager.c: Use original security informations for
12745           MONO_WRAPPER_MANAGED_TO_MANAGED.
12746         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
12747           that is a placeholder and only its address should be used.
12748         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
12749           that is a placeholder and only its address should be used.
12750
12751 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12752
12753         Begin implementing COM Interop.
12754         * appdomain.c: Increment corlib version.
12755         * class.c: Set ComImport classes' parent to __ComObject.
12756         * loader.c: Mark cominterop methods as such.
12757         * domain.c: Add __ComObject class to MonoDefaults structure.
12758         * image.c: Add 2 hashtables to the image for COM Interop related methods
12759         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
12760         using the mempool allocator
12761         
12762         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
12763         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
12764         declaration for mono_metadata_type_dup_mp.
12765         
12766         * debug-helpers.c: Added strings for two additional wrapper types
12767         * object.c: Create proxy objects for ComImport classes
12768         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
12769         and added __ComObject class to MonoDefaults structure.
12770         
12771         * object-internals.h: Finish MonoRealProxy definition, and add definition of
12772         MonoComInteropProxy and MonoComObject.
12773         
12774         * marshal.c: Added support for COM Interop
12775         (signature_cominterop): Converts managed signature to corresponding
12776         unmanaged COM signature.
12777         (cominterop_get_function_pointer): gets unmanaged function pointer via
12778         COM object vtable
12779         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
12780         (cominterop_get_method_interface): returns interface type that method is defined on
12781         (mono_mb_emit_cominterop_call): emits native call to function pointer
12782         gotten from vtable
12783         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
12784         that matches signature of unmanaged function.
12785         (cominterop_get_native_wrapper): wrapper around adjusted method call.
12786         (cominterop_get_invoke): forwards call from proxy to __ComObject
12787         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
12788         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
12789         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
12790         
12791         * marshal.h: Added Marshal icall declarations.
12792         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
12793         so we can access them in finalizer
12794         
12795 2006-07-14  Dick Porter  <dick@ximian.com>
12796
12797         * object.c (mono_type_initialization_cleanup): Fix a race
12798         condition by temporarily commenting out the critical section
12799         deletion.
12800
12801 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * reflection.c (create_custom_attr): Fix some warnings.
12804         (create_custom_attr_data): Ditto.
12805         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
12806         types. Fixes #78855.
12807
12808 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
12809
12810         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
12811
12812         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
12813
12814 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12815
12816         * reflection.c (resolve_object): Add support for DynamicMethod.
12817
12818         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
12819         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
12820
12821 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
12822
12823         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
12824         don't leak GPtrArray's pdata has we have no use (nor free) for it.
12825
12826 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
12827
12828         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
12829         Fixes #77888.
12830
12831 2006-06-30  Raja R Harinath  <rharinath@novell.com>
12832
12833         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
12834         slightly: remove a shadow local variable.
12835
12836 2006-06-29  Raja R Harinath  <rharinath@novell.com>
12837
12838         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
12839         definition that introduces the virtual function slot.
12840         Also fix Coverity #105.
12841
12842 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
12843
12844         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
12845         for dynamic assemblies. Fixes #78724.
12846
12847 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
12848
12849         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
12850         Fixes #78722.
12851
12852 2006-06-21  Martin Baulig  <martin@ximian.com>
12853
12854         * reflection.c
12855         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
12856         fixes #76484.
12857
12858 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12859
12860         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
12861
12862 2006-06-20  Raja R Harinath  <rharinath@novell.com>
12863
12864         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
12865         nor TYPEREFs.
12866         * class.c (mono_class_create_from_typespec): Add 'context' argument.
12867         Inflate result if necessary.
12868         (mono_class_get_full): Remove old version.  Rename from
12869         'mono_class_get' and add 'context' argument.  Pass it to
12870         ..._create_from_typespec.
12871         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
12872         (mono_ldtoken): Revert change below.
12873
12874 2006-06-20  Martin Baulig  <martin@ximian.com>
12875
12876         * class.c (mono_ldtoken): Don't pass the generic context to
12877         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
12878
12879 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
12880
12881         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
12882         and later freeing it. Fixes #78638.
12883
12884 2006-06-15  Miguel de Icaza  <miguel@novell.com>
12885
12886         * icall.c (mono_class_get_throw): Revert over-zealous error
12887         throwing, the caller for mono_class_get_throw will cope with
12888         errors when classes are not properly initialized already.
12889
12890         The code still copes with loader exceptions though.
12891
12892         Fixes the regression in reftype1 and reftype3 from the CAS tests.
12893         
12894 2006-06-14  Miguel de Icaza  <miguel@novell.com>
12895
12896         Fixes the `make run1' version of RuntimeAbort (to be commited,
12897         source is in Bugzilla).
12898         
12899         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
12900         FALSE on class loading failure instead of returning true.
12901
12902         * class.c (mono_class_create_from_typedef): It is possible for
12903         mono_metadata_interfaces_from_typedef_full to fail if a class is
12904         not found, cope with this.
12905         
12906
12907 2006-06-14  Dick Porter  <dick@ximian.com>
12908
12909         * socket-io.c: 
12910         * process.c: Fix a bunch of signed/unsigned warnings from gcc
12911         4.1.1
12912
12913 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
12914
12915         * culture-info-table.h : oops, forgot to make it nsync with r61548.
12916
12917 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12918
12919         * icall.c: Another fix for building mono in Visual Studio.
12920
12921 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
12922
12923         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
12924         
12925 2006-06-09  Martin Baulig  <martin@ximian.com>
12926
12927         * debug-mono-symfile.c: Put this back and really fix it this
12928         time. Sorry for all the trouble.
12929
12930 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
12931
12932         * icall.c (mono_class_get_throw): Fix a warning.
12933         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
12934         ReflectionTypeLoadException if needed. Fixes #78606.
12935
12936         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
12937         (mono_class_init): Ditto.
12938
12939         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
12940         ref_only exceptions.
12941         (mono_loader_clear_error): Make this work even if there is no error.
12942
12943 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
12944
12945         * object-internals.h marshal.c marshal.h icall.c: Implement method 
12946         Marshal.GetComSlotForMethodInfo using internal call.
12947
12948 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
12949
12950         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
12951         a function for signalling it.
12952
12953         * class.c (mono_class_from_typeref): Use the new kind of loader error when
12954         a referenced assembly is not found.
12955
12956         * loader.c (mono_loader_error_prepare_exception): Add support for 
12957         LOADER_ERROR_ASSEMBLY. Fix formatting.
12958
12959 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
12960
12961         * domain.c appdomain.c class-internals.h marshal.c: Add support 
12962         for VARIANT marshalling on windows and increment corlib version
12963         since Variant struct was added.
12964
12965 2006-06-03  Miguel de Icaza  <miguel@novell.com>
12966
12967         * debug-mono-symfile.c: Revert Martin's previous patch which broke
12968         stack trace line information:
12969
12970         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
12971         (Martin) when looking up B which is between A and C, return A not C.
12972
12973         Bug is #78573.
12974
12975         Thanks to Alexander Olk for tracking this down.
12976
12977 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
12978
12979         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
12980         
12981         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
12982         avoid clobbering its value.
12983         (mono_string_to_lpstr): Fix a warning on windows.
12984
12985 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
12986
12987         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
12988
12989         * reflection.c loader.c: Removed references to 'dummy' flag.
12990
12991         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
12992
12993         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
12994         it gets GC tracking.
12995
12996         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
12997         GC tracking.
12998         
12999         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
13000
13001         * marshal.c threadpool.c: Update callers of mono_async_result_new.
13002
13003         * appdomain.c: Bump corlib version.
13004
13005 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13006
13007         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13008         CEE_STIND_REF when working with object references.
13009
13010 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13011
13012         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
13013         Fixes #78539.
13014
13015 2006-05-30  Miguel de Icaza  <miguel@novell.com>
13016
13017         * loader.c (method_from_memberref): Fix argument value for
13018         mono_loader_set_error_method_load (I was passing the MonoClass
13019         instead of the class name char *).
13020
13021 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13022
13023         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13024         CEE_STIND_REF when working with object references.
13025
13026 2006-05-30  Martin Baulig  <martin@ximian.com>
13027
13028         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
13029         mono_method_full_name() change and replace the ':' with a '.'
13030         here.
13031
13032 2006-05-30  Martin Baulig  <martin@ximian.com>
13033
13034         * debug-mono-symfile.c
13035         (mono_debug_symfile_lookup_location): Fix the algorithm:
13036         when looking up B which is between A and C, return A not C.
13037
13038 2006-05-29  Martin Baulig  <martin@ximian.com>
13039
13040         * mono-debug.h
13041         (MonoDebugMethodInfo): Make the typedef public.
13042         (MonoDebugSourceLocation): New public struct.
13043
13044         * mono-debug.c
13045         (mono_debug_source_location_from_address): Removed.
13046         (mono_debug_source_location_from_il_offset): Removed.
13047         (mono_debug_il_offset_from_address): Removed.
13048         (mono_debug_address_from_il_offset): Removed.
13049         (mono_debug_lookup_method): New public function.
13050         (mono_debug_lookup_source_location): New public function; replaces
13051         the old mono_debug_source_location_from_*() functions; see the
13052         inline documentation.
13053         (mono_debug_free_source_location): New public function.
13054         (mono_debug_print_stack_frame): New public function; see the
13055         inline documentation.
13056
13057         * debug-mono-symfile.c
13058         (mono_debug_find_source_location): Renamed into
13059         mono_debug_symfile_lookup_location(); only take a
13060         `MonoDebugMethodInfo *' and an `offset' argument; added inline
13061         documentation.
13062         (mono_debug_find_method): Renamed into
13063         mono_debug_symfile_lookup_method().
13064
13065 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13066
13067         * assembly.c (mono_assembly_open_full): Dont overwrite the status
13068         returned by mono_image_open_full ().
13069
13070         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
13071         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
13072         #78517.
13073
13074         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
13075         #78518.
13076
13077 2006-05-27  Miguel de Icaza  <miguel@novell.com>
13078
13079         * class.c (mono_class_from_typeref): handle missing images
13080         earlier, deals with bug #78418.   Refactor code; 
13081
13082         Fix a warning introduced in my previous commit (some stale code
13083         from before I revisited my patch).
13084
13085         * class.c (mono_class_create_from_typedef): On failure, remove the
13086         class from the MonoImage->class_cache as the class is not
13087         initialized;   Fixes the leak pointed out by Paolo.
13088
13089 2006-05-25  Dick Porter  <dick@ximian.com>
13090
13091         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
13092         DeleteCriticalSections until I figure out which one may still be
13093         sometimes locked when mono_thread_cleanup is called.
13094
13095 2006-05-24  Dick Porter  <dick@ximian.com>
13096
13097         * threads.c (mono_thread_cleanup): Move the threading cleanup out
13098         of mono_thread_manage and back into its own function, so it can be
13099         called after the finalizer thread has finished.
13100
13101         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
13102
13103 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
13104
13105         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
13106         Fixes #78495.
13107
13108         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
13109         with non-blittable elements.
13110         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
13111
13112 2006-05-24  Martin Baulig  <martin@ximian.com>
13113
13114         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13115         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
13116
13117         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
13118         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
13119         `mono_debugger_event_handler' to NULL.
13120
13121 2006-05-24  Martin Baulig  <martin@ximian.com>
13122
13123         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
13124
13125 2006-05-24  Martin Baulig  <martin@ximian.com>
13126
13127         * mono-debug-debugger.h
13128         (mono_debugger_create_notification_function): Added
13129         `MonoCodeManager *' argument.
13130
13131 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
13132
13133         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
13134
13135 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
13136
13137         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
13138         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
13139         implementation.
13140
13141 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
13142
13143         * icall.c: precise GC support: objects can't be stored in unmanaged
13144         memory anymore, even if they are kept alive by other references: since
13145         they can move the GC needs to be able to always find them.
13146
13147 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13148
13149         * object.c: precise GC support for static fields. Support
13150         for moving GCs: write barriers and pinned allocation for interned
13151         strings.
13152
13153 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
13154
13155         * domain.c, domain-internals.h: precise GC support for the MonoDomain
13156         structure.
13157
13158 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13159
13160         * class.c, gc.c: sgen and precise GC updates.
13161
13162 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13163
13164         * marshal.h, marshal.c: added write barrier wrapper and precise type
13165         fixes.
13166
13167 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
13168
13169         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
13170         support.
13171
13172 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13173
13174         * reflection.c: precise and sgen GC updates.
13175
13176 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13177
13178         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
13179
13180 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
13181
13182         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
13183
13184 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
13185
13186         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
13187         MONO_TYPE_OBJECT. Fixes #78462.
13188
13189 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
13192         and blittable types.
13193
13194 2006-05-17  Miguel de Icaza  <miguel@novell.com>
13195
13196         * class.c (mono_class_get_exception_for_failure): Implement parts
13197         of a TODO: if the loader error is set (instead of the class
13198         error), we return a Loader exception that can be properly thrown
13199         elsewhere.
13200
13201         This was exposed by some Winforms 2.0 code that I tried to run
13202         (Atsushi pointed me to it).
13203
13204 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
13205
13206         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
13207         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
13208         
13209         * marshal.c (emit_marshal_vtype): Add limited support for 
13210         UnmanagedType.LPStruct. Fixes #78427.
13211
13212         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
13213         Applied a patch from kangaroo to fix #77523.
13214
13215 2006-05-17  Martin Baulig  <martin@ximian.com>
13216
13217         * threads.c
13218         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
13219         (debugger_thread_created): Removed.
13220         (debugger_thread_exited): Removed.
13221
13222 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
13223
13224         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13225
13226         * object-internals.h (MonoReflectionResource): Sync with managed version.
13227
13228 2006-05-12  Wade Berrier <wberrier@novell.com>
13229
13230         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
13231
13232 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
13233
13234         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
13235         functions try to allocate from the image mempool.
13236
13237 2006-05-12  Dick Porter  <dick@ximian.com>
13238
13239         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
13240
13241 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
13242
13243         * object.c: The FieldGetter and FieldSetter methods require the full
13244         name of the class, not only the name. Fixes bug #78277.
13245
13246 2006-05-11  Miguel de Icaza  <miguel@novell.com>
13247
13248         * loader.c (method_from_memberref): Do not pass the NULL klass to
13249         mono_loader_set_error_() methods.  Pass the non-NULL value
13250         (class). 
13251
13252 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13253
13254         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13255         (mono_assembly_close): Null out assembly->image->references after freeing it.
13256
13257         * image.c (mono_image_close): Free image->references.
13258         
13259         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13260
13261 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13262
13263         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13264         before checking if it's NULL (g_assert).
13265
13266 2006-05-10  Martin Baulig  <martin@ximian.com>
13267
13268         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13269         I thought I already killed that two months ago, but now it somehow reappeared.
13270
13271 2006-05-10  Martin Baulig  <martin@ximian.com>
13272
13273         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13274
13275 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13276
13277         * reflection.c: Allocate memory for dynamically created methods in the image
13278         mempools.
13279
13280 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13281
13282         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13283         don't use the ad pointer before checking if it's NULL (g_assert).
13284
13285 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13288         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13289
13290         * marshal.c: Allocate all signatures from mempools.
13291
13292         * marshal.c: Allocate some more signatures from mempools.
13293
13294 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13295
13296         * object.c (mono_load_remote_field): The code used to provide a
13297         temporary variable for returning results if the user did not
13298         provide a result pointer.  But our temporary variable was allocted
13299         on the satck.
13300
13301         Fix calling code to always pass a result area.   Coverity ID 103.
13302
13303 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13304
13305         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13306         value, not the old. Fixes #78312.
13307         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13308
13309         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13310         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13311         per-image cache.
13312
13313         * assembly.c (mono_assembly_close): Free image->references.
13314
13315         * assembly.c (mono_assembly_names_equal): Fix a warning.
13316         (mono_assemblies_cleanup): Cleanup more global data.
13317
13318         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13319
13320         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13321         ptr_cache and image->modules.
13322
13323         * image.c (mono_image_init): Allocate array_cache lazily.
13324         
13325 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13326
13327         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13328         behavior was changed recently and has bad side effects.
13329
13330 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13331
13332         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13333         
13334         * assembly.c (mono_assembly_close): Remove a debug printf.
13335
13336         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13337
13338         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13339         to also allow for temporary references between mono_image_open ()/close ().
13340
13341         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13342
13343 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13344
13345         * marshal.c: Fix support for dynamic methods.
13346
13347         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13348
13349         * marshal.c (mono_marshal_cleanup): New cleanup function.
13350
13351         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13352         image mempools.
13353
13354         * class.c (mono_class_init): Fix leaking class->nested_classes.
13355
13356         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13357
13358         * image.c (mono_image_init): Initialize the new cashes.
13359
13360         * image.c (mono_image_close): Destroy the new cashes.
13361
13362         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13363
13364         * mempool.c (mono_mempool_strdup): New helper function.
13365
13366         * class-internals.h: Add prototype for mono_loader_unlock ().
13367
13368         * domain.c (mono_jit_info_table_find): Fix a warning.
13369         (mono_debugger_check_runtime_version): Ditto.
13370
13371         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13372         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13373         functions to these modules.
13374
13375         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13376         metadata modules.
13377         
13378         * marshal.c (mono_free_bstr): Fix a warning.
13379
13380         * assembly.c (mono_assembly_open_full): Fix another small leak.
13381
13382         * object.c: Fix some unload leaks in the remoting code.
13383
13384         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13385         function.
13386
13387         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13388
13389         * reflection.c: Fix some unload leaks in dynamic assemblies.
13390
13391 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13392
13393         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13394         * marshal.h: Add BSTR support on Win32
13395         * icall.c: Add BSTR icalls
13396         * metadata.h: Add BSTR enums
13397
13398 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13399
13400         Work to catch the crash from #76795 and turn it into an
13401         exception.   As I stubbed out pieces of the VisualBasic support,
13402         I found a number of places where the code was failing and I added
13403         checks to those places. 
13404         
13405         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13406         function return a status code.  If we fail to parse the signature
13407         from mono_metadata_parse_generic_inst, return FALSE.
13408
13409         * loader.c (mono_get_method_from_token): If we fail to load the
13410         method (mono_class_get) return NULL.   
13411
13412         * (method_from_memberref): Return NULL if we are unable to parse
13413         the method signature
13414
13415         (mono_loader_error_prepare_exception): Since we now use the
13416         loader_error flag internally to stop processing, and obtaining
13417         exceptions that might be thrown will walk this code path the
13418         proper way of going from a MonoLoaderError into a
13419         MonoException was convoluted.   This new routine encapsulates the
13420         process of turning the error into an exception and *clearing* the
13421         error afterwards.
13422         
13423 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13424
13425         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13426         with missing assemblies), and to cope with:
13427
13428                 * Missing fieldref from a non-existing assembly.
13429                 * Missing methodref from a non-existing assembly.
13430
13431         The first batch of work to address *some* of the issues from 76661.
13432         
13433         * object.c (mono_class_create_runtime_vtable): If we fail to
13434         initialize the class raise the exception here. 
13435
13436         * metadata.c (mono_class_get_overrides_full): If any methods fail
13437         to load return the failure to the caller.
13438
13439         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13440         flagging assemblies that failed to load.   
13441
13442         Do not crash if we are unable to load the assembly.
13443
13444         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13445         assemblies. 
13446
13447         * loader.c (mono_loader_set_error_type_load): Change the
13448         convention to always pass unallocated strings, so we make our own
13449         copies (I know our own code had duplicated strings before, but
13450         this keeps the normal conventions).
13451         (method_from_memberref): Call mono_loader_set_error_method_load
13452         for all possible failures of loading the class. 
13453         Remove assert, turn into a loader error.
13454
13455         (mono_loader_error_to_exception): Move this routine from mini
13456         (mini_loader_error_to_exception) there was no need to have that in
13457         mini. 
13458
13459         * class.c (mono_class_from_typeref): If we were not able to load
13460         the assembly with mono_assembly_load_reference, call the
13461         mono_loader_set_error_type_load to register the problem.
13462
13463         (mono_class_setup_fields): If we fail to load the type from
13464         mono_metadata_parse_type_full, call mono_class_set_failure and
13465         break from the loop.
13466
13467         If class->exception_type is set, we do not layout the fields as
13468         that might crash the runtime, and instead return (from breaking
13469         from the previous loop).
13470
13471         (mono_class_setup_vtable): This now returns a boolean indicating
13472         whether the table was properly setup.   The decision is driven by
13473         mono_class_get_overrides_full which might run into non-existing
13474         methods. 
13475         
13476         (mono_class_init): Returns TRUE on success or FALSE if there was a
13477         problem in loading the type (incorrect assemblies, missing
13478         assemblies, methods, etc).
13479
13480         When we call mono_class_setup_fields we also check for a potential
13481         error inside this call (either a class exception or a general
13482         loader exception).
13483
13484         (mono_class_create_from_typedef): If the parent fails to load
13485         (calling mono_class_get_full) return NULL.
13486         
13487         ** Important **
13488
13489         calls to mono_metadata_parse_type_full should be checked
13490         everywhere and set the mono_class_set_failure
13491         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13492
13493         The current patch checks the places where my manually constructed
13494         tests show the errors are showing up, but we should do it
13495         everywhere. 
13496
13497         ** Important2 **
13498
13499         mono_class_init return values should be tested everywhere, like
13500         the previous case this is something that we should audit
13501         everywhere and not only on the cases exposed by the tests I
13502         created. 
13503
13504 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13505
13506         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13507         boolean parameter and instead pass the information on `options'
13508         parameter (FileOptions).
13509
13510         * icall.c: Register the new signature for MonoIO.Open.
13511
13512         * debug-helpers.c (dis_one): Trying to understand how coverity
13513         works.  Fix Run 5, item 78.
13514
13515 2006-04-26  Dick Porter  <dick@ximian.com>
13516
13517         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13518         dereference.
13519
13520 2006-04-25  Martin Baulig  <martin@ximian.com>
13521
13522         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13523
13524         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13525         debugger_thread_created().
13526         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13527         special way.
13528         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13529         (mono_debugger_finalize_threads): New function; undo the effects
13530         of mono_debugger_init_threads().
13531         (mono_debugger_create_all_threads): Removed.
13532
13533 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13534
13535         * image.c (mono_image_close): Tidy up trace messages.
13536
13537         * assembly.c (mono_assembly_close): Ditto.
13538
13539         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13540         no longer references an already freed assembly. Fixes #78168.
13541
13542 2006-04-21  Dick Porter  <dick@ximian.com>
13543
13544         * threads.c (mono_thread_detach): Fix reference counting when
13545         detaching threads.
13546
13547 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13548
13549         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13550         #78155.
13551
13552 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13553
13554         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13555         (mono_type_to_stind): Ditto.
13556
13557         * marshal.c: Use the new helper functions to simplify code.
13558
13559         * image.c (mono_image_close): Add some code for help debug assembly unloading
13560         problems.
13561
13562         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13563         image mempool.
13564
13565         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
13566         assembly was already loaded in another appdomain. Fixes #78083.
13567
13568 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
13569
13570         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
13571         referenced assemblies.
13572         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
13573
13574         * domain.c (mono_domain_free): Add a trace message.
13575
13576         * appdomain.c (add_assemblies_to_domain): Ditto.        
13577
13578         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
13579         field.  
13580
13581 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13582
13583         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
13584
13585 2006-04-12  Martin Baulig  <martin@ximian.com>
13586
13587         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
13588         `USE_INCLUDED_LIBGC'.   
13589
13590 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13591
13592         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
13593         the patch contains ../ and a small directory name later. Hopefully fixes
13594         #78035.
13595
13596 2006-04-10  Martin Baulig  <martin@ximian.com>
13597
13598         Clean up the debugger's thread-handling code.
13599
13600         The debugger's thread-handling code has been moved from
13601         ../mini/debug-debugger.c to threads.c.  We now iterate directly
13602         over the `threads' hash, keep track of exiting threads and also
13603         use proper locking.
13604
13605         We can now debug XSP and XSP based applications with the debugger.
13606
13607         * object-internals.h (MonoThread): Added `gpointer end_stack'.
13608
13609         * threads.h
13610         (MonoThreadCallbacks): Removed; this was only used by the debugger.
13611         (mono_install_thread_callbacks): Likewise.      
13612
13613         * threads.c (mono_thread_callbacks): Removed.
13614         (debugger_thread_created, debugger_thread_exited): New static functions.
13615         (start_wrapper): Call debugger_thread_created().
13616         (thread_cleanup): Call debugger_thread_exited().
13617         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
13618         (mono_debugger_init_threads): New public function.
13619         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
13620         iterate directly over the `threads' hash and also use proper locking.
13621
13622         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
13623
13624         * mono-debug-debugger.h
13625         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
13626
13627 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13628
13629         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
13630         argument type=array. Fixes #78057.
13631
13632 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
13633
13634         * culture-info-table.h : regenerated. Fixed bug #69652.
13635
13636 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13637
13638         * loader.c metadata.c: Reapply a variant r59116.
13639         
13640         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
13641
13642         * class.c (mono_class_setup_interface_offsets): New internal function.
13643
13644         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
13645         interfaces too. Fixes #77398.
13646
13647         * reflection.c (encode_cattr_value): Add support for 
13648         parameter type=object, argument type=array.
13649         (load_cattr_value): Ditto. Fixes #77916.
13650
13651         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
13652         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
13653
13654         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
13655         a byval char array and CharSet is Ansi.
13656
13657         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
13658
13659 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
13660
13661         * metadata.c: Add some locking comments.
13662         
13663         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
13664         mempool.
13665         (mono_metadata_free_method_signature): Don't free the signature itself.
13666
13667         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
13668
13669         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
13670         reference the same MonoImage.
13671         (mono_assembly_load_from_full): Add an assert.
13672
13673 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13674
13675         * image.c (mono_image_close): Don't put the image we are about to free into the
13676         loaded_images_guid_hash.
13677
13678         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
13679         to reduce code duplication.
13680
13681         * marshal.c: Register the native functions called by this module as icalls, to
13682         somewhat centralize the creation of MonoMethodSignature's.
13683
13684         * loader.c (mono_method_signature): Add a cache for method signatures.
13685
13686         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
13687         the parameter attributes of a method.
13688         (mono_metadata_parse_method_signature_full): Refactored the computation of
13689         parameter attributes into a separate function. Also avoid one allocation in
13690         most cases.
13691
13692         * assembly.c (mono_assembly_close): Ditto.
13693
13694         * image.c (mono_image_close): Log trace messages with INFO level.
13695
13696         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
13697
13698         * image.c reflection.c: Correct reference counting of image modules.
13699         
13700         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
13701         of this function from the image mempool.
13702         
13703         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
13704         to allow more cached types to be used.
13705
13706         * mono-debug.c (mono_debug_add_method): Appled patch from
13707         David S. Miller  <davem@sunset.davemloft.net>: Access 
13708         minfo->lexical_blocks[] entry elements using read32().
13709
13710 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13711
13712         * loader.c (mono_free_method): No longer free the method header for non-dynamic
13713         methods as it is allocated from the mempool.
13714
13715         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
13716         image mempool.
13717
13718         * metadata-internals.h: Add comments describing the reference counting scheme
13719         used for MonoImage and MonoAssembly.
13720
13721         * image.c assembly.c reflection.c: Rework reference counting of images and 
13722         assemblies so they are freed when the runtime is shut down. Free some 
13723         additional memory structures when an image is unloaded.
13724         
13725 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13726
13727         * class.c loader.c reflection.c: Allocate more data structures in
13728         the image mempool.
13729
13730 2006-03-31  Miguel de Icaza  <miguel@novell.com>
13731
13732         * icall.c
13733         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
13734         build on pre glib 2.4 systems.
13735
13736 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13737
13738         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
13739
13740         * icall.c: Fix some warnings.
13741
13742 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
13743
13744         * culture-info-table.h : regenerated.
13745
13746 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
13747
13748         * threads.c, object-internals.h, verify.c: changed the culture caching
13749         code to use a normal MonoArray for storage so the GC can keep track of
13750         them easily. Fixed bits of the cache logic, too and simplified the
13751         code.
13752
13753 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
13754
13755         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
13756         thread for non-Boehm GCs.
13757
13758 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
13759
13760         * domain.c, object.c, domain-internals.h: reduce the amount of memory
13761         needed to keep track of the data for static fields.
13762
13763 2006-03-29  Raja R Harinath  <rharinath@novell.com>
13764
13765         Fix #75172
13766         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
13767         for interface classes.  Use 'num_methods' instead.
13768         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
13769         before using '->vtable_size' field.
13770
13771 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13772
13773         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
13774         doesn't contain managed pointers, so use a normal hashtable.
13775
13776 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13777
13778         * reflection.c, class-internals.h, domain.c: fixed handling of types
13779         used as values for objects in custom attributes (bug #77915):
13780
13781 2006-03-24  Martin Baulig  <martin@ximian.com>
13782
13783         * class.c (mono_class_setup_fields): Added support for generic
13784         instances; fixes #77580.
13785
13786 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13787
13788         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
13789
13790 2006-03-24  Dick Porter  <dick@ximian.com>
13791
13792         * file-io.c (get_file_attributes): More stat macro breakage.
13793         Fixes bug 77759.
13794
13795 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
13796
13797         * profiler.c: added the file=filename option in the default profiler
13798         to output the profile data to filename.
13799
13800 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13801
13802         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
13803         bug #77877.
13804
13805 2006-03-22  Martin Baulig  <martin@ximian.com>
13806
13807         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
13808         allocated `MonoClassField *' in `fb->handle'.
13809
13810 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13811
13812         * class.c, image.c, metadata-internals.h: implemented new mechanism to
13813         allocate interface ID to save memory and allow better ID reuse on
13814         appdomain unload. setup_generic_vtable () removal from Martin.
13815
13816 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13817
13818         * object.h, appdomain.c, domain.c, exception.c, icall.c,
13819         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
13820         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
13821         write barriers for reference stores with managed objects accessed with
13822         C structures in the runtime and in embedding programs.
13823
13824 2006-03-20  Raja R Harinath  <rharinath@novell.com>
13825
13826         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
13827         'interface_id' and 'max_interface_id' fields of MonoClasses
13828         representing open generic types.
13829
13830 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
13831
13832         * object.h, object.c, icall.c: added functions to deal with
13833         storing valuetypes that contain references in managed objects.
13834         * reflection.c, string-icalls.c, threads.c, marshal.c: small
13835         fixes and comments around uses of mono_array_addr ().
13836
13837 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
13838
13839         * object.h, icall.c, monitor.c: object.GetHashCode ()
13840         implementation that supports the moving garbage collector.
13841
13842 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13843
13844         * icall.c, threads-types.h, threads.c: implemented finalizer for
13845         LocalDataStoreSlot.
13846
13847 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13848
13849         * metadata.c (mono_type_size): Add a fixme.
13850         (mono_type_stack_size): Ditto.
13851
13852         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
13853         'type_forwarders' field.
13854
13855         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
13856         attribute from net 2.0.
13857
13858         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
13859         from class.c.
13860
13861         * class.c (mono_class_setup_fields): Fix a warning.
13862         
13863         * class.c (mono_class_from_name): Add support for assemblyref entries
13864         in the EXPORTEDTYPE table.
13865
13866         * reflection.c: Add support for handling type forwarders under net 2.0.
13867
13868         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
13869         
13870 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13871
13872         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
13873         overwriting entries in ModuleBuild->types, also clean up the code
13874         a little. Fixes #77774.
13875
13876 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13877
13878         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
13879         load friend assembly info when present.
13880
13881 2006-03-14  Raja R Harinath  <rharinath@novell.com>
13882
13883         Fix crasher on gtest-158.cs.
13884         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
13885         the return value if the MonoClass we want is yet in an
13886         inconsistent state.
13887         * class.c (mono_class_create_from_typedef): Add an comment
13888         explaining an order dependency between mono_class_setup_parent and
13889         mono_class_setup_mono_type.
13890
13891 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13892
13893         * class.c: documentation updates and events bug fix.
13894
13895 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
13896
13897         * class.c: some cleanup, locking fixes.
13898
13899 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13900
13901         * class.c: fix the generics code to setup nested
13902         type info to the instantiated type (bug #77770).
13903
13904 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
13905
13906         * marshal.c: fixed a few type correctness issues.
13907
13908 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13909
13910         * loader.c: the Set/Get/Addrtess array methods should be public.
13911
13912 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
13913
13914         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
13915         
13916         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
13917         info->wrapper.
13918
13919 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
13922
13923         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
13924
13925         * mempool.c (mono_mempool_alloc): Speed this up a bit.
13926         (mono_mempool_alloc0): Ditto.
13927
13928 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13929
13930         * socket-io.c:
13931         (create_object_from_sockaddr): it was allocating 4 extra bytes
13932         for the AF_UNIX data. Fixes bug #77747.
13933
13934 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
13935
13936         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
13937
13938 2006-03-09  Dick Porter  <dick@ximian.com>
13939
13940         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
13941         Fixes bug 76966 again.
13942
13943 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
13944
13945         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
13946         names from r57532
13947         * appdomain.c: Bumped corlib version to 48 (due to r57532)
13948
13949 2006-03-07  Martin Baulig  <martin@ximian.com>
13950
13951         * object.c
13952         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
13953
13954 2006-03-07  Martin Baulig  <martin@ximian.com>
13955
13956         * class.c
13957         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
13958         regression introduced in r56970; see gtest-252.cs.
13959
13960         * loader.c (mono_get_method_constrained): Correctly handle generic
13961         methods; see gtest-253.cs.
13962
13963 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
13964
13965         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
13966
13967 2006-03-04  Martin Baulig  <martin@ximian.com>
13968
13969         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
13970         compute the parent type at runtime, just like we're already doing
13971         it for interfaces.
13972
13973         * reflection.c
13974         (mono_reflection_bind_generic_parameters): Don't compute the
13975         parent type anymore.
13976
13977         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
13978
13979 2006-03-04  Martin Baulig  <martin@ximian.com>
13980
13981         * mono-debug-debugger.h
13982         (mono_debugger_create_notification_function): Allocate memory at
13983         runtime and return a pointer to it.
13984
13985 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
13986
13987         * assembly.c: Fix windows build.
13988         
13989         * assembly.c: Fix build.
13990
13991         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
13992
13993         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
13994         
13995 2006-03-03  Dick Porter  <dick@ximian.com>
13996
13997         * process.c
13998         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
13999         Check parameters before dereferencing them.  Fixes Aaron's part of
14000         bug 77393.
14001
14002 2006-03-03  Raja R Harinath  <rharinath@novell.com>
14003
14004         Fix performance regression.
14005         * loader.c (find_method_in_class): Add 'from_class' argument.
14006         Rename 'klass' argument to 'in_class'.  The signature is compared
14007         against the method in 'in_class', and the corresponding method is
14008         returned from 'from_class'.
14009         (find_method): Walk both 'in_class' and 'from_class' in parallel.
14010         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
14011         type definition and generic instantiation in parallel.
14012         (mono_get_method_constrained): Update to changes.
14013
14014 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14015
14016         * threads.c: make sure the domain is correct, too when doing
14017         mono_thread_attach ().
14018
14019 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
14020
14021         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
14022         windows. Fixes #77683.
14023
14024 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14025
14026         * object.h, *: introduced specific way to set elements of an array
14027         of references to be used as write barrier. Still need to audit the
14028         uses of mono_array_addr.
14029
14030 2006-03-01  Miguel de Icaza  <miguel@novell.com>
14031
14032         * object-internals.h: New field to cache the assmebly name, patch
14033         from Tambet Ingo (tambet@ximian.com)
14034
14035 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14036
14037         * decimal.h, class-internals.h, metadata-internals.h,
14038         file-io.h: mark a few function declarations as internal, to
14039         reduce the number of PLT entries.
14040
14041 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14042
14043         * file-io.c: fix typo in warning message.
14044
14045 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
14046
14047         * loader.c: on unix, lookup the "*A" version of a function
14048         if charset is auto as a second option before failing.
14049
14050 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14051
14052         * class.h (mono_class_inflate_generic_method): Revert to two
14053         argument version.
14054         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
14055         (mono_class_inflate_generic_method_full): Add.
14056         * class.c (mono_class_inflate_generic_method_full): Rename from
14057         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
14058         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
14059         * loader.c, reflection.c: Update to changes.
14060
14061 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14062
14063         * icall.c: const fixes and small improvements.
14064
14065 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14066
14067         * threadpool.c: for asynchronous connect(), enable the same workaround
14068         for BSD 6 as for the Mac. Fixes bug #77637.
14069
14070 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14071
14072         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
14073         formatted classes. Fixes #77524.
14074
14075 2006-02-24  Raja R Harinath  <rharinath@novell.com>
14076
14077         * class.c (inflate_generic_type): Add a couple more
14078         micro-optimizations.
14079         (inflate_generic_context): Don't use the 'gmethod' from
14080         'inflate_with'.
14081         (mono_class_inflate_generic_method): If the method has generic
14082         parameters, but the passed-in context doesn't have a 'gmethod',
14083         create one.  Use the possibly simplified generic instantiation
14084         from the declaring class instead of the one passed in.
14085
14086 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14087
14088         Make generic method signature and method header handling lazy.
14089         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
14090         (inflate_generic_header): Likewise.
14091         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
14092         parameter to avoid inflating types.
14093         (mono_get_inflated_method): Empty out.
14094         * class.h (mono_class_inflate_generic_method): Update to changes.
14095         * loader.c (mono_get_method_from_token): Don't parse signature for
14096         generic methods, nor methods of generic classes.
14097         (mono_method_signature): Rename from 'mono_method_signature'.
14098         Inflate signature on demand.
14099         (mono_method_get_header): Inflate method header on demand.
14100         * reflection.c: Update to changes.
14101
14102 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14103
14104         * metadata.c (mono_metadata_inflate_generic_inst): If the
14105         instantiation is closed, don't bother expanding it in the new
14106         context.
14107         * class.c (inflate_generic_class): If the generic instantiation
14108         doesn't change after inflation, return the argument itself.
14109         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
14110         Add bounds checks.
14111         (inflate_generic_context): If neither the generic class nor the
14112         generic method instantiations change, return the original context.
14113         * reflection.c (mono_method_get_object): Do
14114         'mono_get_inflated_method' before accessing the ->klass field.
14115         (inflate_mono_method): Don't create a MonoGenericMethod unless
14116         necessary.
14117         (inflate_method): Don't pass a constructed type as the declaring
14118         type of a methodbuilder.
14119
14120 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
14121
14122         * object.c: fix memory overwrite.
14123
14124 2006-02-22  Dick Porter  <dick@ximian.com>
14125
14126         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
14127         it doesn't work any more.
14128         (mono_threads_request_thread_dump): Fix unused variable warnings.
14129
14130 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14131
14132         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
14133         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
14134         the public header file.
14135
14136 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
14137
14138         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
14139
14140 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14141
14142         * class-internals.h, object.c: reduce the size of MonoVTable
14143         and store the interface_offsets array at negative offsets.
14144
14145 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14146
14147         * metadata.c: tweak table descriptors data structures to reduce
14148         size and runtime relocations.
14149
14150 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14151
14152         * marshal.c: fix some types and opcodes to be type-safe
14153         in marshaling wrappers.
14154
14155 2006-02-21  Ankit Jain  <jankit@novell.com>
14156
14157         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
14158
14159 2006-02-21  Raja R Harinath  <rharinath@novell.com>
14160
14161         * metadata.c (get_constraints): Relax debugging checks for monodis.
14162
14163 2006-02-21  Ankit Jain  <jankit@novell.com>
14164
14165         * metadata.c (mono_metadata_load_generic_params): Move the code
14166         checking for ambiguous generic params from here to mono/dis/get.c
14167         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
14168
14169 2006-02-21  Raja R Harinath  <harinath@gmail.com>
14170
14171         Fix assertion triggered when compiling nemerle.
14172         * class.c (mono_get_shared_generic_inst): Rename from
14173         get_shared_inst and make non-static.
14174         * loader.c (mono_get_shared_generic_method): New.  Used to create
14175         the MonoGenericContext-equivalent of a MonoGenericContainer.
14176         (mono_get_method_from_token): Initialize the 'context' field of
14177         the created MonoGenericContainer.
14178         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
14179         * metadata.c (get_constraints): Add sanity check.
14180         * class-internals.h: Add new internal methods.
14181
14182         * reflection.c (verify_safe_for_managed_space): New sanity check.
14183         Currently checks that owner-less generic parameters aren't allowed
14184         in managed space.
14185         (mono_type_get_object): Use it.
14186         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
14187         that are now in mono_type_get_object.
14188         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
14189
14190 2006-02-19  Raja R Harinath  <harinath@gmail.com>
14191
14192         * metadata.c (mono_type_create_from_typespec): Rename from
14193         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
14194         argument and caching of types in the generic container.
14195         (unwrap_arrays, find_generic_param): Remove.
14196         * metadata-internals.h: Update.
14197         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
14198
14199 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
14200
14201         * class.c (mono_class_get_exception_for_failure): Fix a warning.
14202
14203         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
14204         return values. Fixes #77581.
14205
14206         * class.c (mono_fnptr_class_get): Switch name and name_space.
14207
14208         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
14209         classes and add support for [In, Out] attributes.
14210         (mono_marshal_free_asany): Ditto. Fixes #77524.
14211
14212 2006-02-18  Raja R Harinath  <harinath@gmail.com>
14213
14214         * class.c (mono_class_from_generic_parameter): Make more robust to
14215         incomplete MonoGenericContainers from monodis.
14216
14217 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14218
14219         * class-internals.h: added some more exception types.
14220         * class.c, metadata.c: added a few checks to handle missing
14221         types.
14222
14223 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14224
14225         Use owner-less generic-params some more.
14226         * class.c (my_mono_class_from_generic_parameter): Remove.
14227         (mono_class_from_generic_parameter): Handle null image,
14228         param->name and param->owner.
14229         (mono_class_from_mono_type): Update.
14230         (mono_class_create_from_typespec): Remove 'container' parameter.
14231         If that parameter is non-null, the result is always inflated by
14232         'mono_class_get_full' anyway.
14233         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
14234         parameter.
14235         (mono_class_get_full): Update.
14236
14237         * class.c (inflate_generic_type) [GENERICINST]: If the generic
14238         instance is not open, don't bother inflating.
14239         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
14240         parse metadata for inflated classes.
14241         (_mono_class_get): Change GenericContext* parameter to
14242         GenericContainer*.
14243         (mono_class_create_from_typespec): Likewise.  Simplify, and
14244         implement trivially.  All the cases are handled in
14245         mono_class_from_mono_type.  Don't inflate returned class.
14246         (mono_class_get_full): Delegate GENERICINST optimization to
14247         inflate_generic_type.
14248         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
14249
14250 2006-02-16  Dick Porter  <dick@ximian.com>
14251
14252         * socket-io.c (create_object_from_sockaddr): Fix typo.
14253         (create_sockaddr_from_object): Check array lengths before
14254         potentially accessing items off the end.
14255         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14256         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14257         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14258         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14259         length checks to avoid wraparound overflows.
14260         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14261         contents of the array of sockets
14262         (hostent_to_IPHostEntry2)
14263         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14264         Check return value of inet_ntop ().
14265         (addrinfo_to_IPHostEntry): Fix typo
14266
14267 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14268
14269         Type metadata parsing doesn't use generic-instantiation information.
14270         * metadata.c (mono_metadata_parse_array_full): Change
14271         MonoGenericContext* parameter to MonoGenericContainer*.
14272         (mono_metadata_parse_type_full): Likewise.
14273         (mono_type_create_from_typespec_full): Likewise.
14274         (mono_metadata_parse_mh_full): Likewise.
14275         (mono_metadata_parse_generic_inst): Likewise.
14276         (do_mono_metadata_parse_generic_class): Likewise.
14277         (do_mono_metadata_parse_type): Likewise.
14278         * metadata-internals.h: Update to changes.
14279         * class.c (mono_class_find_enum_basetype): Likewise.
14280         (mono_class_setup_fields): Likewise.
14281         (mono_class_create_from_typespec): Likewise.
14282         * loader.c (method_from_methodspec): Likewise.
14283         (mono_get_method_from_token): Likewise.
14284         (mono_method_get_header): Likewise.
14285
14286 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14287
14288         * marshal.c: handle additional GENERICINST case (patch from
14289         Thong Nguyen <tum@veridicus.com>).
14290         Fix a few cases where LDIND_I/STIND_I was used for references.
14291
14292 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14293
14294         * reflection.c (mono_reflection_get_token): Remove unused variable.
14295
14296 2006-02-16  Martin Baulig  <martin@ximian.com>
14297
14298         * reflection.c (mono_reflection_get_token): Add support for fields
14299         in instantiated generic types.
14300
14301         * icall.c
14302         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14303
14304 2006-02-15  Martin Baulig  <martin@ximian.com>
14305
14306         * icall.c
14307         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14308         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14309         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14310         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14311
14312 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14313
14314         * class.c, metadata.c, metadata.h, object.c, icall.c,
14315         marshal.c: changed mono_type_get_underlying_type () to do
14316         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14317         Fixed handling of instantiated generic valuetypes (bug #75479).
14318
14319 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14320
14321         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14322         Delegate to mono_metadata_decode_value, and work on the returned value.
14323
14324         * icall.c (ves_icall_MonoType_GetGenericArguments):
14325         Add consistency check here too.
14326         
14327 2006-02-15  Ankit Jain  <jankit@novell.com>
14328
14329         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14330         char/short etc.
14331
14332 2006-02-15  Ankit Jain  <jankit@novell.com>
14333
14334         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14335         signed values, used only for representing lower bounds of arrays.
14336         (mono_metadata_parse_array_full): Use new
14337         mono_metadata_decode_signed_value to decode lower bounds.
14338
14339 2006-02-14  Martin Baulig  <martin@ximian.com>
14340
14341         * reflection.c
14342         (mono_reflection_get_token): Support "MonoGenericMethod" and
14343         "MonoGenericCMethod" and allow generic instances / methods.
14344
14345 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14346
14347         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14348         to obtain the terminal size using an ioctl.
14349
14350         * object.c (mono_nullable_init): Revert this as nullable reference
14351         types are not valid.
14352         (mono_nullable_box): Ditto.
14353
14354 2006-02-09  Dick Porter  <dick@ximian.com>
14355
14356         * threads.c (mono_thread_detach): Drop a reference to the thread
14357         we're detaching.
14358
14359 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14360
14361         * object.c (mono_nullable_init): Handle nullable reference types.
14362         (mono_nullable_box): Ditto. Fixes #77446.
14363
14364 2006-02-07  Martin Baulig  <martin@ximian.com>
14365
14366         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14367
14368 2006-02-07  Ankit Jain  <jankit@novell.com>
14369
14370         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14371         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14372         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14373         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14374         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14375         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14376
14377 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14378
14379         * class.c (mono_class_create_generic): Set type_token as well.
14380
14381         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14382         compatible with MS.
14383
14384 2006-02-02  Martin Baulig  <martin@ximian.com>
14385
14386         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14387         has never been used so far.
14388
14389 2006-02-02  Martin Baulig  <martin@ximian.com>
14390
14391         * mono-debug-debugger.h: Changed comment at the top of this file;
14392         the header is not installed, but it's safe to #include it from
14393         within the JIT.
14394
14395         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14396         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14397
14398 2006-02-02  Martin Baulig  <martin@ximian.com>
14399
14400         * mono-debug.h
14401         (MonoSymbolTable): Removed the `metadata_info' field.
14402
14403         * mono-debug.c
14404         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14405
14406         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14407         (mono_debugger_add_builtin_types): Removed.
14408         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14409         (mono_debugger_create_notification_function): We now operate on a
14410         pre-allocated area; take a `gpointer' and return `void'.
14411
14412         * mono-debug-debugger.c
14413         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14414         (mono_debugger_add_builtin_types): Removed.
14415
14416 2006-02-02  Martin Baulig  <martin@ximian.com>
14417
14418         * threads.c (mono_debugger_create_all_threads): New public method.
14419
14420 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14421
14422         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14423         breaks on several platforms.
14424
14425 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14426
14427         * assembly.c: the VS.NET build doesn't supply default values for
14428         MONO_ASSEMBLIES and MONO_CFG_DIR.
14429
14430 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14431
14432         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14433         helper function.
14434
14435         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14436
14437         * loader.c (method_from_memberref): Fix a warning.
14438
14439         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14440
14441         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14442         with explicit layout. Fixes #77433.
14443
14444 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14445
14446         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14447         max_interface_id is initialized before using it. Fixes #77398.
14448         (ves_icall_Type_GetInterfaces): Ditto.
14449
14450 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14451
14452         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14453         allocate memory for parameter attributes when parsing memberref
14454         signatures.
14455         * loader.c (mono_loader_set_error_method_load): Don't warn.
14456         (method_from_memberref): Ensure MissingMethodException gets thrown
14457         if method is not found.  Make warning more informative.
14458
14459 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14460
14461         Fix #77397
14462         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14463         return true if is byref.
14464         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14465         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14466         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14467
14468 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14469
14470         Fix tests/find-method.2.il
14471         * loader.c (find_method, find_method_in_class): Remove is_inflated
14472         argument.  Revert 2006-01-18 change.
14473         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14474         is generic, search for method in its generic definition.
14475         * class.c (mono_class_setup_vtable_general): Print generic
14476         arguments of generic types in debugging printf.
14477
14478 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14479
14480         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14481
14482         * threads.c (mono_threads_request_thread_dump): New helper function.
14483
14484 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14485
14486         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14487
14488 2006-01-25  Ankit Jain  <jankit@novell.com>
14489
14490         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14491         move definition to ..
14492         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14493         
14494 2006-01-25  Ankit Jain  <jankit@novell.com>
14495             Raja R Harinath  <rharinath@novell.com>
14496
14497         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14498         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14499         as necessary.
14500
14501 2006-01-25  Martin Baulig  <martin@ximian.com>
14502
14503         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14504         `MonoDebuggerThread' into debug-debugger.c.
14505
14506 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14507
14508         * profiler.c: fix printing of data.
14509
14510 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14511
14512         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14513           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14514
14515 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14516
14517         * object.c: fix deadlock related to string interning.
14518
14519 2006-01-23  Martin Baulig  <martin@ximian.com>
14520
14521         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14522
14523         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14524
14525 2006-01-23  Martin Baulig  <martin@ximian.com>
14526
14527         * mono-debug.h: Moved the prototypes of some functions which are
14528         used by the JIT here from mono-debug-debugger.h.
14529
14530 2006-01-21  Martin Baulig  <martin@ximian.com>
14531
14532         * Makefile.am: Don't install mono-debug-debugger.h.
14533
14534 2006-01-21  Martin Baulig  <martin@ximian.com>
14535
14536         * mono-debug-debugger.h: Enforce the private status of this header
14537         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14538         Moved some stuff from mono-debugger-jit-wrapper.h here.
14539
14540 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14541
14542         * class.c (mono_class_from_typeref): Add a sanity test to help
14543         catch lack of assembly load/search hooks.
14544
14545 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14546
14547         * marshal.c (emit_struct_conv): Relax the fields with same offset
14548         check even more. Fixes #77230.
14549
14550 2006-01-18  Martin Baulig  <martin@ximian.com>
14551
14552         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14553         argument; if false, we compare the uninstantiated signatures.
14554         (method_from_memberref): Compare the uninstantiated signatures;
14555         fixes #76417.
14556
14557 2006-01-18  Robert Jordan  <robertj@gmx.net>
14558
14559         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14560         Clear the weak link. Fixes bug #77170.
14561
14562         * gc.c (mono_gchandle_free):
14563         Reflect *-gc.c changes (tiny optimization).
14564
14565 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
14566
14567         * metadata.c (mono_metadata_signature_dup): Applied patch from
14568         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
14569         Fixes #77288.
14570
14571 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14572
14573         * marshal.c (emit_struct_conv): Allow fields with the same offset when
14574         marshalling from native to managed code. Fixes #77230.
14575
14576 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14577
14578         * threadpool.c: fix problem (Mac only) when more than one asynchronous
14579         connect. Fixes bug #77020.
14580
14581 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14582
14583         * class.c: fixed id assignement for nested interfaces (bug #77275).
14584         Added also better info for --print-vtable debugging.
14585
14586 2006-01-12  Martin Baulig  <martin@ximian.com>
14587
14588         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
14589         interfaces on-the-fly; fixes #76625.
14590
14591         * class-internals.h
14592         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
14593         don't need that anymore.
14594
14595 2006-01-12  Miguel de Icaza  <miguel@novell.com>
14596
14597         * socket-io.c
14598         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14599         To avoid initing the nested_classes when not needed I turned the
14600         PeerCredData as a toplevel internal class, as it has to be shared
14601         anyways. 
14602
14603         Fixes the CASA issue.
14604
14605 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14606
14607         * domain.c: Accessors for MonoJitInfo
14608
14609         * profiler-private.h: Add jitinfo to the end jit hook
14610
14611         * profiler.[ch]: Define new hooks, called after jitting which give
14612         the MonoJitInfo that was compiled
14613
14614 2006-01-10  Martin Baulig  <martin@ximian.com>
14615
14616         * class.c (mono_class_setup_events): Add support for generic
14617         classes; fixes #76440.
14618
14619 2006-01-06  Raja R Harinath  <rharinath@novell.com>
14620
14621         Fix #77160.
14622         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
14623         on passed-in method.
14624
14625 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14626
14627         * object.c (mono_runtime_invoke_array): Add Nullable support.
14628
14629         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
14630
14631 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
14632
14633         * file-io.c: Don't consider sockets as directory and avoid an endless
14634         loop. Fix bug #76966.
14635
14636 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14637
14638         * object.c (mono_nullable_init): New helper function.
14639         (mono_nullable_box): Ditto.
14640
14641         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
14642
14643         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
14644
14645         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
14646         
14647 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
14648
14649         * class.c (mono_class_is_assignable_from): Make T assignable to 
14650         Nullable<T>.
14651
14652 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
14653
14654         * appdomain.c: Bump corlib version to 46.
14655         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
14656         serialization purpose) and changed ves_icall_System_Reflection_
14657         Assembly_get_code_base signature to accept a boolean (to escape, or 
14658         not, the assembly code base).
14659
14660 2005-12-23  Dick Porter  <dick@ximian.com>
14661
14662         * icall.c: 
14663         * threads-types.h: 
14664         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
14665         CreateEvent icall now returns "created" boolean parameter.
14666
14667 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14668
14669         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
14670         #76967.
14671
14672         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
14673         when attr_klass is an interface. Fixes #77045.
14674
14675 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
14676
14677         * marshal.c (emit_struct_conv): Fix previous patch.
14678         
14679         * marshal.c (emit_struct_conv): Add a check for fields with the same
14680         offset.
14681
14682 2005-12-20  Raja R Harinath  <rharinath@novell.com>
14683
14684         Fix regression in Mono.C5.
14685         * class.c (mono_class_create_generic): If 'klass' is an interface
14686         set up the interface offsets.
14687         (mono_class_is_assignable_from): Don't throw away generic arguments.
14688
14689 2005-12-19  Raja R Harinath  <rharinath@novell.com>
14690
14691         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
14692         type parameters.
14693
14694 2005-12-15  Raja R Harinath  <rharinath@novell.com>
14695
14696         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
14697         dead store.
14698         (do_mono_metadata_parse_generic_class): Don't pass the current
14699         generic context when parsing the type being instantiated: it
14700         cannot use it, anyway.
14701
14702         * loader.c (method_from_memberref): Don't inflate a signature if
14703         it doesn't contain any type parameters.
14704
14705 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14706
14707         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
14708
14709 2005-12-14  Martin Baulig  <martin@ximian.com>
14710
14711         * class.c
14712         (mono_type_get_name_recurse): Don't return null for type
14713         parameters and open generic classes.
14714         (mono_class_setup_methods): Don't exclude generic instances.
14715         (mono_get_unique_iid): Use different IDs for different
14716         instantiations of the same generic type.
14717         (mono_class_setup_vtable): Only use setup_generic_vtable() for
14718         open generic instances; create a normal vtable for closed generic
14719         instances.
14720         (mono_class_setup_vtable_general): We're now also called for
14721         closed generic instances.
14722
14723         * reflection.c
14724         (mono_reflection_bind_generic_parameters): Correctly use
14725         mono_metadata_lookup_generic_inst() everywhere.
14726
14727 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
14728
14729         * object.c (mono_class_create_runtime_vtable): Call 
14730         mono_class_setup_vtable ().
14731
14732         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
14733         function.
14734         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
14735         #76959.
14736
14737         * loader.c (mono_loader_set_error_type_load): Print the type load
14738         warnings to the console so they are more visible to the user.
14739         (mono_loader_set_error_method_load): Ditto.
14740
14741         * reflection.c (ensure_runtime_vtable): Revert the last change as it
14742         is still broken.
14743         
14744         * reflection.c (ensure_runtime_vtable): Fix build.
14745
14746         * reflection.c (ensure_runtime_vtable): Disable an optimization which
14747         doesn't work in all cases.
14748
14749 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
14750
14751         * object.c (mono_array_new_full): Treat a single dimensional array
14752         with 0 lower bounds as an szarray. Fixes #76973.
14753
14754         * reflection.c (custom_attr_visible): Really fix this.
14755
14756 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
14757
14758         * reflection.c (custom_attr_visible): Allow nested public attributes
14759         as well.
14760
14761         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
14762         interface check.
14763
14764 2005-12-12  Raja R Harinath  <harinath@gmail.com>
14765
14766         * class.c (set_generic_param_owner): Delete.
14767         (mono_class_create_from_typedef): Don't set ->owner field of
14768         generic parameters to "param containers" of enclosing classes.
14769         * reflection.c (mono_reflection_initialize_generic_parameter):
14770         Likewise.
14771
14772 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
14773
14774         * reflection.c (custom_attr_visible): Fix build.
14775
14776 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
14777
14778         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
14779         private attributes.
14780         
14781         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
14782         handling of null parameter defaults.
14783
14784 2005-12-09  Raja R Harinath  <rharinath@novell.com>
14785
14786         * class.c (mono_class_from_generic_parameter): Don't set
14787         klass->generic_container.
14788         (my_mono_class_from_generic_parameter): Likewise.
14789
14790 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14791
14792         * reflection.c (load_public_key): Fix a warning.
14793         (method_encode_code): Fix unaligned accesses.
14794
14795 2005-12-07  Martin Baulig  <martin@ximian.com>
14796
14797         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
14798
14799         * reflection.c
14800         (write_generic_param_entry): Encode our custom attrs.
14801
14802         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
14803
14804 2005-12-07  Martin Baulig  <martin@ximian.com>
14805
14806         * reflection.c (encode_new_constraint): Removed; we don't use the
14807         `NewConstraintAttribute' anymore.
14808
14809 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14810
14811         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
14812         not fire a TypeResolve event when Assembly.GetType () is called.
14813
14814 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14815
14816         Beginning of support for nullable types in the runtime. Parts of
14817         this patch are from Martin.
14818
14819         * appdomain.c (MONO_CORLIB_VERSION): Bump
14820
14821         * domain.c (mono_init_internal): get the nullable type
14822
14823         * class.c (mono_class_is_nullable): New method
14824         (mono_class_get_nullable_param): New mehod
14825         (mono_class_create_generic): In types T? set cast_class to T
14826
14827         * class-internals.h (MonoDefaults): new nullable default class
14828         (mono_class_get_nullable_param, mono_class_get_nullable_param):
14829         new methods.
14830
14831 2005-12-05  Raja R Harinath  <rharinath@novell.com>
14832
14833         * metadata.c (select_container): New.  Refactor code to select the
14834         appropriate GenericContainer given the type of generic parameter
14835         we are looking for.
14836         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
14837         not a MonoGenericContext.  Use select_container.  Update parameters.
14838         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
14839         and MONO_TYPE_MVAR.
14840         (unwrap_arrays): Remove duplicate tests.
14841         (find_generic_param): Rename from 'has_same_context'.  Now walks a
14842         generic instantiated class to find any arguments that are generic
14843         parameters.
14844         (mono_type_create_from_typespec_full): Use find_generic_param to
14845         avoid evicting some generic instantiations from the typespec
14846         cache.
14847
14848 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
14849
14850         * reflection.c: fixed writing of doubles on ARM FPA.
14851
14852 2005-12-02  Robert Jordan  <robertj@gmx.net>
14853
14854         * icall.c: Fixed EventInfo.ReflectedType (#76829).
14855
14856 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14857
14858         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
14859         least on SUSE 10 they are not the same (on debian, they are just the
14860         same thing).
14861
14862 2005-12-01  Raja R Harinath  <rharinath@novell.com>
14863
14864         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
14865         DeclaringType for VARs and MVARs.
14866         * class.c (set_generic_param_owner): Fix initialization of owner
14867         fields.
14868
14869 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
14870
14871         * icall.c: fixed Enum.ToObject() to correctly convert the values.
14872
14873 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14874
14875         * threadpool.c: workaround for a bug that shows up on the Mac:
14876         select()+connect() on a blocking socket is not like it should
14877         be, so we proceed to connect() in that case, wasting the I/O
14878         threadpool thread until connect succeedes. Fixes bug #75436.
14879
14880 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14881
14882         * threadpool.c: fix typo when setting file descriptor states.
14883
14884 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14885
14886         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
14887         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14888         create a temporary signature container.
14889         (mono_metadata_parse_generic_param): Update to changes.
14890         (mono_type_create_from_typespec_full): Update to changes.
14891         * loader.c (method_from_memberref): Don't use a
14892         MonoGenericContainer while parsing a memberref signature.
14893         (method_from_methodspec): Remove dead-store of the 'container'
14894         variable.  It's overwritten before use.
14895
14896         * metadata.c (mono_type_create_from_typespec_full): Make debugging
14897         checks tighter.
14898         (mono_metadata_parse_generic_param): Likewise.
14899         * loader.c (find_method_in_class): Does not need a
14900         MonoGenericContainer.  Use 'mono_method_signature' rather than
14901         'mono_method_signature_full'.
14902         (find_method, mono_get_method_constrained, method_from_memberref):
14903         Update to changes.
14904
14905         * metadata.c (mono_type_create_from_typespec_full): Ensure that
14906         owner-less generic-parameters are never evicted from the typespec
14907         cache.
14908
14909         * loader.c (method_from_memberref): Don't use the current context
14910         when parsing signatures.
14911         (method_from_methodspec, mono_get_method_from_token): Update to changes.
14912
14913         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
14914         side-effects in g_assert.
14915         * loader.c (mono_get_method_from_token): Resolve klass earlier so
14916         that we don't potentially lose information.
14917
14918 2005-11-26  Dick Porter  <dick@ximian.com>
14919
14920         * icall.c:
14921         * threads.c: icalls to implement basic (ie, not named)
14922         System.Threading.Semaphore.
14923
14924 2005-11-24  Dick Porter  <dick@ximian.com>
14925
14926         * process.c
14927         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14928         Use GetProcessId() if it's available.
14929
14930 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
14931
14932         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
14933
14934 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14935             Ankit Jain  <jankit@novell.com>
14936
14937         * loader.c (mono_get_method_from_token): Initialize 'method' field
14938         of all generic parameters before parsing the signature.  Remove
14939         code that "fixed"-up MVAR references.
14940
14941 2005-11-23  Ankit Jain  <jankit@novell.com>
14942
14943         * metadata.c (mono_metadata_has_generic_params):
14944         (mono_metadata_load_generic_param_constraints):
14945         (mono_metadata_load_generic_params): Move duplicate code ...
14946         (mono_metadata_get_generic_param_row): ... here. Returns the
14947         first row-id in GenericParam table for a given owner (token).
14948         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
14949         prototype.
14950
14951 2005-11-23  Raja R Harinath  <rharinath@novell.com>
14952             Ankit Jain  <jankit@novell.com>
14953
14954         * metadata.c (mono_metadata_class_equal): Pass signature_only when
14955         comparing VARs too.
14956         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
14957         type->data.generic_param only if the type is an MVAR.
14958         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
14959         leak owner-less VARs and MVARs into managed space.
14960
14961 2005-11-21  Martin Baulig  <martin@ximian.com>
14962
14963         * class-internals.h
14964         (MonoMethod): Moved the `generic_container' here from
14965         `MonoMethodNormal' since we now also need it for
14966         `MonoMethodPInvoke';
14967         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
14968         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
14969         an union containing both `MonoMethodNormal' and
14970         `MonoMethodPInvoke'.
14971
14972         * loader.c
14973         (mono_get_method_from_token): Allow implementing generic methods
14974         as interncalls.
14975
14976         * threads.c
14977         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
14978         icall.
14979
14980 2005-11-17  Dick Porter  <dick@ximian.com>
14981
14982         * icall.c: 
14983         * process.h: 
14984         * process.c: Split the Process Start_internal icall into
14985         ShellExecuteEx_internal and CreateProcess_internal, which are
14986         called depending on whether UseShellExecute is true.  Fixes bug
14987         76670.
14988
14989         * appdomain.c (MONO_CORLIB_VERSION): Incremented
14990
14991 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14992
14993         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
14994         'msize' parameters, use the information in 'mspec' instead.
14995         (emit_object_to_ptr_conv): Ditto.
14996
14997         * marshal.c (emit_struct_conv): Handle explicit layout structs with
14998         fields out of order. Fixes #76733.
14999
15000 2005-11-17  Ankit Jain  <jankit@novell.com>
15001
15002         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
15003
15004 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
15005
15006         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
15007           bug #76575.
15008
15009 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15010
15011         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
15012         for types with non-auto layout. Fixes #76717.
15013
15014 2005-11-16  Ankit Jain  <jankit@novell.com>
15015
15016         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
15017         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
15018         if generic_context is null.
15019           (mono_metadata_generic_param_equal): param->owner can be null.
15020           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
15021         null.
15022
15023 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15024
15025         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
15026         the correct value.
15027
15028 2005-11-15  Martin Baulig  <martin@ximian.com>
15029
15030         * object.c (set_value): Use mono_class_from_mono_type() instead of
15031         the hack for generic instances; fixes #76136.
15032
15033 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
15034
15035         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
15036         fields.
15037
15038         * image.c (load_metadata_ptrs): Initialize the new fields.
15039
15040         * reflection.c (create_dynamic_mono_image): Ditto.
15041
15042         * reflection.c (build_compressed_metadata): Use the new fields.
15043
15044         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
15045         icall.
15046
15047         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
15048         icall.
15049         
15050 2005-11-15  Ankit Jain  <jankit@novell.com>
15051             Raja R Harinath  <harinath@gmail.com>
15052
15053         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
15054         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
15055         new per-generic_container cache if the cached MonoType's context matches
15056         the current context.
15057           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
15058         to the expected context.
15059           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
15060
15061 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15062
15063         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
15064         we changed the signature of an icall.
15065         * icall.c: Modify to mono_double_ParseImpl return true/false 
15066         depending on the success, instead of throwing the exception. This will
15067         help us in Double.TryParse methods.
15068         
15069 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
15070
15071         * marshal.c (emit_marshal_object): Throw an exception when
15072         marshalling 'object' instead of crashing. Fixes #76696.
15073
15074 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15075
15076         * class-internals.h: Add prototype for mono_type_get_full_name ().
15077
15078 2005-11-11  Dick Porter  <dick@ximian.com>
15079
15080         * threads.c (mono_thread_manage): Make sure the main thread has
15081         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
15082
15083 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15084
15085         * loader.c (mono_loader_set_error_type_load): Log a warning to the
15086         console about the missing type.
15087         (mono_loader_set_error_method_load): Ditto.
15088
15089 2005-11-09  Miguel de Icaza  <miguel@novell.com>
15090
15091         * mono-config.c (mono_get_config_dir): Set the system defaults if
15092         none is specified.
15093
15094         * assembly.c (mono_set_dirs): New API entry point to set the
15095         assembly and the config directory in one call
15096
15097 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
15098
15099         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
15100         the ftnptr was created from a delegate in a domain other than the
15101         current domain. Fixes #75377.
15102
15103         * exception.h exception.c: Add mono_get_exception_not_supported ().
15104
15105 2005-11-08  Martin Baulig  <martin@ximian.com>
15106
15107         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
15108
15109 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
15110
15111         * security-manager.h: Added definitions to deal with strongname key 
15112         pairs bigger (and smaller) than 1024 bits.
15113         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
15114         adjust wrt the public key length being used.
15115
15116 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
15117
15118         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
15119           Windows build (r51396-51397).
15120
15121 2005-11-03  Martin Baulig  <martin@ximian.com>
15122
15123         * class.c (mono_class_setup_vtable_general): Also add generic
15124         methods to the vtable; fixes #76581.
15125
15126 2005-11-01  Miguel de Icaza  <miguel@novell.com>
15127
15128         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
15129         sure that we lookup GetString method from the System.Text.Encoding
15130         class, not the derived class or we get an empty method.
15131
15132         Fixed class #76612.
15133
15134 2005-10-25  Miguel de Icaza  <miguel@novell.com>
15135
15136         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
15137         if it has been previously set (embedders). 
15138
15139         Make mono_set_rootdir available also on Unix.
15140
15141 005-10-24  Robert Jordan  <robertj@gmx.net>
15142
15143         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
15144
15145 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15146
15147         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
15148         only calls which are made to native code use this flag.
15149
15150         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
15151
15152 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15153
15154         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
15155         Add support for FieldBuilders.
15156
15157 2005-10-29  Martin Baulig  <martin@ximian.com>
15158
15159         * mono-debug.c
15160         (mono_debug_using_mono_debugger): New public method; returns
15161         whether we're running inside the debugger.
15162
15163 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
15164
15165         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
15166         for Method/Constructor/FieldBuilders.
15167
15168 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15169
15170         * reflection.c (module_add_cattrs): Save custom attributes for global methods
15171         and fields as well.
15172
15173 2005-10-26  Martin Baulig  <martin@ximian.com>
15174
15175         * mono-debug-debugger.c
15176         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
15177
15178 2005-10-24  Raja R Harinath  <harinath@gmail.com>
15179
15180         * icall.c (base64_to_byte_array): Don't pass an out-of-range
15181         integer to isspace.
15182
15183 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15184
15185         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
15186         when passing valuetypes byref. Fixes #76502.
15187
15188 2005-10-19  Jackson Harper  <jackson@ximian.com>
15189
15190         * profiler.c: Don't put a . in front of types that are not in a
15191         namespace.
15192
15193 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15194
15195         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
15196
15197 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
15198
15199         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
15200         #76436.
15201         (mono_marshal_get_ldflda_wrapper): Fix a warning.
15202
15203 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15204
15205         * assembly.c metadata-internals.h icall.c: Define an additional
15206         parameter for mono_assembly_name_parse_full, so we can avoid creating
15207         S.R.AssemblyName.Version when no version info wasn't passed.
15208         
15209 2005-10-09  Miguel de Icaza  <miguel@novell.com>
15210
15211         * class.c (mono_type_get_full_name): Reimplement method that was
15212         removed. 
15213
15214         * image.c: Some docs
15215
15216 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15217
15218         * profiler.c (output_newobj_profile): Fix printing of Total memory
15219         on x86.
15220
15221 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15222
15223         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
15224
15225 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
15226
15227         * threads.c: remove debug output.
15228
15229 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15230
15231         * threads.c (mono_thread_manage): Fix crashes if more than 64
15232         threads need to be aborted. Hopefully fixes #75899.
15233
15234         * assembly.c (mono_stringify_assembly_name): New helper function.
15235
15236         * class.c: Use mono_stringify_assembly_name instead of the similar
15237         static function.
15238
15239         * assembly.h assembly.c: Add support for calling a postload search 
15240         hook if an assembly cannot be loaded.
15241
15242         * appdomain.c: Register new search hooks which call the AssemblyResolve
15243         events in AppDomain. Fixes #75231
15244
15245 2005-10-07  Martin Baulig  <martin@ximian.com>
15246
15247         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
15248         methods without debug info.
15249
15250 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15251
15252         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15253         wrappers.
15254
15255 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15256
15257         * file-io.c: now that we return symlinks, use lstat and, when the file
15258         is a symbolic link, stat, to get the file attributes. Also avoid the
15259         conversion to/from utf16/external.
15260
15261 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15262
15263         * class.c (mono_class_layout_fields): Compute klass->has_references
15264         correctly if an embedded valuetype is not yet initialized. Fixes
15265         #76331.
15266
15267 2005-10-04  Martin Baulig  <martin@ximian.com>
15268
15269         * metadata.c
15270         (mono_metadata_load_generic_param_constraints): New public
15271         function; splitted the constraints loading out from
15272         mono_metadata_load_generic_params().
15273
15274         * class.c (mono_class_create_from_typedef): Call
15275         mono_metadata_load_generic_param_constraints() after setting up
15276         the type and creating our parent; fixes #75329.
15277
15278 2005-10-04  Martin Baulig  <martin@ximian.com>
15279
15280         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15281         non-dynamic parent classes.
15282
15283 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15284
15285         * file-io.c : win32 build fix (ETXTBSY seems not found).
15286
15287 2005-10-04  Martin Baulig  <martin@ximian.com>
15288
15289         * reflection.c
15290         (mono_image_get_methodspec_token): Make the cache actually work;
15291         fixes #75974.
15292
15293 2005-10-04  Martin Baulig  <martin@ximian.com>
15294
15295         * class.c (mono_class_name_from_token): Removed the unneccessary
15296         `MonoGenericContext *' argument.
15297
15298 2005-10-04  Martin Baulig  <martin@ximian.com>
15299
15300         * loader.c
15301         (method_from_methodspec): Make the caching work again; fixes the
15302         performance regression from #76262.
15303
15304 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15305
15306         * file-io.c:
15307         * file-io.h:
15308         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15309         GetFileSystemEntries that performs the same work but without going
15310         into io-layer, locking, etc.
15311
15312 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15313
15314         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15315         ThreadState_Stopped as well. Fixes #76047.
15316
15317 2005-09-29  Martin Baulig  <martin@ximian.com>
15318
15319         * class.c
15320         (inflate_generic_context): If the new context has a `gmethod', set
15321         its `container' that that gmethod's `container'.
15322
15323         * metadata.c
15324         (mono_metadata_parse_generic_param): Simplify things;
15325         `generic_container = generic_context->container;' is just fine.
15326
15327         * loader.c (method_from_methodspec): Code cleanups.
15328
15329 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15330
15331         * decimal.c: fix warning (and let gcc generate correct
15332         code on ARM with optimizations).
15333
15334 2005-09-28  Martin Baulig  <martin@ximian.com>
15335
15336         * loader.c
15337         (method_from_memberref): Added `MonoGenericContext *class_context'
15338         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15339         (method_from_methodspec): If we're a memberref, use the enclosing
15340         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15341
15342 2005-09-28  Martin Baulig  <martin@ximian.com>
15343
15344         * object.c (mono_runtime_invoke_array): Added support for
15345         MONO_TYPE_GENERICINST; fixes #75917.
15346
15347 2005-09-27  Martin Baulig  <martin@ximian.com>
15348
15349         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15350         `k->byval_arg.type' to determine the actual type.
15351
15352         * loader.c (method_from_methodspec): Removed some hacks.
15353
15354 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15355
15356         * class-internals.h (mono_field_is_deleted): Do the test for
15357         rtspecialname before we check the actual name of the field. This
15358         prevents us from dereferencing a pointer into the string table,
15359         saving us from accessing a few pages
15360
15361         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15362         macros. This will allow a deadlock debugger to easily be plugged
15363         in.
15364
15365 2005-09-27  Martin Baulig  <martin@ximian.com>
15366
15367         * loader.c (method_from_methodspec): Create a "signature"
15368         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15369
15370 2005-09-27  Martin Baulig  <martin@ximian.com>
15371
15372         * class.c
15373         (inflate_generic_class): Correctly set the new context's
15374         container.
15375
15376         * loader.c
15377         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15378         instead of a `MonoGenericContext *'.
15379         (mono_method_signature_full): Take a `MonoGenericContainer *'
15380         instead of a `MonoGenericContext *'.
15381
15382         * metadata.c
15383         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15384         instead of a `MonoGenericContext *'.
15385         (mono_metadata_parse_method_signature_full): Likewise.
15386
15387 2005-09-26  Martin Baulig  <martin@ximian.com>
15388
15389         * class.c
15390         (mono_class_from_generic_parameter): Set `klass->generic_container'
15391         (mono_class_from_generic_parameter): Likewise.
15392         (mono_bounded_array_class_get): We inherit the generic container
15393         from the element class.
15394
15395         * loader.c
15396         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15397         argument rather than computing it here.
15398         (method_from_memberref): Correctly set the generic context before
15399         parsing the signature.  Fixes #75681.
15400
15401 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15402
15403         * object.c (mono_class_has_special_static_fields): Fix warnings.
15404
15405 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15406
15407         * assembly.c: Add parse_public_key function, to
15408         par the public keys. Also added mono_assembly_name_parse_full,
15409         to define it the parsed key should be freed or not.
15410         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15411         to parse a long format assembly name.
15412         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15413         private, since calling it to preserve the key requires
15414         freeing it manually.
15415         
15416 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15417
15418         * locales.c : removed HAVE_ICU part.
15419
15420 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15421
15422         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15423         field_is_special_static if the klass has no special static fields.
15424
15425         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15426         (MonoCachedClassInfo): Likewise.
15427
15428         * object.c (mono_class_has_special_static_fields): New helper function.
15429
15430 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15431
15432         * class.c (mono_class_create_from_typedef): Don't call 
15433         interfaces_from_typedef_full for enums.
15434         (mono_class_create_from_typedef): Compute the base types of enums directly
15435         without calling mono_class_setup_fields ().
15436         (mono_class_find_enum_basetype): New helper function.
15437
15438         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15439         one place inside the string heap.
15440         
15441 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15442
15443         * class.c: locking fixes, code cleanups, some docs added.
15444         Allocate some data structures in the image mempool.
15445
15446 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15447
15448         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15449         the example code.
15450         
15451 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15452
15453         * class-internals.h, class.c, reflection.c: reduce memory taken by
15454         MonoClass.
15455
15456 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15457
15458         * metadata.c, metadata.h, loader.h: documentation updates, code and
15459         API cleanups.
15460
15461 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15462
15463         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15464         the example code.
15465
15466         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15467         page faults caused by the runtime while reading metadata.
15468
15469 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15470
15471         * socket-io.c: the field names were changed 3 months ago and no one
15472         realized until bug #76077 got filed!
15473
15474 2005-09-20  Martin Baulig  <martin@ximian.com>
15475
15476         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15477
15478 2005-09-20  Martin Baulig  <martin@ximian.com>
15479
15480         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15481         write the rank into the class entry.
15482
15483 2005-09-20  Martin Baulig  <martin@ximian.com>
15484
15485         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15486
15487 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15488
15489         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15490
15491         * icall.c (custom_attrs_defined_internal): New icall.
15492
15493         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15494         function.
15495         (mono_custom_attrs_construct_by_type): New helper function.
15496
15497 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15498
15499         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15500         terminate the resulting string. Fixes #76123.
15501
15502 2005-09-16  Martin Baulig  <martin@ximian.com>
15503
15504         * mono-debug.c
15505         (mono_debug_add_method): Ignore inflated methods for the moment.
15506
15507 2005-09-14  Martin Baulig  <martin@ximian.com>
15508
15509         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15510
15511 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15512
15513         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15514         return a success/failure indication.
15515         (mono_metadata_interfaces_from_typedef_full): Ditto.
15516         (get_constraints): Ditto.
15517
15518 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15519
15520         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15521         
15522         * marshal.c (emit_marshal_array): Add support for returning string
15523         arrays from delegates. Fixes #76063.
15524
15525         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15526
15527 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15528
15529         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15530         icall.
15531
15532 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15533
15534         * reflection.c icall.c: Fix after mono_get_exception_type_load
15535         signature change.
15536
15537         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15538         (mono_assembly_load_reference): Use the new helper.
15539
15540         * class-internals.h (MonoLoaderError): New structure containing 
15541         information about type loading errors.
15542
15543         * class-internals.h loader.c: Add APIs to store per-thread loader
15544         error information.
15545
15546         * loader.c class.c: Set the loader error if needed.
15547
15548         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15549
15550 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15551
15552         * decimal.c: fixed to handle the broken ARM fp format.
15553
15554 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15555
15556         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15557         broken.
15558
15559 2005-09-06  Martin Baulig  <martin@ximian.com>
15560
15561         * domain.c (supported_runtimes): Added v2.0.50727.
15562
15563 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15564
15565         * culture-info.h: reduce the size of some structures.
15566
15567 2005-09-05  Martin Baulig  <martin@ximian.com>
15568
15569         Reflect latest API changes in the August CTP.
15570
15571         * icall.c
15572         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
15573         ("MonoType.HasGenericArguments"): Removed.
15574         ("MonoMethod.BindGenericParameters"): Renamed to
15575         "MakeGenericMethod".
15576         ("MethodBuilder.BindGenericParameters"): Renamed to
15577         "MakeGenericMethod".    
15578
15579 2005-09-05  Martin Baulig  <martin@ximian.com>
15580
15581         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
15582
15583 2005-09-05  Martin Baulig  <martin@ximian.com>
15584
15585         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15586
15587         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
15588         generic_container is non-NULL.
15589
15590 2005-09-05  Martin Baulig  <martin@ximian.com>
15591
15592         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15593
15594         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
15595
15596 2005-08-29  Michal Moskal  <malekith@nemerle.org>
15597
15598         * reflection.c (encode_locals,
15599         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
15600         for large generic types.
15601
15602 2005-09-05  Martin Baulig  <martin@ximian.com>
15603
15604         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15605
15606         * class.c (mono_dup_array_type): New public method.
15607         (mono_metadata_signature_deep_dup): New public method.
15608         (dup_type): Correctly duplicate array and function types.
15609
15610 2005-09-05  Martin Baulig  <martin@ximian.com>
15611
15612         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15613
15614         * reflection.c (get_default_param_value_blobs): Handle generic types
15615         and generic methods.
15616
15617 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
15618
15619         * class.c: Fixed error reporting (method/class were inversed) for 
15620         inheritance demands.
15621         * security-manager.c|h: Added the AppDomain when calling the managed
15622         System.Security.SecurityManager.InheritanceDemand method.
15623
15624 2005-09-01  Raja R Harinath  <rharinath@novell.com>
15625
15626         * reflection.c (encode_marshal_blob): 'marshaltype' and
15627         'marshaltyperef' are alternate sources for the custom marshaler
15628         name.
15629
15630 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
15631
15632         * class.c: fix creation of array classes with rank == 1
15633         (patch by Ankit Jain <jankit@novell.com>).
15634
15635 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
15636
15637         * object.c: fix check for creating the bound data for arrays vs
15638         szarrays.
15639
15640 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15641
15642         * object.c: configuration file name is now based on the executable name,
15643         not the image name. Fixes bug #75931.
15644
15645 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15646
15647         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
15648         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
15649
15650 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15651
15652         * rand.c: Use wincrypt.h instead of WinCrypt.h.
15653
15654 2005-08-24  Ankit Jain  <jankit@novell.com>
15655             Raja R Harinath  <rharinath@novell.com>
15656
15657         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
15658           called by it recursively.
15659           (mono_class_init): Remove special case in pending_init handling, since it's
15660           superseded by the fix to mono_class_from_typeref.
15661
15662 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15663
15664         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
15665         BROKEN_THREAD_START stuff.
15666
15667 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15668
15669         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
15670         trampoline.
15671
15672         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
15673         
15674         * object.c (mono_delegate_ctor): Replace the original function address with
15675         a delegate trampoline.
15676
15677 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
15678
15679         * icall.c: add boolean argument to base64_to_byte_array and 
15680         InternalFromBase64String to control whether a whitespace-only string
15681         is allowed (or should casue a FormatException to be thrown). We need
15682         this as the behavior has changed between MS.NET 1.x and 2.0, and we
15683         to match the MS behaviour in both profiles.
15684         * appdomain.c: Bump corlib version.
15685
15686 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15687
15688         This patch implements a big portion of publisher policy
15689         support, used to bind assembly versions and redirect
15690         one assembly from version A to version B.
15691
15692         * assembly.c:
15693         New GSList loaded_assembly_bindings, for storing the cached
15694         assembly bindings.
15695         (assembly_binding_maps_name): New static function for checking if a 
15696         assembly binding information maps an assembly name.
15697         (mono_assembly_binding_info_free): New function for freeing
15698         assembly binding information resources.
15699         (get_publisher_policy_info): New static function for retrieving 
15700         assembly binding information from a MonoImage.
15701         (compare_versions): New static function for comparing an assembly
15702         binding information data and the version of an assembly name.
15703         (check_policy_versions): New static function for checking if an
15704         assembly binding info mapping an assembly name is valid for it.
15705         (mono_assembly_load_publisher_policy): New static function for
15706         loading the 'policy.major.minor.MyAssembly' image for an assembly
15707         with an assembly name 'aname'.
15708         (mono_assembly_bind_version): New static function for updating
15709         assembly redirection.
15710         (mono_assembly_apply_binding): New static function for applying
15711         assembly binding.
15712         (search_binding_loaded): New static function for searching 
15713         loaded assembly binding infos in the cache domain.
15714         (mono_assembly_load_full): Don't apply assembly binding for
15715         reflection only assemblies.
15716
15717         * metadata-internals.h: Add MonoAssemblyBindingInfo,
15718         which contains information about assembly binding. Also
15719         declare signature for mono_config_parse_publisher_policy ()
15720         function, used to retrieve pub policy info.
15721         
15722         * mono-config.c:
15723         (publisher_policy_start): New static function used to parse publisher 
15724         policy config files.
15725         (publisher_policy_parser): New static MonoParseHandler containing 
15726         the functions used when parsing config files.
15727         (mono_config_parse_publisher_policy): New function for parsing
15728         publisher policy files.
15729         
15730 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15731
15732         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
15733
15734         * marshal.c (mono_delegate_free_ftnptr): Ditto.
15735
15736         * object.c (mono_get_addr_from_ftnptr): New helper function.
15737
15738         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
15739
15740         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15741
15742 2005-08-19  Dick Porter  <dick@ximian.com>
15743
15744         * threads.c, threads.h, appdomain.c, appdomain.h,
15745         profiler-private.h, monitor.c, object.c, object-internals.h,
15746         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
15747         store the thread ID, so it can hold a 64 bit value if needed.
15748
15749 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15750
15751         * reflection.c (mono_reflection_create_dynamic_method): Store the
15752         handle class into the method references as well so ldtoken works in
15753         dynamic methods.
15754
15755         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
15756         types.
15757
15758 2005-08-19  Ankit Jain <jankit@novell.com>
15759
15760         Fix #75847.
15761         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
15762           here rather than using the method signature of a arbitrary function
15763           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
15764           two arguments.
15765           Hack done with Harinath.
15766
15767 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15768
15769         * threadpool.c: disable printing stack traces when we get a exception
15770         in a threadpool thread. I need to do more testing to figure out which
15771         cases actually print this. Fixes bug #75828.
15772
15773 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15774
15775         * icall.c: there might be ignored whitespace after the last '='. This
15776         fixes length computation and bug #75840.
15777
15778 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
15779
15780         * assembly.c (mono_assembly_load_full): Consider .exe extension as
15781         well. Fixes #75809.
15782
15783         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
15784         #75784.
15785         
15786         * reflection.c (create_custom_attr_data): Ditto.
15787
15788 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
15789
15790         * locales.c, culture-info.h : removed RegionLCIDMap.
15791         * culture-info-tables.h : regenerated.
15792
15793 2005-08-16  Martin Baulig  <martin@ximian.com>
15794
15795         * class.c (mono_type_get_name_recurse): Small fix.
15796
15797 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
15798
15799         * locales.c : indentation fixie.
15800
15801 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
15802
15803         * object-internals.h,
15804           locales.h,
15805           locales.c,
15806           culture-info.h,
15807           icall.c : added RegionInfo table support.
15808         * culture-info-table.h : regenerated for region support.
15809
15810 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
15811
15812         * reflection.c (resolve_object): handle all kinds of MonoMethod
15813         including generic ones
15814
15815 2005-08-12  Ankit Jain <jankit@novell.com>
15816
15817         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
15818           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
15819
15820 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
15821
15822         * process.c: Don't close a thread handle when it's NULL. This is a
15823         workaround for bug #75733.
15824
15825 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15826
15827         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
15828
15829 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
15830
15831         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
15832
15833 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15834
15835         * threadpool.c: if a work item in the thread pool has a callback that
15836         catches a exception, don't propagate it after invoking the callback.
15837         Fixes bug #75336.
15838
15839 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15840
15841         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
15842
15843         * class-internals.h (MonoCachedClassInfo): Add some new fields.
15844
15845         * class.c (mono_class_init): Load field info lazily in the AOT case.    
15846
15847         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
15848
15849 2005-08-03  Ankit Jain  <jankit@novell.com>
15850
15851         Fix #75683.
15852         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
15853           PInvoke calling convention is 0.
15854
15855 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
15856
15857         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
15858         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
15859
15860 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
15861
15862         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
15863         to handle threads not started by the GC (patch by Michael Meeks
15864         <michael.meeks@novell.com>).
15865
15866 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
15867
15868         * reflection.c: Make buffer used in emitting types larger for some
15869         big generic types (patch by Michal Moskal).
15870
15871 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15872
15873         * mono-debug.c: Fix some (not all) alignment problems.
15874
15875 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15876
15877         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
15878         Invoke mono_image_load_from_data_full passing the refonly
15879         parameter.
15880
15881         * assembly.c
15882         (mono_assembly_open_from_bundle): Add the refonly argument, 
15883         in order to pass it to other methods it calls to.
15884         (do_mono_assembly_open): Add the refonly argument, in order 
15885         to pass it to other methods it calls to.
15886         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
15887         the refonly parameter to it.
15888
15889         * image.c: Add loaded_images_refonly_hash and
15890         loaded_images_refonly_guid_hash to cache the reflection
15891         only loaded images.
15892         (mono_images_init): Initialize the hash tables used for
15893         caching the reflection only images.
15894         (load_modules): Invoke mono_image_open_full passing the refonly
15895         parameter to load the modules the correct way.
15896         (build_guid_table): Add the refonly argument, to re-build the 
15897         correct hash table.
15898         (do_mono_image_open): Added the refonly argument, in order to
15899         define it for the loaded image.
15900         (mono_image_loaded_full): New function, which receives an
15901         additional parameter to look for the image in the refonly or
15902         non-refonly section.
15903         (mono_image_loaded): Updated, using mono_image_loaded_full.
15904         (mono_image_loaded_by_guid_full): The same case that happens
15905         with mono_image_loaded_full.
15906         (mono_image_loaded_by_guid): Likewise.
15907         (register_image): Use the ref_only variable inside MonoImage
15908         to decide in which hash table store the current image.
15909         (mono_image_open_from_data_full): Rename
15910         mono_image_open_from_data to mono_image_open_from_data_full,
15911         adding the refonly argument, to define the ref_only variable 
15912         inside MonoImage.
15913         (mono_image_open_from_data): Return 
15914         mono_image_open_from_data_full.
15915         (mono_image_open_full): Rename mono_image_open to
15916         mono_image_open_full, receiving the new refonly argument,
15917         to pass it to inner methods.
15918         (mono_pe_file_open): Update this function, to open
15919         a MonoImage as a non-refonly image.
15920         (mono_image_close): Use the refonly variable inside
15921         MonoImage to remove the image from the correct caches.
15922
15923         * image.h: Add the signatures of mono_image_open_full,
15924         mono_image_open_from_data_full, mono_image_loaded_full,
15925         mono_image_loaded_by_guid_full.
15926
15927         * metadata-internals.h: Add the ref_only field to 
15928         MonoImage.
15929         
15930 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15931
15932         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
15933         Fix the last behavior, which used to load the assemblies and
15934         extract MonoReflectionAssemblyName information, instead of
15935         extract it from the metadata tables. Needed for Reflection
15936         Only assemblies.
15937         
15938 2005-07-29  Martin Baulig  <martin@ximian.com>
15939
15940         * mono-debug-debugger.c
15941         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
15942         not initialized.
15943
15944         * mono-debug.c
15945         (mono_debug_address_from_il_offset): Check whether we have
15946         debugging support before attempting to take the lock.
15947         (mono_debug_source_location_from_address): Likewise.
15948         (mono_debug_source_location_from_il_offset): Likewise.
15949         (mono_debug_il_offset_from_address): Likewise.
15950         (mono_debug_address_from_il_offset): Likewise.
15951
15952 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
15953
15954         * class.c (mono_class_from_name_case): Add support for dynamic images.
15955         Fixes #75650.
15956
15957         * object.c (mono_class_compute_gc_descriptor): Add a workaround
15958         for #75479.
15959
15960 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15961         
15962         * reflection.c (mono_method_get_object): Fix warning.
15963
15964 2005-07-28  Martin Baulig  <martin@ximian.com>
15965
15966         * mono-debug.c
15967         (mono_debug_add_wrapper): Also write the wrapper type.
15968
15969 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15970
15971         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
15972         
15973         * class.c (mono_class_init): Avoid reading nested classes if the AOT
15974         data indicates the class has none.
15975
15976 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
15977
15978         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
15979         loader lock with the debugger lock. Prevents deadlocks for beagle.
15980
15981         Beagle can now run on an smp box for a weekend without any
15982         issues. Woohoo!
15983
15984 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
15985
15986         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
15987         in a module. Fixes #75629.
15988
15989 2005-07-26  Martin Baulig  <martin@ximian.com>
15990
15991         * mono-debug.c (mono_debug_add_wrapper): New static method.
15992         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
15993         interncall or a wrapper.
15994
15995         * mono-debug.h (MonoDebugWrapperData): New public typedef.
15996         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
15997         (MONO_DEBUGGER_VERSION): Bump to 51.
15998
15999         * mono-debug-debugger.c
16000         (mono_debugger_add_type): Removed this empty function.
16001         (mono_debugger_add_method): Likewise.
16002
16003 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16004
16005         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
16006         before accessing method->slot.
16007
16008 2005-07-21  Jb Evain  <jbevain@gmail.com>
16009
16010         * reflection.c (method_encode_clauses/class): Handle filters clauses.
16011         Fixes #75010.
16012
16013 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16014
16015         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
16016         #75587.
16017
16018 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16019
16020         * image.h image.c: Add mono_image_get_guid () API function.
16021
16022 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
16023
16024         There were issues when multiple threads tried to load
16025         assemblies. A deadlock was created between assemblies_mutex and
16026         mono_domain_assemblies_lock. This fixes the issue by making the
16027         assembly ref counting be lock free. See bug 75586.
16028         
16029         * image.c (mono_image_close): The add ref function here was using
16030         Interlocked operations while the unref was using a mutex and a
16031         --. I don't think this was ever a bug that would be exposed in a
16032         non-pendantic way (ie, by an embedder doing a ref on one thread
16033         and an unref on another), but for the sake of correctness, this is
16034         now Interlocked.
16035
16036         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
16037         (mono_assembly_load_reference): Call mono_assembly_addref rather
16038         than touching the refcount ourselves.
16039         (mono_assembly_close): Use InterlockedDecrement to unref the
16040         assembly. Don't acquire the lock unless it is actually needed.
16041
16042 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16043
16044         * class.c (mono_class_layout_fields): Fix calculation of has_references
16045         for generic types.
16046
16047 2005-07-12  Martin Baulig  <martin@ximian.com>
16048
16049         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16050
16051         * metadata.c
16052         (mono_type_hash): Provide better hashing for generic instances.
16053         (mono_generic_inst_hash): Improve hashing.
16054         (mono_generic_class_hash): Likewise.
16055
16056         * reflection.c (mymono_metadata_type_hash): Improve hashing for
16057         generic instances.
16058
16059 2005-07-12  Martin Baulig  <martin@ximian.com>
16060
16061         * reflection.c (mono_reflection_create_runtime_class): Remove the
16062         hack for generic type definitions and non-`Run' assemblies.
16063         (mono_reflection_bind_generic_parameters): Also use
16064         `klass->wastypebuilder' to check for TypeBuilders.
16065
16066 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16067
16068         * class.c (mono_class_layout_fields): Fix calculation of has_references
16069         for generic types.
16070
16071         * class.c (inflate_generic_class): Fix a leak.
16072         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
16073         for generic types.
16074
16075 2005-07-11  Martin Baulig  <martin@ximian.com>
16076
16077         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
16078         on error.
16079
16080 2005-07-11  Martin Baulig  <martin@ximian.com>
16081
16082         * loader.c (find_method): Also lookup in
16083         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
16084
16085 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16086
16087         * appdomain.c (mono_domain_unload): Don't free the error message
16088         before passing it to mono_get_exception_...
16089
16090         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
16091         
16092 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
16093
16094         * threads.c: try to better guess an available RT signal (bug #75387).
16095
16096 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16097
16098         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
16099         and CACHE_OBJECT.
16100
16101 2005-07-07  Martin Baulig  <martin@ximian.com>
16102
16103         * class.c (mono_type_get_name_full): Return NULL for
16104         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
16105         fixes #75408.
16106
16107 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16108
16109         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
16110         exit the appdomain as well being aborted.
16111
16112         * threadpool.c: Create all threadpool threads inside the root appdomain, and
16113         change back to the root domain after calling managed code. This enables
16114         appdomains using threadpools to be unloaded.
16115
16116 2005-07-07  Martin Baulig  <martin@ximian.com>
16117
16118         * class-internals.h
16119         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
16120         into `MonoDynamicGenericClass' since we only need it for dynamic
16121         types.
16122
16123         * reflection.c (mono_class_bind_generic_parameters): We don't need
16124         to compute the `parent' here.
16125
16126 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
16127
16128         * culture-info-table.h : regenerated.
16129
16130 2005-07-06  Martin Baulig  <martin@ximian.com>
16131
16132         * icall.c
16133         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
16134
16135         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
16136
16137 2005-07-06  Martin Baulig  <martin@ximian.com>
16138
16139         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
16140         we're doing a signature-only comparision; fixes #74945.
16141
16142 2005-07-06  Martin Baulig  <martin@ximian.com>
16143
16144         * class-internals.h (MonoGenericClass): Moved some things out into
16145         a new `MonoInflatedGenericClass' type.  
16146         (MonoInflatedGenericClass): New type; the `klass' of a
16147         `MonoGenericClass' is now computed lazyly in
16148         mono_get_inflated_generic_class().      
16149
16150         * class.c (mono_get_inflated_generic_class): New public function.
16151         (mono_class_inflate_generic_method): Removed the unused
16152         `MonoClass *' argument.
16153         (setup_generic_vtable): Don't call mono_get_inflated_method() on
16154         all the methods.
16155         (mono_class_create_generic): Make this static and merge it with
16156         mono_class_create_generic_2(); we're now called automatically from
16157         mono_get_inflated_generic_class().
16158
16159         * loader.c (mono_method_signature): Call
16160         mono_get_inflated_method() here.
16161
16162 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
16163
16164         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
16165         type of fields with RVA.
16166
16167         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
16168         for this pseudo class.
16169         (my_mono_class_from_generic_parameter): Likewise.
16170         (mono_class_init): Allow interfaces to have cctors.
16171
16172 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16173
16174         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
16175         lazily for AOT methods.
16176
16177 2005-07-05  Martin Baulig  <martin@ximian.com>
16178
16179         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
16180         returns FALSE for a successful match, not TRUE.
16181
16182 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16183
16184         * loader.c (mono_method_get_index): Optimize this a bit.
16185
16186 2005-07-04  Martin Baulig  <martin@ximian.com>
16187
16188         * class.c
16189         (class_compute_field_layout): Move the check for generic type
16190         definitions into mono_class_layout_fields().  Fixes #74684.
16191         (mono_class_from_generic_parameter): Correctly compute
16192         `klass->parent'; fixes #75457.
16193
16194         * reflection.c (register_assembly, register_module): Make sure
16195         `domain->rejobject_hash' is already created.
16196
16197 2005-07-02  Martin Baulig  <martin@ximian.com>
16198
16199         * class-internals.h
16200         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
16201         `MonoDynamicGenericClass'.      
16202
16203 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
16204
16205         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
16206         returned by a field getter is null, since null is a valid value.
16207
16208 2005-07-01  Martin Baulig  <martin@ximian.com>
16209
16210         * reflection.c (mono_reflection_generic_class_initialize): Update
16211         the `dgclass->fields [i].parent' to the correct class.
16212         (mono_image_get_fieldref_token): Use the declaring type, not the
16213         reflected type.
16214
16215 2005-07-01  Martin Baulig  <martin@ximian.com>
16216
16217         * loader.c (find_method): Also look in the interfaces; fixes #75429.
16218
16219 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
16220
16221         * threads.c (thread_cleanup): assert that thread != NULL
16222         (wait_for_tids_or_state_change): We were using the wrong variable
16223         when accessing wait->threads. `i' was always out of the bounds of
16224         the array.
16225
16226 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16227
16228         * loader.c: map user32 and kernel32 to libMonoSupportW
16229
16230 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16231
16232         * appdomain.c (unload_thread_main): Mark this as WINAPI.
16233
16234 2005-06-28  Martin Baulig  <martin@ximian.com>
16235
16236         * loader.c (method_from_methodspec): Fix #75334.
16237
16238 2005-06-28  Martin Baulig  <martin@ximian.com>
16239
16240         Fix #74953 - Arrays now implement the generic IList<T> interface
16241         on the 2.0 platform.
16242
16243         * class-internals.h (MonoDefaults): Added `generic_array_class'.
16244
16245         * reflection.c (mono_class_bind_generic_parameters): New public
16246         function; similar to mono_reflection_bind_generic_parameters(),
16247         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
16248
16249         * domain.c (mono_init_internal): Try to initialize.
16250         `mono_defaults.generic_array_class' here; this'll only succeed if
16251         we're using the 2.0 corlib.
16252
16253         * icall.c
16254         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16255         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16256         (mono_lookup_internal_call): Added support for nested classes.
16257
16258         * loader.c
16259         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16260         we're an interncall and have generic arguments.
16261
16262         * class.c
16263         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16264         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16265         instance of System.Array.InternalArray<T> for arrays, so they
16266         implement the generic IList<T> interface.
16267
16268 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16269
16270         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16271         (chastamar@yahoo.com). Fixes #75374.    
16272
16273 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16274
16275         * culture-info-table.h: regenerated.
16276
16277 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16278
16279         * icall.c: handle spaces correctly for base64 strings.
16280
16281 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16282
16283         * *.c: Kill some warnings.
16284
16285 2005-06-23  Duncan Mak  <duncan@novell.com>
16286
16287         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16288         that this builds on Solaris 10 (x86).
16289
16290 2005-06-23  Martin Baulig  <martin@ximian.com>
16291
16292         * class.c
16293         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16294         generic type definitions.
16295
16296 2005-06-23  Martin Baulig  <martin@ximian.com>
16297
16298         Fix #75331.
16299
16300         * metadata.c (mono_class_get_overrides): Renamed to
16301         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16302         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16303         pass it to mono_get_method_full().
16304
16305 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16306
16307         * reflection.c (mono_reflection_create_runtime_class): take the
16308         mono_domain_lock in this method. Prevents deadlocks
16309
16310 2005-06-22  Martin Baulig  <martin@ximian.com>
16311
16312         * loader.c (method_from_methodspec): Fix #75330.
16313
16314 2005-06-22  Martin Baulig  <martin@ximian.com>
16315
16316         * reflection.c (type_get_qualified_name): Use
16317         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16318         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16319         argument; use it if we don't have an assembly name.
16320
16321 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16322
16323         * object.c: In mono_message_init, set "copy out" flag for in
16324         parameters with the [Out] flag.
16325
16326 2005-06-21  Martin Baulig  <martin@ximian.com>
16327
16328         * class.c
16329         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16330         and MONO_TYPE_PTR.
16331
16332 2005-06-21  Martin Baulig  <martin@ximian.com>
16333
16334         * class.c (mono_class_init): Don't initialize `class->fields' for
16335         generic instances since they're initialized again in
16336         compute_field_layout(). 
16337         (compute_field_layout): Set the field's `generic_info' here; fix
16338         #75320. 
16339
16340 2005-06-21  Martin Baulig  <martin@ximian.com>
16341
16342         * class-internals.h
16343         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16344
16345         * metadata.c (mono_metadata_generic_method_equal): Also
16346         distinguish the `generic_class'; fixes #75334.
16347
16348 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16349
16350         * domain.c:
16351         * appdomain.c:
16352         * domain-internals.h:
16353         * reflection.c: 'domain_assemblies' field is now protected by its own
16354         lock. Don't call into managed code to run the AssemblyLoad event if we
16355         now there are no registered delegates for it.
16356
16357 2005-06-20  Martin Baulig  <martin@ximian.com>
16358
16359         * class.c (mono_class_is_assignable_from): Use a custom version of
16360         mono_class_has_parent() to make things work for generic instances;
16361         fix #75300.
16362
16363 2005-06-20  Martin Baulig  <martin@ximian.com>
16364
16365         * loader.c (method_from_methodspec): Apply a patch from
16366         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16367
16368 2005-06-20  Martin Baulig  <martin@ximian.com>
16369
16370         * class.c (mono_class_init): Reverted Zoltan's last change; it
16371         breaks generics.
16372
16373 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16374
16375         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16376
16377 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16378
16379         * socket-io.c: fix the index in the socket array for writable/error
16380         sockets. Fixes bug #75306.
16381
16382 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16383
16384         * class.c (mono_class_init): Allow interfaces to have static ctors.
16385
16386 2005-06-17  Martin Baulig  <martin@ximian.com>
16387
16388         * loader.c (method_from_methodspec): Use `context->container' when
16389         parsing the `gmethod->inst'.
16390
16391 2005-06-17  Martin Baulig  <martin@ximian.com>
16392
16393         * class.c (mono_type_get_name_recurse): Don't add the assembly
16394         name for type arguments.
16395
16396 2005-06-15  Martin Baulig  <martin@ximian.com>
16397
16398         * reflection.c (mono_image_get_inflated_method_token): Encode
16399         correct klass; fixes #75260.
16400
16401 2005-06-13 Michal Moskal <malekith@nemerle.org>
16402
16403         * icall.c: Make GetCorrespondingMethod/Constructor take
16404         MonoReflectionMethod method not MonoMethod. Removed
16405         MonoType.GetCorrespondingField, and make
16406         MonoGenericType.GetCorrespondingField take name not
16407         MonoClassField.
16408
16409 2005-06-13  Michal Moskal <malekith@nemerle.org>
16410
16411         * reflection.c (field_encode_signature, encode_locals):
16412          Make sizes of buffers for types larger (for big generic types).
16413          (create_generic_typespec,
16414          mono_reflection_sighelper_get_signature_local,
16415          mono_reflection_sighelper_get_signature_field):
16416          Add asserts for too small buffers.
16417
16418 2005-06-15  Martin Baulig  <martin@ximian.com>
16419
16420         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16421         if our parent is not a dynamic type.
16422
16423 2005-06-15  Martin Baulig  <martin@ximian.com>
16424
16425         * class-internals.h (MonoTypeNameFormat): New enum.
16426
16427         * class.c
16428         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16429         (mono_type_get_full_name): Removed.
16430         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16431         argument instead of the boolean's.
16432
16433         * icall.c (ves_icall_System_MonoType_getFullName):
16434         Added `gboolean assembly_qualified'.    
16435
16436         * reflection.h
16437         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16438
16439         * reflection.c (mono_reflection_parse_type): Parse the new type
16440         name format.
16441
16442 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16443
16444         * icall.c: no need to convert from utf16 to utf8 and then back again
16445         after the call to GetLogicalDrives.
16446
16447 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16448
16449         * icall.c: frombase64. Fix problems exposed by new tests.
16450
16451 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16452
16453         * icall.c: added internal calls for converting char [] and strings in
16454         base64 into byte [].
16455
16456 2005-06-10  Martin Baulig  <martin@ximian.com>
16457
16458         * class.c (mono_class_create_generic_2): Read the nested classes
16459         from the metadata rather than from `gklass->nested_classes' since
16460         `gklass' might not be initialized yet.
16461
16462 2005-06-09  Duncan Mak  <duncan@novell.com>
16463
16464         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16465         all public headers. Fixes #74919.
16466
16467 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16468
16469         * domain.c: The key for proxy_vtable_hash is now a pointer
16470         array. Added new GHashFunc and GCompareFunc functions for this.
16471
16472         * class.h: The list of interfaces in MonoRemoteClass is known in
16473         advance and can't grow (we create a new MonoRemoteClass if needed),
16474         so now the interface array can be allocated together with
16475         MonoRemoteClass.
16476         
16477         * object.c: Added a new method create_remote_class_key.
16478         Fixed mono_remote_class so it does not depend on
16479         mono_upgrade_remote_class.
16480         Removed extend_interface_array.
16481         Added new method clone_remote_class(), which makes a copy of a remote
16482         class and adds a new interface or class to it.
16483         mono_upgrade_remote_class() now creates a new remote class (or gets
16484         it from the cache) if an vtable upgrade is needed. In this way
16485         we make sure that other objects sharing the same remote class
16486         don't get the new vtable with unwanted interfaces.
16487         
16488         * object-internals.h:
16489         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16490         
16491         * marshal.c: Track changes in mono_upgrade_remote_class().
16492
16493 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16494         * icall.c: Add runtime methods for obtaining members of inflated
16495         class, which were created from supplied non-inflated members. It
16496         is used in internal Get{Method,Constructor,Field} methods in
16497         System.Type
16498
16499 2005-06-09  Martin Baulig  <martin@ximian.com>
16500
16501         * reflection.c
16502         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16503
16504 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16505         * reflection.c (mono_image_basic_init): Define
16506         Version in MonoDynamicAssembly. 
16507         
16508 2005-06-08  Martin Baulig  <martin@ximian.com>
16509
16510         Fix #75136.
16511
16512         * loader.c
16513         (mono_method_signature_full): New public method; takes a
16514         `MonoGenericContext *'.
16515         (find_method): Use mono_method_signature_full() and pass the
16516         klass'es context to it.
16517
16518         * class.c (mono_class_is_inflated_method): Use
16519         mono_method_signature_full() and pass the context to it.
16520
16521 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16522
16523         * object.c: add proper locking in mono_remote_class_vtable(),
16524         fixes possible memory corruption.
16525
16526 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16527
16528         * marshal.c (mono_remoting_marshal_init): set
16529         initialized after initialization.
16530
16531 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16532
16533         * locales.c : hush.
16534
16535 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16536
16537         * object.c (extend_interface_array): fix really silly
16538         memory corrupting / comparison bug.
16539
16540 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16541
16542         * reflection.c: Functions added to support the creation
16543         of CustomAttributeData, which includes Attribute data
16544         used by ReflectionOnly methods.
16545
16546         * reflection.h:  mono_reflection_get_custom_attrs_data and
16547          mono_custom_attrs_data_construct added (functions exposed).
16548
16549          * icall.c: Added mono_reflection_get_custom_attrs_data
16550          as icall.
16551         
16552 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16553
16554         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16555         lupus's request.
16556
16557 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16558
16559         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16560
16561         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16562         dynamic DllImportAttribute.
16563
16564         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16565         dynamic DllImportAttribute.
16566
16567         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
16568         Fixes #75162.
16569
16570 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16571
16572         * threads.c: avoid segfault when an unstarted thread is aborted.
16573
16574 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
16575
16576         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
16577         Returns the name and version of the runtime for reporting.
16578
16579 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16580
16581         * appdomain.c: bump corlib version.
16582         * object-internals.h: new field in MonoReflectionAssembly.
16583
16584 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16585
16586         * object-internals.h: Carlos forgot to add this field.
16587
16588 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16589
16590         * icall.c: Added create_version to create instances
16591         of Version of MonoReflectionAssemblyName. This change helps
16592         the AssemblyName tests to keep running fine.
16593         
16594 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
16595   
16596         * object.c (mono_method_return_message_restore): A somehow less
16597         intrusive fix for #75138.
16598
16599 2005-06-03  Raja R Harinath  <rharinath@novell.com>
16600
16601         * object.c (mono_method_return_message_restore): Fix computation
16602         of expected number of out args.
16603
16604 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16605
16606         * reflection.c (mono_image_get_method_info): Fix the case when the
16607         charset is empty.
16608
16609 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
16610
16611         * object.c: Added missing null check in
16612           mono_method_return_message_restore.
16613
16614 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16615
16616         * reflection.c (mono_image_get_method_info): Handle the case when
16617         dllentry is empty.
16618
16619 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
16620
16621         * object.c: When creating the vtable for a proxy, take into account
16622         all inherited interfaces, not only the ones registered in
16623         iclass->interfaces. This fixs bug #74996.
16624         Also, in mono_method_return_message_restore, verify that the array
16625         of out args has the expected lengh.
16626
16627 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16628
16629         * socket-io.c: update the timeout in Poll when the call is interrupte.
16630
16631 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16632
16633         * socket-io.c: support abort/suspend in Select_internal after last
16634         change.
16635
16636 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16637
16638         * threadpool.c: remove warning.
16639
16640 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16641
16642         * icall.c:
16643         * socket-io.[ch]: Select_internal uses poll() now when available, thus
16644         removing the 1024 limit from select(). Runtime part of the fix for
16645         bug #71203.
16646
16647 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16648
16649         * socket-io.c: when resolving the addresses for the same
16650         host returned by gethostname(), get the local IPs from the interface
16651         list. Loopback addresses are discarded if the are interfaces up with
16652         non-loopback ones. Fixes bug #63265.
16653
16654 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
16655
16656         * appdomain.c, verify.c, object-internals.h, reflection.c:
16657         bumped corlib number to 36, and added new extra_flags field
16658         to ReflectionMethodBuilder and friends.  Fixes #75060.
16659
16660 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
16661
16662         * gc.c: register a new weak link only if the object is non-null
16663         (fixes bug#75047).
16664
16665 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16666
16667         * culture-info.h : short time pattern too.
16668
16669 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16670
16671         * culture-info.h : expand long time pattern string length.
16672
16673 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16674
16675         * culture-info-table.h : update (more French date format; #72788).
16676
16677 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
16678
16679         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
16680         the method is static. Fixes #75029.
16681
16682 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
16683
16684         * reflection.c: Update the table_idx field of method builders after
16685         saving the module, since it can change. This is a workaround for
16686         bug #74914. 
16687
16688 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16689
16690         * culture-info-table.h : update (additional French date format).
16691
16692 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16693
16694         * icall.c (ves_icall_type_Equals): Revert last change.
16695         
16696         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
16697
16698         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
16699
16700 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
16701
16702         * class-internals.h: Added executioncontext_class field to 
16703         MonoDefaults structure.
16704         * domain.c: Cache System.Threading.ExecutionContext class in 
16705         mono_defaults.
16706         * object.c: Capture the ExecutionContext for asynchroneous calls in
16707          mono_async_result_new.
16708         * object-internals.h: Added execution_context and original_context 
16709         fields to MonoAsyncResult. Added execution_context to MonoThread.
16710         * security-manager.c|.h: Added mono_get_context_capture_method to 
16711         return the capture method (if required by the security manager or by
16712         the framework version used).
16713         * threadpool.c: Apply capture (if present) ExecutionContext in 
16714         mono_async_invoke and revert to original context after it completes.
16715
16716 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
16717
16718         * culture-info-table.h : updated (real hacky solution for zh-CHT).
16719
16720 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
16721
16722         * culture-info-table.h : zh-CHT related workaround.
16723
16724 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16725
16726         * marshal.c (emit_marshal_custom): Add some error checking and call the
16727         methods in the ICustomMarshaler interface. Fixes #74875.
16728         
16729         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
16730         native->managed wrappers.
16731
16732 2005-05-12  Martin Baulig  <martin@ximian.com>
16733
16734         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
16735         here and use the loader lock.
16736
16737         * mono-debug.c: Properly lock when the debugger is not attached.
16738         (mono_debug_init): Release the initial lock if we're not running
16739         in the debugger.
16740
16741 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16742
16743         * marshal.c (emit_marshal_custom): Pass through NULL values without
16744         calling the custom marshalling routines.
16745
16746         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
16747         conversion in structures. Fixes #74882.
16748
16749 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
16750
16751         * culture-info-table.h : zh-* cultures were missing.
16752
16753 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
16754
16755         * threads.c: Added a new event background_change_event which is signaled
16756         when a thread changes its background mode.
16757         Moved here several checks previously done in managed code. The checks
16758         require the thread lock, and using the thread lock in managed code
16759         can result in deadlocks.
16760         Merged Start_internal and Thread_internal into a single method. Now 
16761         Thread_internal does all work of creating and starting a thread.
16762         Added icalls for setting and getting the state of the object. Moved from
16763         managed code to avoid locking there.
16764         Added wait_for_tids_or_state_change() which is called instad of
16765         wait_for_tids when waiting for non-backround threads to end. This method
16766         will return if one of the threads ends or the background_change_event
16767         is signaled.
16768         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
16769         the background mode. This method signals the background_change_event
16770         event.
16771         * icall.c:
16772         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
16773         removed Start_internal.
16774         
16775 2005-05-11  Martin Baulig  <martin@ximian.com>
16776
16777         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
16778         to order of some fields to get proper alignment on 64-bit machines.
16779
16780 2005-05-11  Martin Baulig  <martin@ximian.com>
16781
16782         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
16783         changes as they're broken and completely fuck up the debugger.
16784
16785         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
16786
16787 2005-05-10  Martin Baulig  <martin@ximian.com>
16788
16789         * reflection.c (mono_reflection_generic_class_initialize): Don't
16790         call mono_class_setup_parent() here.
16791
16792 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16793
16794         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
16795         send/receive timeout use an integer in milliseconds. We were using a
16796         struct timeval.
16797
16798 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16799
16800         * locales.c:
16801         (internal_get_cultures): reserve the first slot of the array for the
16802         InvariantCulture, which will be filled in managed code.
16803
16804 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
16805
16806         * reflection.c (mono_image_fill_module_table): Initialize the
16807         GENERATION field as well.
16808
16809 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16810
16811         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
16812         Monitor.Enter on the object.
16813
16814 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16815
16816         * threads.c: Enable the wait for running threads when exiting.
16817         * icall.c: Suspend all threads before exiting.
16818
16819 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16820
16821         * assembly.c (mono_assembly_load_reference): Fix warning.
16822
16823 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16824
16825         * threadpool.c: changed the default number of threads per cpu. From now
16826         on, the default will be 20 + (5 * number of cpus) instead of 50.
16827
16828 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
16829
16830         * loader.c (mono_method_get_signature_full): Add locking here.
16831
16832 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
16833
16834         * appdomain.c: Moved methods for parsing and freeing assembly
16835         names to assembly.c.
16836         * assembly.c, domain-internals.h: Created public methods for parsing
16837         assembly names. Fixed mono_assembly_load_with_partial_name:
16838         it now finds the best match, taking into account the version,
16839         token and culture specified in the partial name. Also return
16840         the latest version if no version information is specified.
16841
16842 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
16843
16844         * threadpool.c: replace check for SocketAsyncCall class.
16845
16846 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16847
16848         * threadpool-internals.h:
16849         * Makefile.am: added threadpool-internals.h
16850
16851         * threadpool.c: call mono_unhandled_exception on exceptions not handled
16852         that happen in threadpool threads (tested on MS).
16853         (mono_thread_pool_remove_socket): new function that dispatch any pending
16854         AIO call on a socket that is closing. By now only epoll really needs it,
16855         as select/poll wake up when the socket closes.
16856
16857
16858         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
16859
16860 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
16861
16862         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
16863
16864 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
16865
16866         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
16867
16868 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
16869
16870         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
16871         has an abort request, convert it into a suspend request.
16872
16873 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
16874
16875         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
16876         warning for the usage of `UnmanagedFunctionPointerAttribute' which
16877         is not supported yet.
16878
16879 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16880
16881         * image.c: register assemblies loaded from data (bundles) in the loaded
16882         assemblies hash. Fixes bug #74772.
16883
16884 2005-04-29  Martin Baulig  <martin@ximian.com>
16885
16886         * class.c (mono_type_get_name_recurse): Update to the new naming
16887         schema from the latest .NET 2.x beta2.
16888         (mono_class_setup_vtable_general): If we're a generic instance,
16889         copy the vtable from our generic type definition and inflate all
16890         the methods in it.
16891
16892         * loader.c (find_method): Update to the new naming schema from the
16893         latest .NET 2.x beta2.
16894
16895 2005-04-29  Raja R Harinath  <harinath@gmail.com>
16896
16897         * class.c (mono_class_init): Add a mono_loader_unlock to the
16898         #74734 fix.
16899
16900 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16901
16902         * icall.c (ves_icall_System_Environment_Exit): Remove the 
16903         suspend_all_other_threads () call for the time being, since it can hang.
16904
16905         * threads.c (mono_thread_manage): Similarly, disable the waiting for
16906         the background threads to exit, since it can also hang.
16907
16908         * class.c (mono_class_init): Applied patch from Ankit Jain 
16909         (radical@gmail.com). Avoid pending init errors when a field refers
16910         to a nested class using a typeref. Fixes #74734.
16911
16912         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
16913         this for dynamic modules.
16914
16915 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16916
16917         * threads.c: don't wait for threads that are in the process of aborting
16918         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
16919         and waiting for background threads to finish. This makes xsp and
16920         mod-mono-server exit without random length delays and/or hangs.
16921
16922 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16923
16924         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
16925
16926 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
16927
16928         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
16929         dynamic types to prevent infinite loops. Fixes #74727.
16930
16931         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
16932         ..._is_assignable_to.
16933
16934 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
16935
16936         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
16937
16938 2005-04-25  Martin Baulig  <martin@ximian.com>
16939
16940         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
16941
16942         * domain.c
16943         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
16944
16945         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
16946
16947         * reflection.c (build_compressed_metadata): Set metadata header
16948         version to 2.0.
16949
16950 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16951
16952         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
16953         number into an integral and a decimal part. Fixes #70473.
16954
16955         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
16956
16957 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
16958
16959         * culture-info-table.h : reflected the latest locale-builder output.
16960
16961 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16962
16963         * threadpool.c: check for SuspendRequested too when deciding if
16964         mono_thread_interruption_checkpoint should be called.
16965
16966 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16967
16968         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
16969         * threads.c: remove interruption_mutex and use Interlocked instead. When
16970         suspending all the threads, wait for all the suspended events at once.
16971         If we're shutting down and get an APC that is going to be queued,
16972         call mono_thread_execute_interruption immediately, as the thread might
16973         be sleeping on a pthread condition or mutex.
16974
16975         * icall.c: call mono_runtime_set_shutting_down before suspending the
16976         threads.
16977
16978         Fixes bug #74693. And now xsp is happier when exiting.
16979
16980 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16981
16982         * loader.c (mono_stack_walk): Fix #74690.
16983
16984 2005-04-22  Martin Baulig  <martin@ximian.com>
16985
16986         * mono-debug.h (MonoDebugMethodJitInfo): Added
16987         `MonoDebugMethodJitInfo *jit'.
16988
16989         * mono-debug.c (mono_debug_read_method): Cache the
16990         MonoDebugMethodJitInfo in `address->jit'.
16991         (mono_debug_free_method_jit_info): New public method.
16992
16993 2005-04-22  Martin Baulig  <martin@ximian.com>
16994
16995         * class.c (mono_class_is_assignable_from): Disallow
16996         type parameter -> interface.
16997
16998 2005-04-21  Dick Porter  <dick@ximian.com>
16999
17000         * threads.c (mono_thread_create): Turn an assertion into an error.
17001
17002 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17003
17004         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
17005         
17006         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
17007         Fix some gcc 4.0 warnings.
17008
17009 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
17010
17011         * file-io.c: fix alt dir separator char on unix systems
17012         and cleanup (fixes bug #71214).
17013
17014 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
17015
17016         * marshal.c: Use CALLVIRT instead of CALL when dispatching
17017         a call to a remote domain, since the method may be an
17018         interface method in the client domain. This fixes bug #74192.
17019
17020 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17021
17022         * threadpool.c: recv/send are now performed before going back to managed
17023         code to save one transition.
17024
17025 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17026
17027         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
17028
17029         * metadata/threadpool.c: removed hack to workaround the bug above.
17030
17031         Fixes bug #74618.
17032
17033 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17034
17035         * reflection.c reflection.h: Fix handling of parameter defaults in
17036         dynamic methods. Also fixes handling of parameter attributes.
17037         Fixes #74609.
17038
17039         * mono-debug.c (mono_debug_close_image): Fix warning.
17040
17041 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17042
17043         * socket-io.h: replaced old unused field with new 'blocking'.
17044         * threadpool.c: restore socket blocking state on windows(tm).
17045
17046 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
17047
17048         * icall.c: don't return the codebase in the AssemblyName[] returned by
17049         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
17050         * object-internals.h: Removed FIXME (fields were presents) and fixed
17051         versioncompat declaration.
17052
17053 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17054
17055         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
17056         not closed, so don't cleanup when it happens.
17057
17058 2005-04-13  Chris Toshok  <toshok@ximian.com>
17059
17060         * mono-debug-debugger.h: change prototype for
17061         mono_debugger_lookup_type.
17062
17063         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
17064         this function, although it should probably be named
17065         mono_debugger_init_type.
17066
17067 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17068
17069         * threadpool.c: fix non-AIO case.
17070
17071 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17072
17073         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
17074         the built-in profiler to measure just JIT compilation times.
17075
17076 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17077
17078         * threadpool.c: the epollfd might be closed by another thread at
17079         any time, so ignore EBADF at treat it as a "we're closing" sign.
17080
17081 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17082
17083         * threadpool.c: release the semaphores with a count equals to the number
17084         of working threads in both IO and regular pools. Fixed typo that messed
17085         up the count of IO pool threads. Don't initialize the pipe handles if
17086         we're using epoll.
17087
17088 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17089
17090         * threadpool.c: some systems don't like a NULL when deleting the socket
17091         from epoll.
17092
17093 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17094
17095         * threadpool.c: fix semaphore allocation.
17096
17097 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17098
17099         * threadpool.c: added epoll() based implementation for asynchronous IO
17100         that is used instead of the default poll() when available.
17101         It can be disabled by setting MONO_DISABLE_AIO.
17102
17103 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17104
17105         * threadpool.c: windows needs 'closesocket' and instead of returning
17106         0 when the stream is closed while in select, it returns -1. Fixes bug
17107         #74573.
17108
17109 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
17110
17111         * class.c (class_compute_field_layout): Fix the regression caused by
17112         the previous try.
17113
17114 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17115
17116         * threadpool.c: separate pool for socket async. IO.
17117         * threadpool.h: mono_max_worker_threads is not a global any more.
17118
17119 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17120
17121         * class.c (class_compute_field_layout): Fix #74549.
17122
17123 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17124
17125         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
17126         use 2 connected sockets instead.
17127
17128 2005-04-08  Miguel de Icaza  <miguel@novell.com>
17129
17130         * mono-config.c: Add new entry point for mkbundle
17131         mono_config_parse_memory. 
17132
17133 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17134
17135         * threadpool.c: removed another unused function.
17136
17137 2005-04-08  Ankit Jain  <radical@corewars.org>
17138
17139         * reflection.c (get_default_param_value_blobs): Add 'types'
17140         parameter to get the types encoded in the constant table.
17141         (mono_param_get_objects): Use the type from the constant table,
17142         not the type of the parameter, when creating default values.
17143         Handle null default values correctly.
17144
17145 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17146
17147         * file-io.c:
17148         * file-io.h:
17149         * threadpool.c:
17150         * threadpool.h:
17151         * icall.c:
17152         * socket-io.c: removed dead code for async IO.
17153
17154 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17155
17156         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
17157
17158         * threadpool.c: intercept socket async. calls and pass them to a thread
17159         that is polling and dispatching the job items to the threadpool as
17160         socket become ready. Fixes bugs #71217, #71933.
17161
17162         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
17163         between char and short/ushort arrays.
17164
17165         * socket-io.c: remove dead code.
17166
17167 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17168
17169         * locales.c,
17170           icall.c : removed InternalToUpper_Comp() and
17171           InternalToLower_Comp().
17172
17173 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17174
17175         * char-conversions.h : The tables were incorrectly generated. Should
17176           be generated against invariant culture.
17177
17178 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17179
17180         * object.c (mono_runtime_invoke_array): Fix return value when 
17181         passing pre-created valuetype objects to ctors.
17182
17183         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
17184         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
17185         Fixes #74338.
17186
17187 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
17188
17189         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
17190         only used with --security and hides the wrong corlib version error.
17191
17192 2005-03-30  Joshua Tauberer  <tauberer@for.net>
17193
17194         * class.c: Changed mono_class_name_from_token so that types
17195         outside of a namespace don't have an initial period.  Improved
17196         the g_warning message used in _mono_class_get when loading
17197         fails.
17198         * assembly.c: In mono_assembly_load_reference, when an assembly
17199         can't be found, "No such file or directory" is misleading and
17200         unhelpful because a few paths were checked for the presence of
17201         the assembly.  When that happens (ENOENT), display a nicer
17202         message indicating the directories that were searched.  In all
17203         cases, the warning is made easier to read for non-hackers.
17204
17205 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17206
17207         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
17208         project/solution.
17209         * appdomain.h|domain.c: Removed inline from functions.
17210         * appdomain.c: Reduced warnings when compiling on windows.
17211         * icall.c: Fixed output_debug declaration to gunichar2*.
17212         * mono-config.c: Reduced warnings when compiling on windows.
17213         * rand.c: Added missing "windows.h". Added missing return value.
17214         * rawbuffer.c: Added missing winsock2.h for windows.
17215         * sysmath.h: Added mono-compiler.h header to allow/ease 
17216         compilation with non-GCC compilers.
17217         * threads.c: Fixed declarations to compile with VS.NET C compiler.
17218         Removed cast warnings.
17219
17220         Adapted from the work of J Lothian (for VC6).
17221
17222 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17223
17224         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
17225         from default_path.
17226
17227 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17228
17229         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
17230         the 2.0 profile.
17231
17232 2005-03-27  Raja R Harinath  <harinath@gmail.com>
17233
17234         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
17235         has to be in $(exec_prefix).  $(prefix) is for arch-independent
17236         stuff, and it would probably use $(prefix)/share rather than
17237         $(prefix)/lib.
17238
17239 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17240
17241         * console-io.c: added 2 includes that might be missing.
17242
17243 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17244
17245         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
17246         profile.
17247
17248         * reflection.c (create_custom_attr): Allocate the params array using
17249         alloca so it gets GC tracking.
17250
17251 2005-03-23  Chris Toshok  <toshok@ximian.com>
17252
17253         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17254         out some spew.
17255
17256 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17257
17258         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17259         changes to pick up any changes in prefix, etc.
17260
17261 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17262
17263         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17264         
17265         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17266         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17267
17268 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17269
17270         * class-internals.h object-internals.h class.c reflection.c: Extend the
17271         mono_lookup_dynamic_token () function to return the class of the
17272         token as well. 
17273
17274         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17275         well. Fixes #73848.
17276
17277 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17278
17279         * security-manager.c: Skip inheritance checks for intra-corlib
17280         class inheritance and method overrides. This skips a lot of checks
17281         and (anyway) permissions cannot work until corlib is loaded.
17282
17283 2005-03-23  Martin Baulig  <martin@ximian.com>
17284
17285         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17286         MONO_TYPE_GENERICINST.  
17287
17288 2005-03-23  Martin Baulig  <martin@ximian.com>
17289
17290         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17291
17292 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17293
17294         * class.c: added locking comments to some functions.
17295         Cache the interface offsets arrays (saves about 20 KB
17296         of runtime memory in a typical app).
17297         Reduce the time overhead in mono_class_setup_supertypes ().
17298
17299 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17300
17301         * icall.c: speedup and fix leaks in GetMethodsByName and
17302         GetPropertiesByName.
17303
17304 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17305
17306         * reflection.c: some locking fixes.
17307
17308 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17309
17310         * metadata.c: added missing break in case statement.
17311
17312 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17313
17314         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17315         typedbyref return values. Fixes #73941.
17316
17317 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17318
17319         * security-manager.c|h: Added demandunmanaged method and 
17320         suppressunmanagedcodesecurity class to MonoSecurityManager.
17321         Renamed aptc class to allowpartiallytrustedcallers.
17322
17323 2005-03-17  Martin Baulig  <martin@ximian.com>
17324
17325         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17326
17327 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17328
17329         * file-io.c: disabled file async. IO using aio_*. It uses the
17330         threadpool now. Workaround for bug #73718.
17331
17332 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17333
17334         * assembly.h, mono-config.c: added code to deal with bundled configs
17335         for bundled assemblies.
17336
17337 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17338
17339         * *.c, private.h: cleanup, removing old private.h header file.
17340
17341 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17342
17343         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17344         and throw_on_unmappable_char attributes.
17345
17346 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17347
17348         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17349         _ProcessName_internal.
17350
17351 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17352
17353         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17354         #73631.
17355
17356         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17357         are no longer used.
17358
17359 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17360
17361         * object.c (compute_class_bitmap): Add support for generics. Fixes
17362         #73527.
17363
17364 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17365
17366         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17367
17368 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17369
17370         * filewatcher.c: commented out the code for windows watcher, as we don't
17371         use it (we use the managed implementation instead).
17372
17373 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17374
17375         * object-internals.h (MonoThread): Remove 'unused1' field.
17376
17377         * appdomain.c: Bump corlib version.
17378
17379         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17380
17381         * reflection.c (mono_reflection_create_runtime_class): Remove the
17382         AssemblyBuilder.Save optimization since it causes too many problems.
17383
17384 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17385
17386         * exception.c|h: Added mono_get_exception_reflection_type_load to
17387         create a ReflectionTypeLoadException object.
17388         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17389         to return NULL is a InheritanceDemand fails during reflection. Updated
17390         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17391         ReflectionTypeLoadException if an InheritanceDemand fails during 
17392         reflection. Added icall mapping for GetLinkDemandSecurity.
17393         * security-manager.c|h: Added ves_icall_System_Security_
17394         SecurityManager_GetLinkDemandSecurity internal call to return the
17395         class and methods permissions set for a LinkDemand. Removed unused
17396         fields in MonoSecurityManager.
17397
17398 2005-03-10  Martin Baulig  <martin@ximian.com>
17399
17400         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17401         it's a generic instance.
17402
17403 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17404
17405         * reflection.c (mono_get_object_from_blob): Applied patch from
17406         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17407
17408         * class.c (mono_class_is_assignable_from): Another try at fixing 
17409         #73469 without breaking anything.
17410
17411 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17412
17413         * class.c: (mono_class_is_assignable_from): Revert the last changes
17414         since they don't work with generics.
17415         
17416         * class.c (mono_class_is_assignable_from): Fix build bustage.
17417
17418         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17419         the managed IsAssignableFrom method. Fixes #73469.
17420
17421         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17422         function.
17423
17424 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17425
17426         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17427         memory when the remoting callback does not sets the out arguments.
17428         Fixes #73007.
17429
17430         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17431         by mistake.
17432
17433         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17434
17435         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17436
17437         * appdomain.c: Bump corlib version.
17438
17439 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17440
17441         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17442         function.
17443
17444         * threads.c (mono_thread_attach): Detect threads which are not started
17445         by the GC pthread wrappers.
17446
17447 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17448
17449         * icall.c: Added new icall for RNG.
17450         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17451         single handle on Linux to access /dev/urandom and fix #73183.
17452
17453 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17454
17455         * object.c: setting the new vtable in a transparent proxy object must
17456         not change the GC descriptor.
17457
17458 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17459
17460         * object.c: fixed compilation without GCJ support.
17461         * reflection.c: for runtime-created types ensure klass->has_references
17462         is correct (bug #73215).
17463
17464 2005-03-02  Martin Baulig  <martin@ximian.com>
17465
17466         * class.c (mono_class_is_assignable_from): Make this work if
17467         `oklass' is a generic instance; fixes #72831.
17468
17469 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17470
17471         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17472         with hasthis set.
17473         
17474         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17475
17476         * marshal.c: Reorganize native->managed marshalling code to also use
17477         the emit_marshal_... functions.
17478
17479 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17480
17481         * object.c: typed allocs have issues with bitmap sizes > 30,
17482         so check for max_set >= 30.
17483
17484 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17485
17486         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17487         managed code. Fixes #73012.
17488
17489         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17490
17491         * metadata.c reflection.c: Load/Emit elem_mult as well.
17492         
17493         * metadata.h (MonoMarshalSpec): Add comment.
17494
17495         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17496
17497         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17498         num_elem to -1 if not given.
17499
17500         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17501
17502         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17503         given values.
17504
17505 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17506
17507         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17508
17509 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17510
17511         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17512
17513         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17514
17515 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17516
17517         * object.c: generalized the reference bitmap creation
17518         and added hooks for the new GC.
17519         * class-internals.c: removed the gc_bitmap field from MonoClass.
17520
17521 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17522
17523         * domain.c: help the compiler to produce better code
17524         in mono_jit_info_table_find ().
17525
17526 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17527
17528         * object.c: make all allocations look typed.
17529
17530 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17531
17532         * socket-io.c: load Mono.Posix if it's not loaded already
17533         (fixes bug#73033).
17534
17535 2005-02-24  Martin Baulig  <martin@ximian.com>
17536
17537         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17538         * reflection.c (dup_type): Likewise.
17539
17540 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17541
17542         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17543         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17544
17545 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17546
17547         * domain.c, threads.c, object-internals.h: make the critical thread
17548         local vars use the fast access mode (even when we're compiled in
17549         a lib). Provide accessors to be used by the jit during codegen.
17550
17551 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17552
17553         * appdomain.c: Changed hook functios behavior to include
17554         support for the reflection only assemblies. Some icalls were changed
17555         to support the mentioned assemblies too. Signatures of static methods
17556         try_assembly_resolve and real_load now have an additional parameter:
17557         refonly.
17558
17559         * assembly.c: General changes to mono_assembly_ methods to support
17560         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17561         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17562         suffix, to support an additional gbool parameter to specify whether
17563         the assembli is reflection only or not. Created some new hook functions 
17564         to add support for reflection only assemblies. Signatures of static 
17565         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
17566         have now an additional parameter: refonly.
17567
17568         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
17569         indicating whether the assembly is reflection only or not.
17570
17571         * exception.c: Add mono_get_exception_invalid_operation.
17572
17573         * icall.c: Throw an InvalidOperationException when trying to invoke
17574         a property/method/event, or trying to set/get the value of a field.
17575         Also add an icall to retrieve the ref_only flag to the
17576         MonoReflectionAssembly.
17577
17578 2005-02-23  Chris Toshok  <toshok@ximian.com>
17579
17580         Part of fix for #72827.
17581         * mono-debug.c (mono_debug_add_method): add lexical block data to
17582         the info we write.  Kind of a hack at the moment - we copy the
17583         lexical block info from the MonoDebugMethodInfo to the
17584         MonoDebugMethodJitInfo here, before writing it.
17585         (mono_debug_read_method): read the lexical block info.
17586
17587         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
17588
17589         * debug-mono-symfile.h: add lexical block support.
17590
17591         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
17592         support.
17593
17594 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17595
17596         * loader.c (mono_lookup_pinvoke_call): Fix warning.
17597
17598         * object.c (mono_runtime_free_method): Call mono_free_method () and
17599         put the TODOs there.
17600
17601         * loader.c (mono_free_method): Free up most memory allocated for 
17602         dynamic methods.
17603
17604 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17605
17606         * reflection.c: properly flag a Type argument to a
17607         named custom attr value (bug #72248).
17608
17609 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17610
17611         * reflection.c: reduce code duplication in named custom
17612         attribute encoding.
17613
17614 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
17615
17616         * reflection.c: properly encode custom attrs of type object
17617         (bug #72649).
17618
17619 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17620
17621         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
17622
17623 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
17624
17625         * socket-io.c: load System.dll if it's not loaded already
17626         (bug #72850 and #70477).
17627
17628 2005-02-21  Martin Baulig  <martin@ximian.com>
17629
17630         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17631         generic instances.
17632
17633 2005-02-21  Martin Baulig  <martin@ximian.com>
17634
17635         * reflection.c (mono_image_build_metadata): We also need to
17636         "fixup" the MethodImpl table after we computed the final method
17637         indices.  Call fixup_methodimpl() to do that.
17638         (fixup_methodimpl): New private method.
17639
17640 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17641
17642         * assembly.c: special case mscorlib.dll (bug#72536),
17643         patch from Carlos Alberto Cortez.
17644
17645 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17646
17647         * threads-types.h threads.c: Fix build bustage.
17648
17649         * threads.c: Use a union for long<->double conversions.
17650
17651         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
17652         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
17653
17654         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
17655         containing the checkpoint call with NOT_TAKEN.
17656         
17657         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
17658         checkpoint before pushing the arguments, so they won't have to be
17659         spilled to stack.
17660
17661 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17662
17663         * domain.c, assembly.c, domain-internals.h: make some data
17664         const and relocation-free.
17665
17666 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17667
17668         * object.c, appdomain.c, class-internals.h: introduce the
17669         MonoClassRuntimeInfo structure to hold the info needed to
17670         use a class at runtime. Made mono_class_vtable() lock-free
17671         for all the appdomains.
17672
17673 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
17674
17675         * metadata-internals.h, image.c: introduce a per-image mempool to
17676         be used for memory that has the same lifetime as the image.
17677
17678 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
17679
17680         * domain.c: In mono_init_internal(), instead of selecting the first
17681         runtime version supported by an executable, get a list of all
17682         supported versions and select the one for which an mscorlib exists
17683         (since even if the runtime supports a given version, it doesn't mean
17684         that the framework for that version is installed).
17685         Modified get_runtimes_from_exe to support this behavior.
17686         In supported_runtimes, added information about additional system
17687         assembly versions.
17688         
17689         * assembly.c: Added support for more than one system assembly version
17690         per runtime version. Updated the assembly list.
17691         In mono_assembly_remap_version, removed the initial version check,
17692         since we don't know to which version we need to compare until we
17693         get the version set on which the assembly is based.
17694         Moved the code for loading corlib into the new method
17695         mono_assembly_load_corlib(), so it can be used by the initialization
17696         code.
17697         
17698         * domain-internals.h: Updated data structures and added declaration
17699         for mono_assembly_load_corlib.
17700
17701 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17702
17703         * reflection.c (resolve_object): Fix the creation of the signature in 
17704         the SignatureHelper case.
17705
17706         * assembly.c (mono_assembly_remap_version): Fix binary search.
17707         
17708 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
17709  
17710         * class.c: Added inheritance check when a method is overloaded (from a
17711         virtual method or when implementing an interface) and when a class is
17712         inherited. Added functions to set a failure for a class and to 
17713         retreive the exception from a failure.
17714         * class-internals.h: Added fields to MonoClass to keep the exception
17715         information status for inheritance (or other exceptions) to be thrown
17716         later (i.e. not at load time).
17717         * object.c: Throw the inheritance SecurityException when a type is to 
17718         be created with either class or method inheritance violations.
17719         * reflection.c|h: Fix when getting declsec from a class. Removed 
17720         unrequired code for class. Improved sanity in parameter naming.
17721         * security-manager.c|h: Added functions to check for class and method
17722         inheritance.
17723
17724 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17725
17726         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
17727         and has_finalize in dynamic types as well.
17728
17729 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
17730
17731         * culture-info-table.h : fixed currency format for en-GB (and so on).
17732
17733 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
17734
17735         * gc.c: ensure the GC handles never have 0 as a value.
17736
17737 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17738
17739         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
17740         a pointer to a struct to unmanaged code. Fixes #72625.
17741
17742 2005-02-16  Martin Baulig  <martin@ximian.com>
17743
17744         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
17745
17746 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17747
17748         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
17749
17750 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17751
17752         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
17753
17754         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
17755         UnmanagedFunctionPointerAttribute, use it for determining calling convention
17756         etc. Fixes #71471.
17757
17758         * reflection.c (mono_custom_attrs_get_attr): New helper function.
17759
17760         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
17761
17762 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
17763
17764         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
17765         changes to make the current context a field in MonoThread.
17766
17767 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17768
17769         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
17770         the last change.
17771         
17772         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
17773         extracted from mono_marshal_get_native_wrapper.
17774
17775         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
17776         to create wrappers around native functions.
17777
17778         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
17779         delegates for arbitrary function pointers. Fixes #71472.
17780
17781 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17782
17783         * threads.c: cleaned up the code a little.
17784
17785 2005-02-15  Martin Baulig  <martin@ximian.com>
17786
17787         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
17788         the data table.
17789
17790         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
17791         allocate larger chunks if needed.
17792
17793 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17794
17795         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
17796         in by mistake.
17797
17798 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
17799
17800         * domain.c: keep the domains in an array and ensure the domain ids
17801         are kept small, so they can be used as indexes to domain-specific data
17802         with a small memory overhead.
17803
17804 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17805
17806         * icall.c: Handle byref types in Type icalls. Fixes #72544.
17807
17808 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
17809
17810         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
17811
17812 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17813
17814         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
17815
17816         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
17817         values.
17818
17819         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
17820         
17821 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17822
17823         * domain-internals.h: add the hashtable here.
17824
17825         * class-internals.h: Remove `info' from MonoMethod
17826
17827         * domain.c: Add a new hashtable, jit_trampoline_hash
17828
17829 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17830
17831         * object.c: don't set the value of static fields
17832         (fixes bug#72494).
17833
17834 2005-02-11  Martin Baulig  <martin@ximian.com>
17835
17836         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
17837         (mono_debug_add_method): Silently ignore the method if it's too big.
17838         (mono_debug_add_type): Likewise.
17839
17840 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
17841
17842         * threads.c, appdomain.c: remove #ifdefs from the code.
17843
17844 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17845
17846         * metadata-internals.h: Added flags to MonoAssembly to cache the most
17847         common security informations. This allows us to stay in unmanaged code
17848         when doing LinkDemand and it's special cases (except for the first 
17849         time for initialization). The flags a very much used with --security.
17850         * reflection.c|h: Added code to get declarative security attributes 
17851         for LinkDemand and InheritanceDemand. This required to refactor the
17852         existing code for Demand.
17853         * security-manager.c|h: Added new method fields for the special cases
17854         of LinkDemand.
17855
17856 2005-02-10  Martin Baulig  <martin@ximian.com>
17857
17858         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
17859         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
17860
17861 2005-02-10  Martin Baulig  <martin@ximian.com>
17862
17863         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
17864         debugging code; this is almost a complete rewrite.
17865
17866         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
17867
17868 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17869
17870         * domain.c, object.h: expose mono_string_equal () and 
17871         mono_string_hash ().
17872         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
17873         it's implemented in managed code.
17874
17875 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17876
17877         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
17878         lo leak objects between appdomains.
17879
17880 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17881
17882         * assembly.c: old compilers compilation fix from 
17883         robertj@gmx.net (Robert Jordan).
17884
17885 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
17886
17887         * class-internals.h: Little reminder for the future.
17888
17889         * debug-helpers.c: Fix up wrapper_type_names
17890
17891 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17892
17893         * image.c, metadata-internals.h: when loading an image from a file,
17894         mmap all of it and use the same codepaths as when using a
17895         in-memory image: the code is simpler and we use less memory
17896         (both writable and readonly).
17897
17898 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17899
17900         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
17901         API to alloc runtime data structures that need to be tracked by the
17902         GC and contain pointers.
17903         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
17904         make the code more readable and eventually use a different GC.
17905
17906 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
17907
17908         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
17909         for out arguments.
17910         
17911 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
17912
17913         * object.c: In release_type_locks(), don't release the cctor lock
17914         if it has already been released. This fixes a crash in the
17915         thread5 test.
17916
17917 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17918
17919         * gc.c, marshal.c, icall.c: register a delegate for finalization
17920         only when the native function pointer has been allocated for it.
17921
17922 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17923
17924         * object.c: cleaned up some code, allocate objects that are
17925         pointer free with the atomic malloc variant. Allocate memory
17926         for static data from the mempool if it's pointer-free.
17927         Allocate the bounds array at the end of the array data, when needed.
17928         * object-internals.h, object.h: move a private function in a private
17929         header.
17930         * class.c: handle missing case in tracking references in fields.
17931
17932 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
17933
17934         * class.c, class-internals.h: keep track if a type has
17935         reference fields in either the instance or static fields.
17936
17937 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
17938
17939         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
17940         and renamed to MonoRuntimeInfo. Added fields to store the expected
17941         framework assembly version. Changed mono_get_framework_version and
17942         mono_get_runtime_version for a single mono_get_runtime_info method.
17943         
17944         * assembly.c: Added method to remap system assembly versions to the
17945         current executing runtime version. Removed old mapping code.
17946         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
17947         
17948         * icall.c, reflection.c: Track api changes.
17949
17950 2005-02-06  Miguel de Icaza  <miguel@novell.com>
17951
17952         * loader.c (method_from_memberref): Improve error reporting,
17953         produce the class name instead of the typeref/typedef index. 
17954
17955 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
17956
17957         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
17958
17959 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17960
17961         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
17962         stdcall and charset name mangling.  Reorganize the code and add
17963         some tracing stuff.
17964
17965 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17966
17967         * monodiet.c: More iters!
17968
17969         * marshal.c: Iter usage.
17970
17971         * icall.c: Iter usage.
17972
17973         * object.c: Use iters.
17974
17975         * debug-helpers.c: More iters
17976
17977 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17978
17979         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
17980         under win32.
17981
17982 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
17983
17984         * mono-debug-debugger.c: use iters
17985
17986         * class.c, class-internals.h: mono_class_setup_events is static
17987         now
17988
17989         * All callers: use iters
17990
17991 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17992
17993         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
17994         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17995
17996 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17997
17998         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
17999
18000         * marshal.h: Add prototypes for ldfld/stfld_remote.
18001
18002         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
18003         this is called during startup.
18004         
18005 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18006
18007         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
18008         MonoThreadsSync struct private in monitor.c. Changed the way
18009         MonoThreadsSync is allocated so it's faster and there is no
18010         need to keep track of it with a finalizer and it uses less memory.
18011         This also finally allows us to allocate mono objects as ptrfree when
18012         there are no reference fields.
18013
18014 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
18015
18016         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
18017         disappearing link to the GC interface and use them to simplify
18018         the gchandles code.
18019
18020 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18021
18022         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
18023         stfld_remote which call mono_load/store_field_new. This allows methods
18024         calling ldfld/stfld wrappers to be AOTed.
18025
18026         * console-io.c: Include sys/filio.h under solaris.
18027         
18028         * console-io.c: Include curses.h if needed correctly.
18029
18030 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18031         
18032         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
18033         method->klass as well.
18034
18035         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
18036
18037         * class.c (mono_class_init): Switch on lazy initialization of 
18038         methods.
18039
18040         * class.c (mono_class_get_finalizer): Handle the case when the 
18041         finalizer is inherited.
18042
18043 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18044
18045         * console-io.c: <curses.h> is needed by term.h on solaris.
18046
18047 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
18048
18049         * icall.c, class-internals.h, monodiet.c, class.c: Remove
18050         mono_class_setup_properties where possible. Remove this ftn from
18051         the header file, and make it static.
18052
18053 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18054
18055         * loader.c: Add missing setup_... call.
18056
18057         * class.c: Add missing setup_... calls.
18058
18059         * class.c (mono_class_init): Switch on lazy initialization of 
18060         the generic vtable.
18061         
18062         * class.c (mono_class_init): Fix generics broken by the recent changes.
18063
18064         * monodiet.c (handle_type): Add missing setup_... calls.
18065
18066         * class.c: Back out garbage in previous patch.
18067         
18068         * class.c: Add missing setup_... calls.
18069
18070         * class.c (mono_class_get_method_from_name_flags): Avoid calling
18071         mono_class_setup_methods () if possible.
18072
18073         * class-internals.h (MonoClass): Add 'has_cctor' flag.
18074
18075         * class-internals.h (MonoCachedClassInfo): New structure.
18076
18077         * class.c: Initialize properties and events fields of MonoClass lazily.
18078
18079         * class.c: Add infrastructure for lazily initializing the methods and
18080         vtable fields of MonoClass. Not yet used.
18081
18082         * class.c (mono_class_get_finalizer): New helper function.
18083
18084         * class.c: Add infrastructure for loading some class related data from
18085         an AOT file.
18086
18087         * object.c: Add infrastructure for initializing the vtable from data
18088         in the AOT file.
18089
18090         * gc.c (run_finalize): Use mono_class_get_finalizer ().
18091
18092         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
18093         appropriate initialization function before accessing parts of the
18094         MonoClass structure.
18095
18096         * marshal.c: Fix warnings.
18097         
18098         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
18099
18100         * mono-debug-debugger.c (get_exception_message): Use 
18101         mono_class_get_method_from_name_flags ().
18102
18103 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
18104
18105         * reflection.c, appdomain.c: Replace a few manual searches that
18106         Zoltan missed. (Paolo approved this part of my initial patch).
18107
18108 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
18109
18110         * profiler.c: disable recording statistical events at report time.
18111
18112 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18113
18114         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
18115         to byteswap arrays of enum values, too (bug #72080).
18116
18117 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18118
18119         * appdomain.c (set_domain_search_path): Allow this to be called if
18120         domain->setup is not yet set.
18121
18122         * loader.c (mono_method_get_index): New helper function.
18123
18124         * loader.c reflection.c: Use mono_method_get_index ().
18125
18126         * class.c (mono_class_get_method_from_name_flags): New helper method.
18127
18128         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
18129         this.
18130
18131         * class.c (mono_class_get_cctor): New helper method.
18132
18133         * string-icalls.c object.c class.c marshal.c reflection.c: Use
18134         mono_class_get_method () to look up methods.
18135
18136 2005-02-01  Miguel de Icaza  <miguel@novell.com>
18137
18138         * console-io.c: Fix the build, this should work on Windows.
18139
18140 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
18141
18142         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
18143         be set to null to keep things valid
18144
18145 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18146
18147         * icall.c: added Console 2.0 icalls.
18148         * Makefile.am: added console-io.[ch]
18149         * console-io.[ch]: internal calls for Console 2.0 API.
18150
18151 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18152
18153         * class.c: make sure we consider all the interfaces
18154         when calculating max_interface_id (bug found by
18155         Jeroen Frijters running ikvm).
18156
18157 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18158
18159         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
18160         valuetype fields to null.
18161
18162         * object.c (set_value): Ditto. Fixes #71669.    
18163
18164 2005-01-31  Martin Baulig  <martin@ximian.com>
18165
18166         * metadata.c (mono_metadata_has_generic_params): New public
18167         function; checks whether something is a generic method.
18168
18169 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18170
18171         * appdomain.c: fix infinite recursion when adding assemblies.
18172
18173 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
18174
18175         * object.c: Fix small typo to return all items for Environment.
18176         GetCommandLineArgs.
18177
18178 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18179
18180         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
18181         reflection.c: more domain and assembly-unload related fixes
18182         and memory leaks plugs.
18183
18184 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18185
18186         * 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.
18187
18188 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18189
18190         * loader.c (mono_method_signature): Make this method lazy
18191         (mono_get_method_from_token): Don't computate the signature here.
18192
18193         Doing this saves quite a bit of memory. I got 90 kb on starting up
18194         monodoc. It should also save some disk reads on startup.
18195
18196         * *: MonoMethod->signature might be NULL now. You *MUST* use
18197         mono_method_signature.
18198
18199 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
18200
18201         * object.c (mono_runtime_get_main_args): Return an array from the
18202         current domain here. Fixes #71938.
18203
18204 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18205
18206         * monitor.c: formatting changes to comply with the
18207         mono coding style and remove #ifdefs from the code.
18208
18209 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18210
18211         * metadata.c, private.h: remove some unneeded data
18212         and use a more compact representation for table schemas.
18213
18214 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18215
18216         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
18217         to get a better distribution in hash tables.
18218         * *.c: use mono_aligned_addr_hash() where appropriate.
18219         * assembly.c: make var static.
18220
18221 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18222
18223         * domain-internals.h: Put MonoJitInfo on a diet.
18224
18225         * domain.c: Fix a warning.
18226
18227 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18228
18229         * gc.c: rework the gc handles code to reuse handles
18230         when freed.
18231
18232 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18233
18234         * domain.c: fixed long standing bug in mono_string_equal() which
18235         was brought to light with the ldstr changes.
18236
18237 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18238
18239         * reflection.c: Remove warning by adding missing include for marshal.h
18240
18241 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18242
18243         * domain.c, object.c: change the ldstr_table to hold
18244         MonoString* as keys: makes the runtime isinterned lookup
18245         faster and simplifies memory management.
18246
18247 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
18248  
18249         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
18250         possible to add imperative security checks before calling the icall.
18251         * reflection.c: Return security attributes on the original MonoMethod
18252         (and not the wrapped one). This fix permissions on icalls.
18253
18254 2005-01-25  Dick Porter  <dick@ximian.com>
18255
18256         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18257         the check for mktime() support actually test the mktime() return
18258         value.  "Fixes" bug 71682, though the output is still different to
18259         MS.
18260
18261 2005-01-25  Martin Baulig  <martin@ximian.com>
18262
18263         * class.c (mono_class_is_assignable_from): Make this work for
18264         generic instances.
18265
18266 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18267
18268         * marshal.c (mono_string_utf8_to_builder)
18269         (mono_string_builder_to_utf16): We might not have ownership of the
18270         string. In thise case, we need to create a new buffer.
18271
18272         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18273         be null, in which case, use the default capacity.
18274
18275 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18276
18277         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18278         GC events to the profiler.
18279
18280 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18281
18282         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18283         if you don't want the GC to run.
18284
18285 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18286
18287         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18288         start providing a GC API and keeping different implementations in
18289         their own file.
18290         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18291
18292 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18293
18294         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18295         mmap rather than allocating a huge buffer.
18296         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18297         above.
18298
18299 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18300
18301         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18302         and CheckExecutionRights.
18303         * reflection.c|h: Keep the index of the declarative security to be 
18304         used, instead of the pointer, when AOT compiler is used. Also add 
18305         class initialization when requesting demands.
18306         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18307         CheckExecutionRights. Both properties are now FALSE by default, and
18308         unmodifiable, unless the --security option is used.
18309
18310 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18311
18312         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18313         reflection.c: properly refcount images and assemblies, many leaks fixed.
18314
18315 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18316
18317         * threadpool.c: increase the timeout for threads in the thread pool to
18318         10s.  Fixes bug #67159.
18319
18320 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18321
18322         * class-internals.h: Sun's compiler insists on explicit
18323         signed on bit fields to handle then correctly.
18324
18325 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18326
18327         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18328         Make the size of the array fit only the number of invalid path
18329         chars that we have.
18330
18331         * class.c (_mono_class_get): Improve the error reporting when a
18332         class referenced is not found, to assist debugging. 
18333
18334 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18335
18336         * threads.c: fix off-by-one error.
18337         * domain.c: free data allocated in the domain.
18338
18339 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18340
18341         * reflection.c (mono_method_body_get_object): Fill out exception info
18342         as well.
18343
18344         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18345         structure.
18346         
18347 2005-01-19  Martin Baulig  <martin@ximian.com>
18348
18349         * loader.c (mono_get_method_constrained): Make this work again.
18350
18351 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18352
18353         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18354         guint16 to match the managed side.
18355
18356         * reflection.c (mono_reflection_body_get_object): Fill out local
18357         variables array.
18358
18359         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18360         as well.
18361
18362         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18363         'local_var_sig_token'.
18364
18365 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18366
18367         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18368         System.Drawing.
18369
18370         * reflection.c (mono_method_body_get_object): Handle abstract and
18371         runtime methods.
18372
18373 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18374
18375         * marshal.c, loader.c, class-internals.h, reflection.c:
18376         store the emthod data for a wrapper in an array instead of a list.
18377
18378 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18379
18380         * marshal.c: change the code to allocate memory more
18381         conservatively for method wrappers.
18382
18383 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18384
18385         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18386         fields from MonoClass to the marshal info structure where they belong.
18387
18388 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18389
18390         * class.c, object.c, class-internals.h, marshal.c: rearrange
18391         some fields and tweak some types to lower memory usage.
18392
18393 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18394
18395         * threads.c (signal_thread_state_change): Handle the case when the
18396         target thread is the current thread.
18397
18398         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18399
18400         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18401         emit_ptr_to_object_conv. 
18402
18403         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18404         marshalling. Fixes #71352.
18405
18406 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18407
18408         * metadata.h, blob.h: move table enum to blob.h so it can be included
18409         in any header.
18410         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18411         cut the size of MonoImage/MonoDynamicImage.
18412
18413 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18414
18415         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18416
18417 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18418
18419         * reflection.c, reflection.h, icall.c: add a function to check
18420         if an attribute type is defined for a metadata object.
18421
18422 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18423
18424         * object-internals.h: Added some needed fields from StringBuilder class.
18425         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18426
18427 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18428
18429         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18430         threads before shutting down the runtime.
18431
18432         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18433
18434 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18435
18436         * object-internal.h, threads.c: implement stacksize and 
18437         parameterized thread start functionality (requires
18438         matching corlib). Marked broken code for later removal.
18439
18440 2005-01-12  Martin Baulig  <martin@ximian.com>
18441
18442         * class-internals.h (MonoGenericClass): Moved the `initialized'
18443         flag to MonoDynamicGenericClass, removed `init_pending'.
18444         (MonoGenericInst): Added `is_reference' flag.
18445
18446 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18447
18448         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18449         inside the MSDOS header. Fixes #71201.
18450
18451         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18452         gc thread.
18453         (mono_domain_finalize): Ditto.
18454
18455 2005-01-12  Martin Baulig  <martin@ximian.com>
18456
18457         * class.c (mono_get_shared_generic_class): Use the cache for
18458         non-dynamic generic classes.
18459
18460         * class-internals.h (mono_class_create_generic_2): Removed
18461         function prototype, this function is now static inside class.c.
18462
18463         * class.c (mono_class_create_generic_2): Made this static, only
18464         call it from mono_class_init() and mono_class_setup_parent().
18465         (collect_implemented_interfaces_aux): Call mono_class_init() on
18466         the interfaces we collect.
18467         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18468
18469 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18470
18471         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18472         it a real thread handle.
18473
18474         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18475         MonoJitExceptionInfo, since each catch clause needs its own variable.
18476         
18477 2005-01-11  Dick Porter  <dick@ximian.com>
18478
18479         * image.c (mono_pe_file_open): New variant on mono_image_open()
18480         that does not set up the CLI metadata; used for FileVersionInfo so
18481         it can get the data for windows binaries too.
18482         
18483         * process.c (process_read_string_block): Don't read off the end of
18484         the StringTable block.
18485
18486         These both fix bug 70766.
18487
18488 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18489
18490         * gc.c: set some fields to NULL at GC cleanup time.
18491         * threads.c: if we quit the main thread, call exit ().
18492
18493 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18494
18495         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18496
18497 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18498
18499         * threads.h, threads.c, object.c: added accessor and settor for
18500         main_thread. Handle it specially when exiting from it: wait
18501         for other foreground threads to exit.
18502
18503 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18504
18505         * process.c, verify.c: remove some bloat.
18506
18507 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18508
18509         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18510         the calling convention to cdecl under win32.
18511
18512 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18513
18514         * object.c (mono_object_get_size): New function to get the size of
18515         an object instance.
18516
18517         * profiler.c (simple_allocation): Use above.
18518
18519 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18520
18521         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18522         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18523         get an appdomain by it's id and we can't assume the root's id is 0).
18524         * domain-internals.h: Change the function prototype to match.
18525         * icall.c: Change the icall table for AppDomain.
18526
18527 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18528
18529         * locales.c (string_invariant_compare_char): Only compute
18530         GUnicodeTypes in the case where we need them.  Test for ordinality
18531         first and return if so.
18532
18533         From the commit:
18534
18535                 /*
18536                  * FIXME: here we must use the information from c1type and c2type
18537                  * to find out the proper collation, even on the InvariantCulture, the
18538                  * sorting is not done by computing the unicode values, but their
18539                  * actual sort order.
18540                  */
18541
18542 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18543
18544         * loader.c: for P/Invoke methods, allow the "Internal" shared
18545         library name to refer to the calling process symbol namespace.
18546
18547 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18548
18549         * Makefile.am: Add the security manager to the build.
18550         * security-manager.c|h: New. Initialization of the security manager.
18551
18552 2005-01-07  Dick Porter  <dick@ximian.com>
18553
18554         * threads.c: 
18555         * monitor.c: Update thread state during Monitor and WaitHandle
18556         waits.  Fixes bug 71031.
18557
18558 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18559
18560         * reflection.c (property_encode_signature): Correctly handle when the
18561         property has no methods.
18562
18563 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18564
18565         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
18566         
18567         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
18568         fields from mb, not rmb. Fixes #71017.
18569
18570         * marshal.c (emit_ptr_to_str_conv): Add support for 
18571         ByValTStr -> string conversion. Fixes #71015.
18572
18573         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
18574
18575         * mempool.c (mono_mempool_contains_addr): New helper function.
18576
18577 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18578
18579         * metadata.c (mono_metadata_compute_size): Fix size calculation of
18580         HasSematics encoded fields.
18581         
18582         * metadata.c (mono_type_to_unmanaged): Improve error message for 
18583         invalid string marshalling.
18584
18585         * metadata.c: Fix warnings.
18586         
18587 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18588
18589         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
18590         profiler support.
18591
18592 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18593
18594         * domain.c object.c domain-internals.h: Revert part of r38077 since the
18595         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
18596         tests.
18597
18598 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18599
18600         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
18601         so methods containing these can be AOTed.
18602
18603 2005-01-03  Martin Baulig  <martin@ximian.com>
18604
18605         * loader.c (find_method): Removed the hack for generic instances.
18606         (method_from_memberref): If our parent is a generic instance, pass
18607         its generic type definition to find_method() and then inflate the
18608         method.
18609         (mono_get_method_constrained): Pass the generic type definition to
18610         find_method() and inflate the method later.
18611
18612         * class-internals.h (MonoStats): Added `generic_class_count'.
18613
18614         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
18615         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
18616
18617         * reflection.c (mono_custom_attrs_from_params): Don't ignore
18618         generic type definitions.
18619
18620 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18621
18622         * loader.c icall.c: Fix warnings.
18623
18624 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
18625
18626         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
18627         blittable types. Fixes #70864.
18628
18629 2004-12-29  Martin Baulig  <martin@ximian.com>
18630
18631         * icall.c
18632         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
18633
18634         * reflection.c (mono_method_get_object): Create a
18635         "System.Reflection.MonoGenericMethod" for inflated methods; don't
18636         call mono_get_inflated_method().
18637
18638         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
18639
18640 2004-12-27  Martin Baulig  <martin@ximian.com>
18641
18642         * class-internals.h (MonoMethod): Added `is_inflated' flag.
18643         (MonoMethodInflated): Added `inflated' field.
18644
18645         * class.c (mono_class_inflate_generic_method): Don't really
18646         inflate the method here; just set the `is_inflated' flag in the
18647         MonoMethod.
18648         (mono_class_get_inflated_method): Actually inflate the method here
18649         if it's not already inflated; we use the MonoMethodInflated's new
18650         `inflated' field as a cache.
18651
18652 2004-12-26  Martin Baulig  <martin@ximian.com>
18653
18654         * class.c
18655         (inflate_generic_class): Moved some code out of inflate_generic_type().
18656         (mono_class_inflate_generic_method): If we're already inflated,
18657         inflate the context and use the declaring method; ie. make sure
18658         the declaring method of an inflated method is always the generic
18659         method definition.
18660         (mono_class_create_from_typedef): Create
18661         `class->generic_container->context->gclass'.
18662
18663 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18664
18665         * metadata-internals.h, marshal.c, reflection.c: More
18666         MonoGHashTable->GHashTable.
18667
18668         * domain-internals.h, class.c: Change MonoGHashTable's into
18669         GHashTables for some cases where no gc stuff is used
18670
18671         All users: update apis
18672
18673 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
18674
18675         * metadata.c (builtin_types): Make this `const'. Makes this get
18676         put into the shareable section.
18677         (mono_metadata_init): Casts to make gcc happy.
18678
18679 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
18680
18681         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
18682
18683 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
18684
18685         * icall.c: Added an internal call to retrieve the position and length
18686         of assembly-level declarative security attributes (RequestMinimum, 
18687         RequestOptional and RequestRefuse). This is used by the Assembly class
18688         to re-create the corresponding permission sets.
18689
18690 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18691
18692         * marshal.c: fix the stelemref wrapper to be type correct
18693         (and faster).
18694
18695 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18696
18697         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
18698         to do key & 0x7fffffff. Hashtable already does this. It just
18699         results in longer code.
18700
18701 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18702
18703         * appdomain.c: Bump corlib version.
18704         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
18705         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
18706         * reflection.c|h: Add functions to get declarative security infos
18707         (blob position and length) for assemblies, classes and methods.
18708
18709 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
18710
18711         * reflection.c: sort the constant table (bug #70693).
18712
18713 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
18714
18715         * object-internals.h, threads.c, domain.c: add accessors for
18716         the MonoThread and MonoDomain tls keys.
18717
18718 2004-12-18  Martin Baulig  <martin@ximian.com>
18719
18720         * class.c (inflate_generic_type): If we're inflating a generic
18721         instance, set `ngclass->context->container = context->container';
18722         ie. the container we inflated into.
18723
18724         * metadata.c (mono_metadata_parse_generic_param): Reflect above
18725         inflate_generic_type() changes.
18726
18727 2004-12-17  Martin Baulig  <martin@ximian.com>
18728
18729         * class-internals.h
18730         (MonoGenericClass): Replaced `MonoType *generic_type' with
18731         `MonoClass *generic_class'.  Removed `dynamic_info'; if
18732         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
18733         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
18734
18735 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18736
18737         * exception.c (mono_exception_from_token): New helper function.
18738
18739 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18740
18741         * assembly.c (mono_assembly_load_with_partial_name): Call 
18742         mono_assembly_loaded before invoking the preload hooks. Fixes
18743         #70564.
18744
18745         * object-internals.h (MonoThread): Change culture_info and 
18746         ui_culture_info into an array.
18747
18748         * threads.c: Cache culture info objects from more than one appdomain.
18749
18750         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
18751         current UI culture.
18752
18753 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18754
18755         * threads.h threads.c appdomain.c: Clear the culture_info field of
18756         all threads during unloading if they point to an object in the dying
18757         appdomain.
18758
18759 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
18760
18761         * culture-info.h (TextInfoEntry): New struct
18762         * object-internals.h: sync with managed
18763         * locales.c: fill the `text_info_data' field
18764         * culture-info-tables.h: update
18765
18766 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18767
18768         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
18769         collector.
18770
18771 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
18772
18773         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
18774         (ves_icall_ModuleBuilder_getMethodToken): Ditto
18775
18776 2004-12-12  Martin Baulig  <martin@ximian.com>
18777
18778         * mono-debug-debugger.c (write_type): If we're an enum and the
18779         builtin types have already been initialized, call mono_class_init().
18780
18781 2004-12-11  Martin Baulig  <martin@ximian.com>
18782
18783         * metadata.c (mono_metadata_load_generic_params): Added
18784         `MonoGenericContainer *parent_container' argument; automatically
18785         compute `container->is_method'; pass the correct owner to
18786         get_constraints().      
18787
18788         * reflection.c (compare_genericparam): Sort the GenericParam table
18789         according to increasing owners. 
18790
18791 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18792
18793         * profiler.c: allow disabling the default profiler.
18794
18795 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
18796
18797         * decimal.c, icall.c: allow disabling System.Decimal support.
18798
18799 2004-12-09  Marek Safar <marek.safar@seznam.cz>
18800
18801         * reflection.c: Add support for null attribute arguments.
18802
18803 2004-12-09  Martin Baulig  <martin@ximian.com>
18804
18805         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
18806         names to get rid of compiler warnings.
18807
18808 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18809
18810         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
18811         mono_marshal_load_type_info (). Fixes #69625.
18812         (mono_marshal_get_ptr_to_struct): Likewise.
18813
18814 2004-12-08  Martin Baulig  <martin@ximian.com>
18815
18816         * mono-debug.h: Bumped version number to 47.
18817
18818         * mono-debug-debugger.c
18819         (mono_debugger_event_handler, mono_debugger_event): Take two
18820         guint64 arguments insteed of a gpointer and a guint32.  
18821
18822 2004-12-08  Martin Baulig  <martin@ximian.com>
18823
18824         * debug-mono-symfile.h
18825         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
18826         `address' to `native_offset'.
18827
18828 2004-12-08  Martin Baulig  <martin@ximian.com>
18829
18830         * class.c (mono_class_create_from_typespec): Only inflate if we
18831         either have `context->gclass' or `context->gmethod'.
18832
18833 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18834
18835         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
18836
18837         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
18838
18839         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
18840
18841         * reflection.c (mono_assembly_get_object): Remove the workaround put
18842         in for the release.
18843         
18844         * appdomain.c: Use the corlib_internal field from MonoAssembly.
18845
18846         * appdomain.c: Bump corlib version.
18847
18848         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
18849         be visible in other appdomains.
18850
18851 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
18852
18853         * threads.c: Interlocked inc and dec for longs were messed up,
18854         use a KISS based impl for this. Fixes 70234
18855
18856 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18857
18858         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
18859
18860 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18861
18862         * icall.c: fix to follow policy not to allow struct
18863         arguments in icalls.
18864
18865 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18866
18867         * process.c: make the patch that handles spaces in file paths work
18868         on mono/windows too.
18869
18870 2004-12-06  Martin Baulig  <martin@ximian.com>
18871
18872         * class.c (mono_class_create_generic): Call
18873         mono_class_setup_supertypes() if we're dynamic.
18874         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
18875
18876 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18877
18878         * object-internals.h: Add new fields to MonoThread.
18879
18880         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18881
18882         * icall.c threads-types.h threads.c: Add new icalls.
18883
18884         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
18885
18886         * object-internals.h (MonoReflectionAssembly): Sync object layout with
18887         managed side.
18888
18889         * appdomain.c: Bump corlib version.
18890
18891         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
18892         internal assemblies. Fixes #69181.
18893
18894 2004-12-05  Martin Baulig  <martin@ximian.com>
18895
18896         * class.c (mono_class_inflate_generic_signature): Make this a
18897         no-op if `context' is NULL or we don't have any type parameters;
18898         also copy `sentinelpos'.        
18899
18900 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
18901
18902         * image.c: Add unbox_wrapper_cache.
18903
18904         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
18905
18906         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
18907         function generator.
18908         
18909         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
18910         Fixes #70173.
18911
18912         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
18913         
18914 2004-12-04  Martin Baulig  <martin@ximian.com>
18915
18916         * loader.c (mono_method_get_signature_full): New public function;
18917         like mono_method_get_signature(), but with an additional
18918         `MonoGenericContext *' argument.
18919
18920         * class.c (mono_class_inflate_generic_signature): Formerly known
18921         as inflate_generic_signature(); make this public.
18922
18923 2004-12-04  Martin Baulig  <martin@ximian.com>
18924
18925         * metadata.c
18926         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
18927         instead of a `MonoGenericContainer *'.  
18928         (mono_metadata_parse_array_full): Likewise.
18929         (mono_metadata_parse_signature_full): Likewise.
18930         (mono_metadata_parse_method_signature_full): Likewise.
18931         (mono_metadata_parse_generic_inst): Likewise.
18932         (mono_metadata_parse_generic_param): Likewise.
18933         (mono_metadata_parse_mh_full): Likewise.
18934         (mono_type_create_from_typespec_full): Likewise.
18935
18936 2004-12-03  Martin Baulig  <martin@ximian.com>
18937
18938         * class-internals.h (MonoGenericContainer): Replaced the
18939         `MonoGenericContext * pointer with a `MonoGenericContext'
18940         structure and made it the first element.
18941
18942 2004-12-03  Martin Baulig  <martin@ximian.com>
18943
18944         * class.c
18945         (inflate_generic_type): Set the `context->container' when creating
18946         a new MonoGenericContext.
18947         (mono_class_inflate_generic_method): Likewise.
18948         (mono_class_create_from_typespec): Just use `context->container'
18949         to get the container.
18950
18951         * loader.c (method_from_methodspec): Set `context->parent' from
18952         `context->container' - and if that's a method container, use its
18953         parent.  Also set the `context->container' when creating a new
18954         MonoGenericContext.
18955         (mono_get_method_from_token): Use just `context->container' to get
18956         the container.
18957
18958         * metadata.c (do_mono_metadata_parse_generic_class): Also set
18959         `gclass->context->container'.
18960
18961         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
18962         the `context->container' when creating a new MonoGenericContext.
18963
18964 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
18965
18966         * reflection.c (compare_genericparam): Sort params with identical
18967         owner by their number. Fixes gen-111 on sparc.
18968
18969 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18970
18971         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
18972         around the domain changes.
18973
18974         * appdomain.c (mono_domain_unload): Handle the case when the thread
18975         calling Unload is itself being aborted during unloading. Fixes #70022.
18976
18977         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
18978
18979         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
18980         checkpoint_func as an icall so it gets a wrapper.
18981         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
18982         in the cross-appdomain wrappers too.
18983
18984         * threads.c (mono_thread_has_appdomain_ref): Make this public.
18985
18986         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
18987
18988         * reflection.c: Fix some memory leaks.
18989         
18990 2004-12-02  Martin Baulig  <martin@ximian.com>
18991
18992         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
18993
18994         * metadata.c (generic_class_cache): New static hashtable.
18995         (mono_metadata_lookup_generic_class): New public method.
18996
18997 2004-12-02  Martin Baulig  <martin@ximian.com>
18998
18999         * class.c (mono_class_create_from_typedef): Call
19000         mono_class_setup_parent() and mono_class_create_mono_type() before
19001         parsing the interfaces.
19002
19003 2004-12-02  Martin Baulig  <martin@ximian.com>
19004
19005         * metadata.c (generic_inst_cache): New static hashtable.
19006         (mono_metadata_lookup_generic_inst): New public function.
19007         (mono_metadata_inflate_generic_inst): New public function.
19008         (mono_metadata_parse_generic_inst): New public function.
19009         (do_mono_metadata_parse_generic_class): Use the new
19010         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
19011         since this'll also use the cache.
19012
19013         * reflection.c (mono_reflection_bind_generic_method_parameters):
19014         Use mono_metadata_lookup_generic_inst() to use the new cache.
19015
19016         * class.c (inflate_mono_type): Use
19017         mono_metadata_inflate_generic_inst() to inflate a generic
19018         instance; this'll also use the new cache.
19019
19020         * loader.c (method_from_methodspec): Use
19021         mono_metadata_parse_generic_inst() and
19022         mono_metadata_inflate_generic_inst() rather than parsing it
19023         manually, so we can use the new cache.
19024
19025 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19026
19027         * threads.c (wait_for_tids): Do not incorrectly free threads when 
19028         the wait times out.
19029
19030 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19031
19032         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
19033         iter->args based on whether parameters are passed in registers (i.e.
19034         MONO_ARCH_REGPARMS is defined)
19035
19036 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
19039         the exception message. Fixes #70070.
19040         (method_from_methodspec): Fix warnings.
19041
19042 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19043
19044         * process.c: (complete_path) return the path quoted
19045
19046 2004-12-01  Martin Baulig  <martin@ximian.com>
19047
19048         * class-internals.h (MonoGenericInst): New structure.
19049         (MonoGenericClass): Replaced `type_argc', `type_argv' and
19050         `is_open' with `MonoGenericInst *inst'.
19051         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
19052         `is_open' with `MonoGenericInst *inst'.
19053
19054 2004-11-30  Martin Baulig  <martin@ximian.com>
19055
19056         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
19057
19058         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
19059         to `generic_class_cache'.
19060
19061         * metadata.c
19062         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
19063         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
19064         (mono_generic_inst_is_valuetype): Renamed to
19065         mono_generic_class_is_valuetype().
19066
19067         * class-internals.h
19068         (MonoGenericInst): Renamed to MonoGenericClass.
19069         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
19070         (MonoClass): Renamed `generic_inst' to `generic_class'.
19071         (MonoGenericContext): Renamed `ginst' to `gclass'.
19072
19073         * object-internals.h
19074         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
19075
19076         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
19077         mono_reflection_generic_class_initialize().
19078
19079         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
19080         now known as "System.Reflection.MonoGenericClass".
19081         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
19082
19083 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
19084
19085         * class-internals.h: Added a flag field to MonoClass to cache the
19086         declarative security attributes actions associated with the class.
19087         * domain-internals.h: Added booleans to MonoJitInfo to cache the
19088         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
19089         applicable to the JITted method.
19090         * reflection.c|h: Added functions to extract (as flags) which security
19091         actions are available (declaratively) for a method, class or assembly.
19092         * metadata.c|h: Added functions to search the declarative security
19093         table in the metadata.
19094         
19095 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
19096
19097         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
19098         EXPORTEDTYPES are already in the class name cache, so there is no
19099         need to add extra code here to look at them. Just removes a bit of
19100         cruft.
19101
19102         (ves_icall_System_Environment_get_TickCount): No need for #if
19103         WINDOWS. We already have the code in io-layer.
19104
19105 2004-11-28  Martin Baulig  <martin@ximian.com>
19106
19107         * loader.c
19108         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
19109         Fixes gen-112.cs.
19110
19111 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
19112
19113         * assembly.c (do_mono_assembly_open): Instead of having a
19114         conditional WITH_BUNDLE, incorporate support for bundles here, by
19115         having a global `bundles' variable holding a pointer to the actual
19116         bundles. 
19117
19118         (mono_register_bundled_assemblies): New API call used by the
19119         bundle code. 
19120
19121         See mkbundle.1 for details.
19122         
19123 2004-11-27  Martin Baulig  <martin@ximian.com>
19124
19125         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
19126         the vtable for generic methods.
19127
19128 2004-11-26  Martin Baulig  <martin@ximian.com>
19129
19130         * metadata.c
19131         (mono_metadata_generic_method_hash): New public function.
19132         (mono_metadata_generic_method_equal): Likewise.
19133
19134         * class-internals.h
19135         (MonoGenericContainer): Added `GHashTable *method_hash'.
19136
19137         * reflection.c (ReflectionMethodBuilder): Added
19138         `MonoGenericContainer *generic_container'.
19139         (reflection_methodbuilder_to_mono_method): Don't create a new
19140         MonoGenericContainer each time we're called.
19141         (mono_reflection_bind_generic_method_parameters): Use
19142         `container->method_hash' to cache the results so we don't create a
19143         different method if we're called several times with the same
19144         arguments.
19145
19146         * loader.c (method_from_methodspec): Use the new
19147         `container->method_hash' here, too.
19148
19149 2004-11-26  Martin Baulig  <martin@ximian.com>
19150
19151         * class.c (inflate_generic_signature): Correctly compute
19152         `res->has_type_parameters'.
19153         (mono_class_vtable): Use the `has_type_parameters' flag to
19154         determine whether we're a generic method.
19155
19156         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
19157
19158 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19159
19160         * object.c (mono_runtime_run_main): Fix a small memory leak.
19161
19162 2004-11-25  Martin Baulig  <martin@ximian.com>
19163
19164         * class.c (set_generic_param_owner): Fixed the loop.
19165
19166 2004-11-25  Martin Baulig  <martin@ximian.com>
19167
19168         * object.c (mono_class_vtable): Don't create any JIT wrappers for
19169         generic methods.
19170
19171 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19172
19173         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
19174         names. Fixes #69787.
19175
19176 2004-11-24  Martin Baulig  <martin@ximian.com>
19177
19178         * class.c (mono_class_create_generic_2): If we don't have a
19179         `ginst->parent', inflate `gklass->parent' to get our parent.
19180
19181 2004-11-24  Martin Baulig  <martin@ximian.com>
19182
19183         * reflection.c (compare_genericparam): Correctly sort the
19184         GenericParam table; fixes #69779.
19185
19186 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
19187
19188         * reflection.c: When writing a PE file, don't create a huge
19189         buffer in memory. Just write the arrays we have to the file.
19190         This reduces memory usage.
19191
19192         * metadata-internals.h: MonoDynamicStream pefile is no longer used
19193         globally.
19194
19195 2004-11-17  Martin Baulig  <martin@ximian.com>
19196
19197         * class.c (mono_class_init): Don't setup `class->parent' for
19198         dynamic instances; moved this to mono_class_generic_2().
19199         (mono_class_create_generic): Also set `klass->inited' for dynamic
19200         generic instances.
19201         (mono_class_create_generic_2): Don't do anything for dynamic
19202         generic instances.  Set `klass->parent' here and also call
19203         mono_class_setup_parent() here. 
19204
19205         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
19206         `MonoType *parent' argument; set `ginst->parent' before calling
19207         mono_class_create_generic_2(), so we set the correct parent.
19208
19209 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
19210
19211         * reflection.c: allow getting attributes from ModuleBuilder
19212         (used by ikvm).
19213
19214 2004-11-17  Martin Baulig  <martin@ximian.com>
19215
19216         * class.c (mono_class_create_from_typedef): If a type parameter is
19217         inherited from an outer class, set its owner to that class.
19218
19219 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
19220
19221         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
19222           for (int*) written size. This fixes bug #69592.
19223
19224 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19225
19226         * icall.c: Added IsAuthenticodePresnet internal call.
19227         * image.c|h: New function that check a MonoImage for an Authenticode
19228         signature in the certificate PE data directory.
19229         * security.c|h: New internal call to ask the runtime if an 
19230         Authenticode signature seems referenced in the PE header.
19231
19232 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
19233
19234         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
19235
19236         * reflection.c (mono_image_create_pefile): Free the assembly streams
19237         after writing out the assembly file.
19238
19239         * object.c (mono_runtime_run_main): Fix small memory leak.
19240
19241         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
19242         property access modifiers. Fixes #69389.
19243
19244 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19245
19246         * domain.c, object.c, object-internals.h, domain-internals.h,
19247         object.h, marshal.c: keep dynamic code info per domain.
19248
19249 2004-11-15  Martin Baulig  <martin@ximian.com>
19250
19251         * class.c (mono_type_get_name_recurse): Put type arguments in
19252         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19253         see bug #68387.
19254
19255 2004-11-15  Martin Baulig  <martin@ximian.com>
19256
19257         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19258         (mono_class_setup_vtable): When computing `the_cname' for a
19259         generic instance, don't include the namespace since we'd otherwise
19260         add it twice.
19261
19262 2004-11-15  Martin Baulig  <martin@ximian.com>
19263
19264         * class.c (mono_class_create_generic): Changed return type to void.
19265         (mono_class_create_generic_2): New public function; setup
19266         `class->method', `class->field' and `class->interfaces' here
19267         instead of in mono_class_init().
19268
19269         * class.h (mono_class_create_generic): Moved to class-internals.h.
19270
19271 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19272
19273         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19274         rather than writing to memory, write to this file. Right now,
19275         we are just writting into a buffer, and copying that. However
19276         we can avoid the buffer later.
19277
19278         (mono_dynamic_stream_reset): new function
19279
19280         * icall.c, object-internals.h: update for the above.
19281
19282 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19283
19284         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19285         have been using gc'd memory. First it is slower, unlikely
19286         the comment in the source code said, secondly, it increases
19287         our footprint to do it in the gc.
19288
19289         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19290         the method so that it does not have to copy to managed code.
19291
19292 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19293
19294         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19295
19296 2004-11-12  Martin Baulig  <martin@localhost>
19297
19298         * reflection.c (mono_image_create_token): Allow generic method
19299         definitions here, since they may appear in an `.override'; see
19300         gen-98/gen-99 for an example.
19301
19302 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19303
19304         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19305         #69365.
19306
19307         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19308         descriptive.
19309
19310 2004-11-11  Martin Baulig  <martin@ximian.com>
19311
19312         * class.c (mono_class_setup_vtable): In an explicit interface
19313         implementation, the method name now includes the arity.
19314
19315 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * object.c (mono_array_full_copy): Fix warning.
19318
19319 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19320
19321         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19322         mono_class_get_method_from_name() instead.
19323         
19324         * class-internals.h: Added two new types of wrappers. 
19325         Added MonoRemotingTarget enum. Added new trampoline function type, which
19326         takes an additional MonoRemotingTarget value as parameter, so it is
19327         possible to request a trampoline for a specific target.
19328         
19329         * class.c: Added new mono_class_get_method_from_name() method.
19330         
19331         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19332         general remoting sinks and one specific for cross domain calls.
19333         
19334         * debug-helpers.c: Added new wrapper names.
19335         
19336         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19337         of a remote class.
19338         
19339         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19340         
19341         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19342         with several other methods (mono_marshal_get_xappdomain_dispatch,
19343         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19344         and others) can generate a fast remoting wrapper for cross domain calls.
19345         More information can be found in docs/remoting.
19346         Other changes: Removed mono_find_method_by_name, and used
19347         mono_class_get_method_from_name instead.
19348         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19349         is stored in the remoting invoke hashtable.
19350         
19351         * marshal.h: published the new method for getting the xdomain wrapper,
19352         and also added a method for getting the adequate wrapper for a given
19353         method and target.
19354         
19355         * object-internals.h, object.c: Added a couple of methods for capying and
19356         cloning arrays.
19357         Modified mono_install_remoting_trampoline, which takes the new remoting
19358         trampoline that has a remoting target as parameter.
19359         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19360         will return the most suitable vtable for the target.
19361         Added mono_remote_class_vtable, which returns the vtable of a remote class
19362         (which can be the normal remoting vtable or the xdomain vtable).
19363         
19364         * threads.c: the xdomain invoke and dispatch wrappers must also be
19365         protected against interruptions.
19366
19367 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19368
19369         * icall.c: use memmove in BlockCopyInternal when the source and
19370         destination arrays are the same.
19371
19372 2004-11-09  Martin Baulig  <martin@ximian.com>
19373
19374         * class-internals.h (MonoGenericContainer): Removed `method' and
19375         `signature', replaced them with `is_method' and `is_signature'
19376         flags.  Added `context'.
19377
19378         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19379         instead of a `MonoGenericContainer *'.
19380
19381         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19382         for dynamic type parameters.
19383         (mono_metadata_load_generic_params): Setup `container->context'.
19384
19385         * reflection.c (mono_reflection_setup_generic_class): Setup
19386         `tb->generic_container->context'.
19387         (do_mono_reflection_bind_generic_parameters): Use
19388         mono_class_inflate_generic_type() to correctly inflate types,
19389         rather than using our own hack just for MONO_TYPE_VAR.
19390
19391 2004-11-09  Martin Baulig  <martin@ximian.com>
19392
19393         * class.c (mono_class_inflate_generic_method): Small fix; don't
19394         crash here.
19395
19396         * icall.c
19397         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19398         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19399         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19400         (ves_icall_Type_BindGenericParameters): Likewise.
19401         (ves_icall_Type_get_IsGenericInstance): Likewise.
19402         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19403         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19404         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19405         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19406
19407 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19408
19409         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19410         assembly versions and public key tokens. Fixes #69113.
19411
19412 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19413
19414         * metadata.c: fix bug introduced with the type cache changes
19415         on 2004-11-06.
19416
19417 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19418
19419         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19420         the MonoClass pointer instead of the token in exception clauses.
19421         * reflection.c: updates for the above and make the code not depend
19422         on the structure of MonoExceptionClause.
19423
19424 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19425
19426         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19427         Add support for dynamic assemblies. Fixes #69114.
19428
19429         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19430
19431 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19432
19433         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19434         since most only those methods use it. the code member of
19435         MonoMethodPInvoke was dead, so that can be removed too. Also,
19436         remove inline_count (again, not used), and move slot so that it
19437         can share bits with some other flags. This saves 8 bytes in the
19438         structure and gives us about 50 kb back for mcs helloworld.cs
19439
19440         * *.[ch]: Do naming changes for the above.
19441
19442         * loader.c (mono_method_get_header): Lazily init the header
19443         on first access.
19444         (mono_get_method_from_token): don't init the header here
19445         (mono_free_method): the header may never be allocated
19446
19447         Overall, this saves 150 kb of unmanaged allocations
19448         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19449         memory at runtime.
19450         
19451         * loader.c, loader.h (mono_method_get_header): new accessor.
19452
19453         * *.[ch]: use the above method. Prepares us to lazily load
19454         the header.
19455
19456         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19457         three warnings, which are actual bugs (see 69206).
19458
19459         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19460         unused. Saves a cool 4 bytes / method.
19461
19462 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19463
19464         * metadata.c (builtin_types): Add types for System.Object here.
19465         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19466         for a class or valuetype from klass->this_arg or klass->byval_arg.
19467
19468         On mcs for a hello world, this gets us down from 21836 MonoType's
19469         to 14560.
19470
19471         (mono_metadata_free_type): Account for the above change.
19472
19473 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19474
19475         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19476         exception instead of asserting if name is null.
19477         (ves_icall_System_AppDomain_GetData): Ditto.
19478
19479 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19480
19481         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19482         EnumBuilder.
19483
19484         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19485         Return NULL when the domain does not have entry_assembly set.
19486
19487         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19488         Add a 'resource_modules' argument.
19489         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19490
19491         * reflection.c (mono_reflection_create_runtime_class): Move setting
19492         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19493         for enums too.
19494
19495         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19496         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19497         Throw an ArgumentNullException if 'ptr' is null.
19498
19499         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19500         assemblies here. Fixes #69020.
19501
19502 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19503
19504         * reflection.c (build_compressed_metadata): Fix the previous patch for
19505         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19506         the stack.
19507
19508 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19511         the cultures is false. Fixes #69090.
19512
19513         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19514         detected by valgrind.
19515         
19516         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19517         TypeResolve multiple times for the same type. Fixes #65577.
19518
19519 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19520
19521         * marshal.c: Avoid using ldftn to call managed functions. It is
19522         much slower than just a call.
19523
19524         * reflection.c (mono_module_get_object): free the basename we
19525         allocate here from glib.
19526         
19527         * reflection.c (ensure_runtime_vtable): make sure to free
19528         overrides.  Also, we were allocating an array of MonoMethod not an
19529         array of MonoMethod*.
19530
19531         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19532
19533         * image.c (mono_image_close): free image->guid here.
19534
19535 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19536
19537         * reflection.c: Fix some spec conformance issues with the PE file
19538         structures so mcs compiled apps run on the Net 2.0 beta.
19539
19540 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19541
19542         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19543         Implement this. Fixes #67264.
19544
19545         * debug-helpers.h debug-helpers.c marshal.c: Move 
19546         mono_find_method_by_name to debug-helpers.c.
19547
19548 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * object.c (mono_release_type_locks): type_initialization_hash is
19551         a GHashTable.
19552
19553         * reflection.c object.c object-internals.h: Fix warnings.
19554
19555         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19556         without accessors. Fixes #61561.
19557
19558         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19559         application base from the root domain if not set. Fixes #65641.
19560         (mono_runtime_init): Fix warning.
19561
19562 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19563
19564         * appdomain.c: call mono_thread_pool_init.
19565         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
19566         of worker threads based on the number of CPUs and the environment
19567         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
19568         for non-windows (windows) systems.
19569
19570 2004-10-27  Chris Toshok  <toshok@ximian.com>
19571
19572         * mono-debug-debugger.c (write_class): don't call mono_class_init
19573         here, as even with the check for (!klass->init_pending), we get
19574         into a situation where we're hitting cycles in class
19575         initialization.  Fixes #68816.
19576
19577 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19578
19579         * image.c: Avoid overwriting values in the loaded_images_hash when an
19580         assembly is loaded multiple times. Fixes #61152.
19581
19582         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
19583         so multiple satellite assemblies for the same name can be loaded.
19584         Fixes #68259.
19585
19586         * mono_domain_assembly_preload: Actually return the loaded assembly, 
19587         not NULL.
19588
19589         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
19590         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
19591
19592         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
19593         pending finalizers are not invoked after the appdomain has been 
19594         unloaded. Fixes #67862.
19595
19596 2004-10-22  Martin Baulig  <martin@ximian.com>
19597
19598         * mono-debug-debugger.c
19599         (mono_debugger_runtime_invoke): Don't box valuetypes.
19600
19601 2004-10-22  Chris Toshok  <toshok@ximian.com>
19602
19603         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
19604         don't hide private methods.
19605
19606 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
19607
19608         * icall.c: Allows the runtime to "share" (when known) the public key
19609         token of an assembly. This avoid the need to recalculate the token 
19610         (from the public key) in managed code.
19611
19612 2004-10-21  Chris Toshok  <toshok@ximian.com>
19613
19614         * debug-helpers.c (append_class_name): argh, revert last patch.
19615         
19616 2004-10-21  Chris Toshok  <toshok@ximian.com>
19617
19618         * debug-helpers.c (append_class_name): use '+' as the delimiter,
19619         not '/', so that it matches what the debugger uses to look up
19620         methods.
19621
19622 2004-10-21  Martin Baulig  <martin@ximian.com>
19623
19624         * mono-debug-debugger.c (mono_debugger_throw_exception): New
19625         public method; this is called each time an exception is thrown and
19626         allows the debugger to use exception catch points.
19627
19628 2004-10-21  Martin Baulig  <martin@ximian.com>
19629
19630         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
19631         the stack pointer and the exception object in some struct and pass
19632         that to the debugger.
19633
19634 2004-10-21  Chris Toshok  <toshok@ximian.com>
19635
19636         * mono-debug-debugger.c (do_write_class): add instance/static
19637         event support.  We don't expose "raise" or "other" yet.
19638         (event_is_static): new method.
19639
19640 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
19641
19642         * mono-debug-debugger.c
19643         (mono_debugger_handle_exception): Remove
19644         bogus return value for fussy compilers.
19645
19646 2004-10-20  Martin Baulig  <martin@ximian.com>
19647
19648         * mono-debug-debugger.c
19649         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
19650         (mono_debugger_handled_exception): Likewise.
19651
19652 2004-10-20  Martin Baulig  <martin@ximian.com>
19653
19654         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19655         MONO_DEBUGGER_EVENT_EXCEPTION.
19656
19657         * mono-debug-debugger.c (mono_debugger_handle_exception): New
19658         public function to send the debugger a notification for an
19659         exception and inform it about a catch/finally clause.
19660
19661 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
19664         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
19665         fix 2.95 build. 
19666
19667         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
19668
19669 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19670
19671         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
19672         marshalled as [In,Out]. Fixes #58325.
19673
19674 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
19675
19676         * reflection.c (mono_method_body_get_object): Implement some fields.
19677
19678 2004-10-12  Martin Baulig  <martin@ximian.com>
19679
19680         * reflection.c (mono_reflection_bind_generic_parameters): Small
19681         fix, correctly retrieve our parent from a generic instance.
19682
19683 2004-10-12  Martin Baulig  <martin@ximian.com>
19684
19685         * metadata.c (mono_metadata_generic_param_equal): We always have
19686         an owner.
19687
19688         * class.c
19689         (mono_class_from_generic_parameter): We need to have an owner.
19690         (my_mono_class_from_generic_parameter): Likewise.
19691
19692         * reflection.c (mono_reflection_setup_generic_class): Renamed to
19693         mono_reflection_create_generic_class() and added a new
19694         mono_reflection_setup_generic_class().  
19695         (mono_reflection_initialize_generic_param): If we're a nested
19696         generic type and inherited from the containing class, set our
19697         owner to the outer class.
19698
19699 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
19700
19701         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
19702
19703         * reflection.c (mono_method_body_get_object): New function to create
19704         a MethodBody object.
19705
19706         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
19707
19708 2004-10-11  Martin Baulig  <martin@ximian.com>
19709
19710         * metadata.c (_mono_metadata_type_equal): Renamed to
19711         do_mono_metadata_type_equal() and made static.
19712
19713 2004-10-11  Martin Baulig  <martin@ximian.com>
19714
19715         * appdomain.c: Bump corlib version number to 28.
19716
19717 2004-10-10  Martin Baulig  <martin@ximian.com>
19718
19719         * class-internals.h
19720         (MonoGenericInst): Added `MonoGenericContainer *container'.
19721         (MonoGenericMethod): Likewise.
19722         (MonoGenericContext): Likewise.
19723         (MonoGenericParam): Added `MonoGenericContainer *owner'.
19724
19725         * metadata.c
19726         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
19727         (do_mono_metadata_parse_generic_inst): Likewise.
19728         (mono_metadata_parse_type_full): New public method.  This is the actual
19729         mono_metadata_parse_type() implementation - with an additional
19730         `MonoGenericContainer *' argument.
19731         (mono_metadata_parse_array_full): Likewise.
19732         (mono_metadata_parse_signature_full): Likewise.
19733         (mono_metadata_parse_method_signature_full): Likewise.
19734         (mono_metadata_parse_mh_full): Likewise.
19735         (mono_type_create_from_typespec): Likewise.
19736         (mono_metadata_interfaces_from_typedef_full): New public method;
19737         this is similar to the other _full() methods, but we take a
19738         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
19739         (mono_metadata_parse_generic_param): Take an additional
19740         `MonoGenericContainer *' argument and lookup the MonoGenericParam
19741         from that container.
19742         (mono_metadata_generic_param_equal): New static method to compare
19743         two type parameters.
19744         (_mono_metadata_type_equal): New static method; takes an
19745         additional `gboolean signature_only' argument - if true, we don't
19746         compare the owners of generic parameters.
19747         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
19748         with a TRUE argument - do a signature-only comparision.
19749
19750         * loader.c: Use the new _full() methods and pass the
19751         MonoGenericContainer to them.
19752
19753         * object-internals.h (MonoReflectionTypeBuilder): Added
19754         `MonoGenericContainer *generic_container' field.
19755         (MonoReflectionMethodBuilder): Likewise.
19756
19757 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
19760         case initial images of dynamic assemblies.
19761
19762         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
19763
19764         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
19765
19766         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
19767         length of event->other array.
19768         (typebuilder_setup_events): Ditto.
19769
19770         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
19771         'assembly_by_name' and add an 'assemblies' list.
19772
19773         * assembly.h assembly.c: Add a new search hook for determining whenever
19774         an assembly is already loaded. Use this instead of searching in the
19775         loaded_assemblies list.
19776
19777         * domain.c appdomain.c: Implement the new search hook so loaded 
19778         assemblies are now scoped by appdomain. Fixes #67727.
19779
19780 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
19781
19782         * threads.c (mono_thread_attach): Initialize synch_lock field so
19783         mono_thread_detach works again.
19784
19785         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
19786         'lib' too. Fixes #63130.
19787
19788 2004-10-06  Jackson Harper  <jackson@ximian.com>
19789
19790         * culture-info-tables.h: regenerated.
19791
19792 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
19793
19794         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
19795         implemented by other interfaces in the result. Fixes #65764.
19796         
19797         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19798         Handle unloadable modules without crashing.
19799
19800         * image.c (load_modules): Revert the previous patch since modules must
19801         have a fixed index inside the array.
19802         
19803         * image.c (load_modules): Don't include native modules in the modules
19804         array.
19805
19806 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * reflection.h: Add param_defaults field.
19809
19810         * reflection.c: Add support for parameter defaults in dynamic methods.
19811         Fixes #64595.
19812
19813         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
19814         an empty string when a type has no namespace. Fixes #64230.
19815
19816 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
19817
19818         * tabledefs.h: Added "internal" security actions to support non-CAS
19819         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
19820         Note: they do not seems to be used anymore in 2.0 (new metadata format)
19821
19822 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
19823
19824         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
19825         constructor of abstract class. Fixes #61689.
19826
19827 2004-10-04  Martin Baulig  <martin@ximian.com>
19828
19829         * class-internals.h (MonoGenericContainer): New type.
19830         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
19831         `MonoGenericContainer *generic_container'.
19832         (MonoClass): Replaced `gen_params' and `num_gen_params' with
19833         `MonoGenericContainer *generic_container'.
19834
19835         * metadata.c (mono_metadata_load_generic_params): Return a
19836         `MonoGenericContainer *' instead of a `MonoGenericParam *';
19837         removed the `num' argument.
19838
19839 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19840
19841         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
19842         for dynamic images.
19843
19844         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
19845         machine fields.
19846
19847         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
19848
19849         * reflection.c: Save pe_kind and machine values into the generated
19850         image file.
19851
19852         * appdomain.c: Bump corlib version number.
19853
19854         * object-internals.h: Reorganize layout of LocalBuilder.
19855
19856         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
19857         New helper function.
19858
19859         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
19860         created MonoType for dynamic types. Fixes #66180.
19861
19862 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
19863
19864         * threadpool.c: the ares hashtable needs a critical section around it.
19865         this prevents some nasty segfaults
19866
19867 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19868
19869         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
19870         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
19871         bug 67324).
19872         
19873 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19874
19875         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
19876         
19877 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19878
19879         * image.c: Always canonicalize image file names, to avoid loading
19880         the same assembly twice when referenced using a relative path.
19881
19882 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19883
19884         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
19885
19886         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
19887
19888         * marshal.c: Fix warnings.
19889
19890 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
19891
19892         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
19893         attempting to marshal the delegate_trampoline as the method_addr.
19894         This patch has a static hashtable of marshalled delegates so that 
19895         we can map delegate_trampoline addresses back to delegates.  This
19896         allows a delegate passed to managed code to be passed back into native
19897         code.  Fixes #67039
19898
19899 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19900
19901         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
19902
19903         * reflection.c (method_encode_code): Align method headers properly.
19904         Fixes #66025.
19905
19906 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19907
19908         * marshal.c: In the runtime invoke wrapper, reset the abort
19909         exception if it is cached. This avoids the automatic rethrowal of 
19910         the exception after the catch of the wrapper. Also check for pending
19911         interruptions before calling the managed method. This is done using
19912         the new method emit_thread_force_interrupt_checkpoint, since the
19913         normal checkpoint method is ignored when running the invoke wrapper.
19914         * object.c: If the abort exception is rethrown, set the abort_exc
19915         field of the thread, so it will be rethrown aftere every catch.
19916         * threadpool.c: Only run an interruption checkpoint if what has been
19917         requested is a stop of the thread (aborts will be ignored).
19918         * threads.c: By default, a thread will now never be interrumped while
19919         running the runtime invoke wrapper (this ensures that runtime_invoke
19920         will always return to the caller if an exception pointer is provided).
19921         There is a new special method mono_thread_force_interruption_checkpoint()
19922         to force an interruption checkpoint even if running a protected
19923         wrapper, which is used by the same runtime invoke wrapper to do a check
19924         at a safe point.
19925
19926 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19927
19928         * object.c, object-internals.h: Implemented mono_release_type_locks,
19929         which releases the cctor locks held by a thread.
19930         * threads.c, threads.h: In thread_cleanup, release cctor locks held
19931         by a thread. Added mono_thread_exit() method to be used to safely stop
19932         a thread.
19933
19934 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19935
19936         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19937         Move null check before dereference.  Avoid indexing beyond the end
19938         of the 'modules' array.
19939
19940 2004-09-28  Raja R Harinath  <rharinath@novell.com>
19941
19942         * metadata-internals.h (MonoImage): Add module_count field.
19943         * image.c (load_modules): Set image->module_count.
19944         (mono_image_load_file_for_image): Use image->module_count.
19945         * reflection.c (mono_image_load_module): Append to image->modules array 
19946         of dynamic assembly.
19947         (mono_module_get_object): Fix loop to actually increment index.
19948         Use image->module_count.
19949         * assembly.c (mono_assembly_load_references): Use image->module_count.
19950         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
19951         Likewise.
19952
19953 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
19956         Avoid assert on generic types.
19957
19958 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
19961
19962         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
19963
19964         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
19965         function to convert a MarshalSpec structure to its managed counterpart.
19966
19967         * reflection.c: Fix warnings.
19968         
19969         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
19970         field.
19971
19972         * icall.c (mono_create_icall_signature): Fix build.
19973
19974 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19975
19976         * icall.c: Add MakePointType icall.
19977
19978         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
19979         warnings.
19980
19981 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19982
19983         * threadpool.c: reuse allocated slots in the queue.
19984
19985 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19986
19987         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
19988
19989         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
19990
19991         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
19992         previous change.
19993
19994         * tabledefs.h: Add constants for pinvoke attributes BestFit and
19995         ThrowOnUnmappableChar.
19996
19997         * icall.c (ves_icall_Type_GetPacking): New icall.
19998
19999 2004-09-24  Martin Baulig  <martin@ximian.com>
20000
20001         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
20002
20003 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20004
20005         * appdomain.c:
20006         (mono_domain_set): allow setting a domain that is being unloaded.
20007         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
20008         being unloaded.
20009
20010 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
20013         the GetCustomAttributes icall.
20014
20015 2004-09-23  Martin Baulig  <martin@ximian.com>
20016
20017         * object-internals.h (MonoReflectionGenericParam): Replaced
20018         'has_ctor_constraint', `has_reference_type' and `has_value_type'
20019         with `guint32 attrs'.
20020
20021 2004-09-23  Martin Baulig  <martin@ximian.com>
20022
20023         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
20024
20025 2004-09-23  Martin Baulig  <martin@ximian.com>
20026
20027         * object-internals.h (GenericParameterAttributes): New enum.
20028
20029 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20030
20031         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
20032         
20033         * class.c (init_events): Fill out event->other field.
20034
20035         * class.c: Fix warnings.
20036
20037         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
20038
20039 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20040
20041         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
20042         walk which doesn't supply the IL offset.
20043
20044 2004-09-22  Martin Baulig  <martin@ximian.com>
20045
20046         * reflection.c (mono_reflection_setup_internal_class): If we're
20047         System.ValueType, System.Object or System.Enum, set
20048         `klass->instance_size' and create the vtable.
20049         (mono_reflection_create_internal_class): If we're an enum type,
20050         get the base class from our current corlib.
20051
20052 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
20053
20054         * reflection.h (MonoResolveTokenError): New type.
20055
20056         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
20057         icall.
20058
20059         * icall.c: Add an 'error' argument to the ResolveToken icalls.
20060
20061 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
20062
20063         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
20064         Support also calling constructors, but only for already allocated objects.
20065
20066 2004-09-17  Geoff Norton <gnorton@customerdna.com>
20067
20068         * reflection.c (type_get_qualified_name): If the klass is null
20069         return the typename to avoid a NullRefEx.
20070         (encode_cattr_value): Get the qualified name of the boxed type,
20071         not the underlying enumtype.  Fixes #62984.
20072
20073 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
20074
20075         * marshal.c: Fix problems with previous checkin.
20076
20077 2004-09-21    <vargaz@freemail.hu>
20078
20079         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
20080         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
20081
20082         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
20083
20084 2004-09-21  Geoff Norton <gnorton@customerdna.com>
20085
20086         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
20087         should only return a type for pointers, arrays, and passbyref types.
20088         Fixes bug #63841.
20089
20090 2004-09-21  Martin Baulig  <martin@ximian.com>
20091
20092         * domain.c (mono_debugger_check_runtime_version): New public
20093         function.
20094
20095         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
20096
20097 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
20098
20099         * reflection.c: Added missing sort to the declarative security 
20100         attributes table. MS implementation stops seeing the attributes if the
20101         token number regress in the table (as shown by ildasm and permview).
20102
20103 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
20104
20105         * object-internals.h (MonoReflectionModule): Add 'token' field.
20106         
20107         * reflection.c (mono_reflection_get_token): Add support for Module
20108         and Assembly.
20109         (mono_module_get_object): Set 'token' field.
20110         (mono_module_file_get_object): Set 'token' field.
20111
20112         * icall.c: Add new Assembly and Module icalls.
20113
20114         * appdomain.c: Bump corlib version.
20115
20116 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
20117
20118         * loader.h loader.c class.h class.c: Add helper functions for obtaining
20119         tokens of metadata objects.
20120
20121         * reflection.h reflection.c (mono_reflection_get_token): New function
20122         to obtain the token of a metadata object.
20123
20124         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
20125
20126 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
20129         
20130         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
20131
20132 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
20133
20134         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
20135         * object-internals.h: Added 3 MonoArray* members to MonoReflection
20136         AssemblyBuilder to access the permissions set in the class lib.
20137         * reflection.c: Added security attributes encoding step in 
20138         mono_image_build_metadata.
20139         * tabledefs.h: Added new security actions defined in 2.0:
20140         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
20141
20142 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20143
20144         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
20145         macro parameter.
20146
20147 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20148  
20149         * locales.c: nullify the ICU_collator member of CompareInfo when it is
20150           finalized. There where random SIGSEVs at program termination, when
20151           an object being finalized was trying to do a string comparison and
20152           the current culture was already finalized.
20153  
20154 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20155
20156         * threads.c: call thread_cleanup before finishing the thread if we get
20157         there.
20158
20159 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
20160
20161         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
20162         assemblies from the parent. Fixes #65665.
20163
20164 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
20165
20166         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
20167         modifiers.
20168
20169 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
20170
20171         * reflection.h: add prototype for mono_get_dbnull_object
20172         * reflection.c: add prototypes for get_default_param_value_blobs 
20173         and mono_get_object_from_blob for fussier compilers
20174
20175 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
20176  
20177         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
20178         false deadlock checks in class initialization.
20179  
20180 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20181
20182         * image.c (mono_image_addref): Fix comment.
20183
20184         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
20185         possible.
20186
20187 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
20188
20189         * reflection.c (mono_param_get_objects): Modified to return
20190         ParameterInfo.DefaultValue object.
20191
20192         (get_default_param_value_blobs):
20193         (mono_get_object_from_blob):
20194         (mono_get_dbnull_object): New helper routines. 
20195
20196         * object.c (mono_get_constant_value_from_blob): New helper routine
20197         carved out from get_default_field_value ()
20198
20199         * object-internals.h (mono_get_constant_value_from_blob): Added
20200         function declaration.
20201
20202 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20203
20204         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
20205         referenced assemblies. Fixes #62135.
20206
20207         * exception.h exception.c (mono_get_exception_file_not_found2): New
20208         helper function.
20209
20210 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20211
20212         * class.h class.c: Add mono_type_get_underlying_type ().
20213
20214 2004-09-09  Geoff Norton <gnorton@customerndna.com>
20215
20216         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
20217         Fix GetTypes() to support dynamically created assemblies.
20218
20219 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
20220
20221         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
20222         
20223         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
20224         previous patch.
20225
20226         * reflection.h reflection.c loader.c: Allow dynamic construction of
20227         pinvoke methods. Fixes #65571.
20228         
20229         * reflection.c (mono_reflection_get_type): Revert previous change since
20230         it causes regressions.
20231
20232 2004-09-08  Martin Baulig  <martin@ximian.com>
20233
20234         * class.c (class_compute_field_layout): Don't call
20235         mono_class_layout_fields() for open generic instances.
20236
20237 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
20238         * threads.c appdomain.c: fix typo in GC macro
20239
20240 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20241
20242         * threads.c: don't call mono_thread_detach() in start_wrapper(),
20243         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
20244
20245 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
20246
20247         * image.c (mono_image_close): Applied patch from 
20248         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
20249         assembly is loaded multiple times from data.
20250         
20251         * image.c (mono_image_open): Fix warning.
20252
20253 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20254
20255         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20256         once. Fixes #58334.
20257         
20258         * reflection.c (mono_reflection_create_runtime_class): Initialize
20259         klass->nested_classes. Fixes #61224.
20260
20261 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20262
20263         * threads.c: sched_yield() on exit, to allow threads to quit.
20264
20265 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20266
20267         * object.c (mono_unhandled_exception): Remove leftover debug code.
20268
20269 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20270
20271         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20272
20273 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20274
20275         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20276         
20277         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20278
20279 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20280
20281         * marshal.c (emit_marshal_array): Null terminate string arrays.
20282         
20283         * marshal.c (raise_auto_layout_exception): Fix warning.
20284
20285         * reflection.c (mono_param_get_objects): Initialize the default value
20286         with DBNull.Value, not null. Fixes #62123.
20287
20288 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20289
20290         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20291         throw an exception with a cute explanation.
20292
20293 2004-09-06  Dick Porter  <dick@ximian.com>
20294
20295         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20296         Close the new process's thread handle, as we don't use it.  The
20297         handle stays around forever otherwise.
20298
20299 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20300
20301         * object.c (arith_overflow): Fix warning.
20302
20303         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20304         calling conventions in method refs. Fixes #65352.
20305
20306         * reflection.c: Fix warnings.
20307
20308 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20309
20310         * icall.c: Add a new icall for Array.Clear
20311
20312 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20313
20314         * object.c: When allocating an array, we have to throw
20315         an overflow exception if any of the lengths are < 0.
20316
20317 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20318
20319         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20320         properly. Also move implementation of string array marshalling to 
20321         managed code. Fixes #42316.
20322
20323 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20324
20325         * assembly.c: provide more information when loading an assembly fails.
20326
20327 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20328
20329         * filewatcher.c: don't expect the development fam package to be
20330         installed.
20331
20332 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * marshal.c: Make a copy of the signature cookie since it will be
20335         freed by the caller.
20336         
20337         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20338
20339         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20340
20341         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20342         marshal specs.
20343
20344         * marshal.c: More refactoring.
20345         
20346         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20347         smaller functions.
20348
20349 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20350
20351         * object.c: In mono_message_invoke, fill the output parameter array after
20352           calling the managed method (it was done before the call). This fixes
20353           bug #59299.
20354
20355 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20356
20357         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20358         as well.
20359
20360 2004-09-02  Martin Baulig  <martin@ximian.com>
20361
20362         * class.c (mono_class_instance_size): Don't allow generic type
20363         definitions or open generic instances.
20364         (mono_class_array_element_size): If we're a value type, call
20365         mono_class_instance_size() on the original class.
20366
20367         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20368         handle generic instances.
20369
20370         * mono-debug-debugger.c (write_type): Handle generic instances
20371         like classes.
20372
20373 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20374
20375         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20376         the allocation request fails. Fixes #65089.
20377
20378         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20379         
20380         * object.c (mono_runtime_free_method): New function to free a dynamic
20381         method.
20382
20383         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20384         delegate trampoline.
20385
20386         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20387         with hasthis as dynamic,
20388
20389         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20390
20391         * domain.c (mono_jit_info_table_remove): New function to remove an
20392         entry from the jit info table.
20393
20394         * class-internals.h (MonoMethod): Add 'dynamic' field.
20395
20396         * loader.c: Fix warnings.
20397
20398 2004-09-01  Martin Baulig  <martin@ximian.com>
20399
20400         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20401         instead of mono_debugger_lock() because the latter one is a no-op
20402         unless running in the debugger.
20403
20404 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20405
20406         * class.c (class_compute_field_layout): Classes with auto-layout or
20407         reference fields are not blittable.
20408         
20409 2004-09-01  Dick Porter  <dick@ximian.com>
20410
20411         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20412         mono_image_get_filename() to get the assembly location.
20413
20414         * icall.c:
20415         * metadata.h: Fix compile warnings
20416
20417 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20418
20419         * class.c (class_compute_field_layout): System.Object is blittable.
20420
20421         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20422         as in/out. Fixes #59909.
20423
20424 2004-09-01  Martin Baulig  <martin@ximian.com>
20425
20426         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20427         mono_metadata_generic_inst_is_valuetype() if we're a generic
20428         instance to check whether our underlying type is a reference type.
20429
20430 2004-09-01  Martin Baulig  <martin@ximian.com>
20431
20432         * metadata.c (mono_type_size): If we're a generic instance, call
20433         mono_class_value_size() for value types.
20434
20435 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20436
20437         * marshal.c: Implement more custom marshalling functionality. Fixes
20438         #64915.
20439
20440 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20441
20442         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20443
20444 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20445
20446         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20447
20448         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20449
20450         * icall.c: Fix some warnings.
20451
20452         * threads.c (abort_appdomain_thread): Fix unref errors.
20453         (mono_thread_current): Fix THREAD_DEBUG define.
20454
20455 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20456
20457         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20458
20459         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20460
20461 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20464         string arrays.
20465
20466 2004-08-28  Martin Baulig  <martin@ximian.com>
20467
20468         * metadata.c
20469         (mono_metadata_generic_inst_is_valuetype): New public function.
20470
20471         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20472         mono_metadata_generic_inst_is_valuetype() if we're a generic
20473         instance to check whether our underlying type is a valuetype.
20474
20475 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20476
20477         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20478         #63768.
20479
20480 2004-08-25  Martin Baulig  <martin@ximian.com>
20481
20482         * loader.c (mono_get_method_from_token): Abstract methods can also
20483         be generic and thus have type parameters.
20484
20485         * metadata-internals.h
20486         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20487
20488         * reflection.c (mono_image_get_generic_param_info): Don't create a
20489         metadata row, just add an entry to the `gen_params' array.
20490         (build_compressed_metadata): Sort the `gen_params' array and then
20491         actually create the metadata.
20492
20493 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20494
20495         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20496
20497 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20498
20499         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20500
20501 2004-08-24  Martin Baulig  <martin@ximian.com>
20502
20503         * class.cs (mono_class_is_subclass_of): Like an interface, a
20504         generic instance also derives from System.Object.
20505
20506 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20507
20508         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20509         custom modifiers to be in any order. Fixes #61990.
20510
20511 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20512
20513         * object.c: Register mono_object_new_fast icall.
20514         
20515         * object.c (mono_class_get_allocation_ftn): Return to calling
20516         mono_object_new_fast, since it seems faster to compute the object 
20517         size in unmanaged code than passing it as a parameter.
20518
20519         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20520
20521         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20522         this function with Boehm as the oom handler, so we don't have to check
20523         the result of GC_malloc.
20524
20525         * object.c: Remove checks for oom.
20526
20527         * object.h object.c (mono_class_get_allocation_ftn): New function to
20528         return the icall which can be used to allocate an instance of a given
20529         class. 
20530
20531         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20532
20533         * class-internals.h: Add 'enabled' field.
20534
20535 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20536
20537         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20538
20539 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20540         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20541         value 0x0010.
20542
20543 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20544
20545         * appdomain.c: use the Tls function for appdomain too,
20546         at Zoltan's request. Actually return in mono_context_get
20547
20548         * appdomain.c, profiler.c, threads.c: use __thread
20549
20550 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20551
20552         * appdomain.c threads.c: Call GC_CreateThread on windows.
20553
20554         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20555         multiple libraries since this don't work on windows.
20556
20557 2004-08-18  Martin Baulig  <martin@ximian.com>
20558
20559         * class-internals.h
20560         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20561         MonoMethodHeader.
20562
20563         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20564         MonoMethodNormal since we also need it for abstract and interface
20565         methods.
20566
20567         * reflection.c
20568         (build_compressed_metadata): Sort the GenericParam table.
20569         (mono_image_create_token): Added `gboolean create_methodspec'
20570         argument; this is false when generating a MethodImpl token.
20571         (reflection_methodbuilder_to_mono_method): Abstract and interface
20572         methods may also have generic parameters.
20573
20574 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20575
20576         * appdomain.c: thread local alloc
20577
20578 2004-08-17  Martin Baulig  <martin@ximian.com>
20579
20580         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
20581
20582         * icall.c
20583         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
20584         argument.
20585
20586         * class.c (mono_type_get_full_name): New public function.
20587         (mono_type_get_name): Don't include the type arguments.
20588
20589 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20590
20591         * Makefile.am: Build static versions of libmetadata and libmonoruntime
20592         for inclusion into the mono executable.
20593
20594 2004-08-16  Martin Baulig  <martin@ximian.com>
20595
20596         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
20597         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
20598
20599 2004-08-14  Martin Baulig  <martin@ximian.com>
20600
20601         * class.c (dup_type): Also copy the `byref' field.
20602
20603 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20604
20605         * reflection.c (create_dynamic_mono_image): Revert the last change 
20606         since it breaks bootstrap.
20607
20608 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20609
20610         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
20611
20612         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
20613         not free them with g_free.
20614
20615 2004-08-11  Martin Baulig  <martin@ximian.com>
20616
20617         * reflection.c (mono_reflection_setup_internal_class): Also call
20618         mono_class_setup_mono_type() if we already have a `tb->type.type'.
20619
20620 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
20621
20622         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
20623         called during default (first) AppDomain creation. Keep track of
20624         Evidence when loading assemblies.
20625
20626 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20627
20628         * opcodes.c, opcodes.h: reduce runtime relocations.
20629
20630 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20631
20632         * culture-info.h, locales.c: fixes and chages to sue the new
20633         optimized format of the locale data.
20634         * culture-info-tables.h: regenerated.
20635
20636 2004-08-06  Geoff Norton <gnorton@customerdna.com>
20637         
20638         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
20639
20640 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
20641
20642         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
20643         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
20644         * domain-internals.h: icall declaration.
20645         * icall.c: icall registration.
20646         * object-internals.h: New fields in MonoAssembly for CAS.
20647
20648 2004-08-05  Duncan Mak  <duncan@ximian.com>
20649
20650         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20651         CEE_LDELEM_ANY.
20652
20653 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20654
20655         * reflection.c: fix to deal with object[] arrays in custom ctors
20656         (bug #62550).
20657
20658 2004-08-05  Martin Baulig  <martin@ximian.com>
20659
20660         * class.c (mono_class_array_element_size): Added support for
20661         generic instances and correctly handle "recursive" types.
20662
20663 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20664
20665         * assembly.c: Fix warnings.
20666
20667 2004-08-04  Martin Baulig  <martin@ximian.com>
20668
20669         * class.c
20670         (mono_type_get_name_recurse): Added `gboolean include_arity'
20671         argument specifying whether or not we should include the generic
20672         arity in the type name.
20673         (_mono_type_get_name): New static function.
20674         (mono_class_setup_vtable): If we're a generic instance, don't
20675         include the generic arity in the names of explicit method
20676         implementations.        
20677
20678 2004-08-03  Martin Baulig  <martin@ximian.com>
20679
20680         * class.c (mono_type_get_name_recurse): Enclose the generic type
20681         arguments in `<', '>'.
20682
20683 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20684
20685         * gc.c: make GC warning messages use the trace API, they are just
20686         noise to most of the users.
20687
20688 2004-08-03  Martin Baulig  <martin@ximian.com>
20689
20690         * debug-mono-symfile.c (read_string): Correctly read the string.
20691
20692 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
20695         
20696         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
20697         icalls.
20698         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
20699
20700 2004-07-30  Martin Baulig  <martin@ximian.com>
20701
20702         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
20703         Reflect latest symbol writer changes.   
20704
20705 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20706
20707         * object.c: always create an object if null is passed
20708         to Invoke() where a valuetype is expected.
20709
20710 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20711
20712         * marshal.c (mono_marshal_init): make managed
20713         signatures match native ones better for 64bits.
20714
20715 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20716
20717         * appdomain.c: hack to build correctly the private bin path on windows.
20718         Fixes bug #61991.
20719
20720 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20721
20722         * assembly.c: Load mscorlib from the correct framework directory
20723           (mono/<version>/mscorlib.dll).
20724         * appdomain.h: Added prototypes for new functions.
20725         * internals.h: Added some prototypes.
20726         * domain.c: When initializing the runtime, get from the executable and
20727           the configuration files the runtime version that the app supports.
20728           Added support methods for reading app.exe.config. Added list of versions
20729           supported by the JIT. Added two new methods: mono_init_from_assembly,
20730           which initializes the runtime and determines the required version from
20731           the provided exe file, and mono_init_version, which initializes
20732           the runtime using the provided version.
20733         * icall.c: Get machine.config from version-specific directory.
20734         * reflection.c: When generating an image, embed the version number
20735           of the current runtime.
20736
20737 2004-07-28  Dick Porter  <dick@ximian.com>
20738
20739         * socket-io.c
20740         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
20741         returned sockaddr size before creating the remote address object.
20742         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
20743         61608.
20744
20745 2004-07-28  Dick Porter  <dick@ximian.com>
20746
20747         * locales.c (string_invariant_compare_char): Fix invariant char
20748         compares between upper and lower cases.  Fixes bug 61458.
20749
20750 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
20751         
20752         * marshal.c: actually cache stelem.ref wrappers.
20753         
20754 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20755
20756         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
20757         sections and remove the mono_cli_rva_map () function.
20758
20759 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20760
20761         * debug-mono-symfile.c: fix one more endianess issue, from a patch
20762         by Geoff Norton (<gnorton@customerdna.com>).
20763
20764 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20765
20766         * class.c: fix class loads for pointer types (typeof(int) !=
20767         typeof(int*)).
20768
20769 2004-07-27  Martin Baulig  <martin@ximian.com>
20770
20771         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
20772         reading the debugging information from an external ".mdb" file.
20773
20774 2004-07-24  Martin Baulig  <martin@ximian.com>
20775
20776         * reflection.c (mono_image_get_type_info): Only write a class
20777         layout entry if we actually have a size or a packing size.
20778
20779 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20780
20781         * reflection.c (type_get_fully_qualified_name): 
20782         insert cast to get type checking of ?: with non-gcc compilers
20783
20784 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20785
20786         * rand.c: use g_getenv for both lookups of
20787         MONO_EGD_SOCKET
20788
20789 2004-07-17  Martin Baulig  <martin@ximian.com>
20790
20791         * reflection.c (mono_reflection_bind_generic_method_parameters):
20792         Set `gmethod->reflection_info'.
20793
20794 2004-07-17  Martin Baulig  <martin@ximian.com>
20795
20796         * class.c (mono_class_create_from_typedef): Insert the newly
20797         created class into the hash table before computing the interfaces
20798         since we could be called recursively.
20799
20800 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20801
20802         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
20803         function to implement stelem.ref in managed code
20804         * class-internals.h, debug-helpers.c: a new wrapper type
20805         for the above.
20806
20807 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20808
20809         * gc.c: allow GC handles to work even when no GC is compiled in.
20810         Fix part of bug #61134 (GetAddrOfPinnedObject).
20811
20812 2004-07-13  Peter Williams  <peter@newton.cx>
20813  
20814         * process.c (complete_path): Make sure we don't attempt to execute
20815         directories.
20816  
20817 2004-07-12  Geoff Norton <gnorton@customerdna.com>
20818
20819         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
20820           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
20821           and will add/subtract the hour if needed
20822
20823 2004-07-12  Martin Baulig  <martin@ximian.com>
20824
20825         * reflection.c (mono_field_get_object): If we have
20826         `field->generic_info', take the attributes from
20827         `field->generic_info->generic_type'.    
20828
20829 2004-07-12  Martin Baulig  <martin@ximian.com>
20830
20831         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
20832         This function must be called before initializing the runtime.
20833         (mono_debug_init_1): New function; call this after initializing
20834         the runtime, but before loading the assembly.  It tells the
20835         debugger to load corlib and the builtin types.
20836
20837         * mono-debug-debugger.c: Did some larger changes in the debugging
20838         code; support recursive class declarations, make sure we actually
20839         add all classes.
20840
20841 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20842
20843         * debug-helpers.c: undo my previous patch and fixed the real issue in
20844         ../mini/exceptions-x86.c
20845
20846 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20847
20848         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
20849         when no HOME env. variable was set and a NullRef was thrown in a .cctor
20850         called from other .cctors.
20851
20852 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
20853
20854         * loader.c: Removed the mono_loader_wine_init hack now that we are
20855         doing a managed version of Windows.Forms.
20856
20857 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20858
20859         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
20860         threadpool.c, threads.c: remove static data from rootset.
20861
20862 2004-07-09  Dick Porter  <dick@ximian.com>
20863
20864         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
20865         Don't do any more processing if the matched length was 0.  It was
20866         increasing the size of the string before.  Fixes bug 61167.
20867
20868 2004-07-09  Dick Porter  <dick@ximian.com>
20869
20870         * socket-io.h:
20871         * socket-io.c
20872         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20873         Add support for SO_PEERCRED if its available.
20874
20875 2004-07-09  Peter Bartok <pbartok@novell.com>
20876         * loader.c: winelib.exe.so error message is now only displayed if
20877         MONO_DEBUG is set. To help us avoid questions when people are trying
20878         out the new Managed.Windows.Forms.
20879
20880 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20881
20882         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
20883         for isinst and castclass wrappers.
20884
20885         * class-internals.h icall.c: Move registration and lookup of JIT icalls
20886         to libmetadata from the JIT, so they could be used by the marshalling
20887         code and the interpreter.
20888
20889         * marshal.c: Register marshalling related JIT icalls here instead of
20890         in mini.c. Use CEE_MONO_ICALL instead of the family of 
20891         CEE_MONO_PROC<x> opcodes to call marshalling functions.
20892
20893         * metadata.h: Remove unneeded marshalling conversions.
20894
20895         * opcodes.c: Update for new opcodes.
20896         
20897 2004-07-08  Martin Baulig  <martin@ximian.com>
20898
20899         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
20900         (mono_debug_get_domain_data): Make this function static.
20901
20902 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
20903
20904         * gc.c, object.h: add nice GC handle API for embedders.
20905
20906 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20907
20908         * reflection.c: more changes for the new api
20909
20910         * object.c: When we reflect on a field w/ a constant value, it
20911         will not have a memory location, so we must access metadata. Also,
20912         allow easier reading of strings so that we can read them from
20913         the constant data.
20914
20915         * class.c (mono_class_layout_fields): no need for literal fields here.
20916
20917         * class-internals.h: api changes for const fields
20918
20919         * icall.c (ves_icall_get_enum_info): use new apis for const fields
20920
20921 2004-07-06  Martin Baulig  <martin@ximian.com>
20922
20923         * mono-debug.h: Increment version number to 44.
20924
20925         * mono-debug.c (mono_debug_add_wrapper): The second argument is
20926         now a gpointer, rewrote this whole method.
20927
20928         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
20929         function.  Add information about the wrapper in a new "misc table".
20930
20931         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
20932         for the new misc table.
20933
20934 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20935
20936         * metadata-internals.h image.c: Add a cache for helper signatures.
20937
20938         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
20939
20940 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20941
20942         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
20943         delegates from a delegate. Fixes #61033.
20944         
20945         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
20946         marshalling of stringbuilder arrays. Fixes #59900.
20947
20948 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20949
20950         * icall.c: Add EnumBuilder:setup_enum_type icall.
20951
20952 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20953
20954         * icall.c: Added a new icall for the property version of
20955         OffsetOfStringData.
20956
20957 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20958
20959         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
20960         it has a constant size across platforms.
20961
20962         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
20963         stack trace.
20964
20965 2004-06-29  Martin Baulig  <martin@ximian.com>
20966
20967         * mono-debug.c (mono_debug_add_method): Protect the whole function
20968         in mono_debugger_lock(), not just parts of it.
20969
20970 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20971
20972         * reflection.c: make sure padding bytes in heaps are zeroed.
20973
20974 2004-06-24  David Waite  <mass@akuma.org>
20975
20976         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
20977         image.c, loader.c, locales.c, marshal.c, metadata.c,
20978         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
20979         string-icalls.c, threads.c: change to C90-style comments from C99 /
20980         C++ -style
20981
20982 2004-06-24  Dick Porter  <dick@ximian.com>
20983
20984         * threads.c
20985         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
20986         return createdNew.  Fixes bug 60412.
20987
20988         * threads-types.h: 
20989         * icall.c: Add createdNew parameter to CreateMutex icall
20990
20991 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20992
20993         * reflection.c, object-internals.h: save default value in params.
20994
20995 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20996
20997         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
20998         no need to build a new path combining that with the application base.
20999         Fixes bug #60442.
21000
21001 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21002
21003         * reflection.c: fixed minor standard compliance issues.
21004
21005 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21006
21007         * reflection.c: fixed issue with encoding some custom attributes
21008         (arrays in properties and fields, bug #60411).
21009
21010 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21011
21012         * reflection.c: fix start address when copying the public key token.
21013
21014 2004-06-23  Martin Baulig  <martin@ximian.com>
21015
21016         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
21017         the `exc' object in a static object to put it into the GC's root set.
21018
21019 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21020
21021         * reflection.c: make mono_reflection_setup_internal_class ()
21022         callable a second time to setup a new parent class.
21023
21024 2004-06-23  Dick Porter  <dick@ximian.com>
21025
21026         * threads.c: Check for WAIT_IO_COMPLETION return values.
21027
21028 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
21029
21030         * appdomain.c: Removed the g_free on the public key token. Now copy 
21031         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
21032         * assembly.c: Added public key token string value when loading 
21033         assemblies. Fix bug #60439.
21034         * icall.c: Added missing informations (like public key) in 
21035         GetReferencedAssemblies. Fix #60519.
21036         * image.h: Changed definition for public key token from const char*
21037         public_tok_value to guchar public_key_token [17];
21038         * reflection.c: Updated for changes to public key token.
21039
21040 2004-06-22  Lluis Sanchez Gual
21041
21042         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
21043         for the field in base classes.
21044
21045 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21046
21047         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
21048         mark headers as not supported, they are installed only for use by the
21049         debugger.
21050
21051 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
21052
21053         * *.c, *.h: avoid namespace pollution in public headers.
21054
21055 2004-06-21  Martin Baulig  <martin@ximian.com>
21056
21057         * exception.c (mono_get_exception_security): It's in
21058         "System.Security", not in "System".
21059
21060         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
21061         the exception classes.
21062
21063 2004-06-21  Martin Baulig  <martin@ximian.com>
21064
21065         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
21066         Protect the exception object from being finalized.
21067
21068 2004-06-21  Martin Baulig  <martin@ximian.com>
21069
21070         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
21071         public function.
21072
21073 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
21074
21075         * reflection.c: Load the assembly in mono_reflection_type_from_name,
21076         if it was not loaded before. Fix parts of #60439.
21077
21078 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
21079
21080         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
21081         code that was broken since Ben's change: wrappers are now
21082         dependent on the method signature only again.
21083
21084 2004-06-21  Martin Baulig  <martin@ximian.com>
21085
21086         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
21087         added interface support.
21088
21089 2004-06-21  Martin Baulig  <martin@ximian.com>
21090
21091         * class.c (mono_vtable_get_static_field_data): New public method.
21092
21093 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
21094
21095         * filewatcher.c : Windows build fix to be compliant with API changes.
21096
21097 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21098
21099         * class.h, class.c: more accessors.
21100         * metadata.h, metadata.c: prepare for hiding MonoType and
21101         MonoMethodSignature: people should use the accessors from now on
21102         outside of the tree.
21103
21104 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21105
21106         * *.c, *.h: more API cleanups.
21107
21108 2004-06-18  Jackson Harper  <jackson@ximian.com>
21109
21110         * assembly.c: Trace loading assemblies.
21111         * loader.c: Trace loading native libraries.
21112         * mono-config.c: Trace loading config files.
21113         
21114 2004-06-18  Dick Porter  <dick@ximian.com>
21115
21116         * locales.c: Tell ICU the lengths of strings, it can cope with
21117         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
21118
21119 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21120
21121         * image.c: swapped name/filename;
21122
21123 2004-06-18  Martin Baulig  <martin@ximian.com>
21124
21125         * mono-debug-debugger.c (write_class): Write the parent class at
21126         the end of the header.
21127
21128 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21129
21130         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
21131
21132 2004-06-17  Raja R Harinath  <rharinath@novell.com>
21133
21134         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
21135         (bundle_obj): New conditional define.
21136         (BUILT_SOURCES): Remove.
21137         ($(bundle_srcs)): Make parallel-make safe.
21138         (libmonoruntime_la_LIBADD): Make unconditional.
21139         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
21140         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
21141
21142 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
21143
21144         * culture-info-tables.h: It was inconsistent with the latest
21145           supp info files.
21146
21147 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
21148
21149         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
21150         be loaded.
21151
21152         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
21153         with gcc 2.95.
21154
21155 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21156
21157         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
21158         cleaned up public header threads.h.
21159
21160 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21161
21162         * Makefile.am, *.c, *.h: more API cleanups.
21163
21164 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21165
21166         * Makefile.am: removed monosn from compilation.
21167         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
21168         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
21169         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
21170         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
21171         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
21172         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
21173
21174 2004-06-15  Jackson Harper  <jackson@ximian.com>
21175
21176         * assembly.c: Make locales lower case when searching the GAC for
21177         assemblies. gacutil will always make locales lowercase when
21178         installing so this effectively makes them case insensitive.
21179         
21180 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
21181
21182         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
21183         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
21184           parameter which allows to choose whether the wait can be interrupted or 
21185           not. Also added the method mono_monitor_enter(), which locks the monitor
21186           using an infinite wait and without allowing interruption.
21187           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
21188           interrupted.
21189         * object.h: Added new fields in MonoThread. suspend_event holds the event
21190           used to susped/resume the thread. synch_lock is the lock object to use for
21191           modifying the thread state.
21192         * threads.c: Use the new synch_lock object for locking, instead of "this",
21193           which can generate deadlocks.
21194           Moved thread state change in Thread.Sleep and Thread.Join from managed
21195           to unmanaged code. This avoids a deadlock when the thread was suspended
21196           just after acquiring the thread lock.
21197           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
21198           Implemented Thread.Suspend using an event instead of ThreadSuspend,
21199           which is not fully implemented in the io-layer.
21200         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
21201
21202 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
21203
21204         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
21205         threads-types.h: more API cleanups.
21206
21207 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21208
21209         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
21210         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
21211         threadpool.c, threads.c: first pass at the exported API cleanup.
21212
21213 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21214
21215         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
21216
21217 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21218
21219         * icall.c: added internalGetHome.
21220
21221 2004-06-14  Dick Porter  <dick@ximian.com>
21222
21223         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
21224         possible to return successfully when '.' or '..' were the only
21225         entries in a directory, but were skipped.  The MonoIOStat was not
21226         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
21227         Fixes bug 59574.
21228
21229 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21230
21231         * reflection.c: make binaries run on .Net 1.1 by default.
21232
21233 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21234
21235         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
21236
21237 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
21238
21239         * marshal.c: keep track of struct size with explicit layout
21240         (bug #59979).
21241
21242 2004-06-12  Martin Baulig  <martin@ximian.com>
21243
21244         * mono-debug-debugger.c: Comment out a debugging g_message().
21245
21246 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21247
21248         * reflection.c, reflection.h: do not free custom attrs that are cached.
21249         * icall.c: use braces to make code clearer.
21250
21251 2004-06-11  Martin Baulig  <martin@ximian.com>
21252
21253         * class.h (MonoInflatedField): New type.
21254         (MonoClassField): Replaced `MonoType *generic_type' with
21255         `MonoInflatedField *generic_info'.
21256
21257         * icall.c
21258         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21259
21260 2004-06-11  Martin Baulig  <martin@ximian.com>
21261
21262         * reflection.c (mono_image_create_method_token): Correctly encode
21263         varargs methods.
21264
21265 2004-06-11  Martin Baulig  <martin@ximian.com>
21266
21267         * metadata.c (mono_metadata_parse_method_signature): When parsing
21268         a MethodDef which has VarArgs, also set sentinelpos if we don't
21269         have any parameters.
21270
21271 2004-06-11  Martin Baulig  <martin@ximian.com>
21272
21273         * verify.c (mono_method_verify): In CEE_CALL, use
21274         mono_method_get_signature() to get the method's signature, unless
21275         we're a PInvoke method.
21276
21277 2004-06-10  Jackson Harper  <jackson@ximian.com>
21278
21279         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21280         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21281         logical name as the supplied path is just a prefix to the gac not
21282         the direct path to it.
21283         
21284 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21285
21286         * reflection.c: make the token for a created method match
21287         the token of the MethodBuilder it was created from
21288         (IKVM requires this behaviour now).
21289
21290 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21291
21292         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21293         reflection.c, socket-io.c: leak fixes.
21294
21295 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21296
21297         * icall.c: handle sentinel pos in vararg methods in position different
21298         from 0.
21299
21300 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21301
21302         * culture-info-tables.h: freshly generated.
21303
21304 2004-06-09  Martin Baulig  <martin@ximian.com>
21305
21306         * loader.c (mono_get_method_constrained): Call `mono_class_init
21307         (constrained_class)'.   
21308
21309 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21310
21311         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21312         any methods. Fixes #59629.
21313
21314 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21315
21316         * culture-info-tables.h: reflecting locale-builder updates.
21317
21318 2004-06-08  Dick Porter  <dick@ximian.com>
21319
21320         * object.h:
21321         * locales.c: Fixed compile warnings, including a real bug in
21322         CompareInfo_internal_compare.
21323         
21324 2004-06-08  Dick Porter  <dick@ximian.com>
21325
21326         * locales.c
21327         (ves_icall_System_Globalization_CompareInfo_internal_index):
21328         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21329         Double-check the resuls of usearches, because ICU currently
21330         ignores most of the collator settings here.  Fixes bug 59720.
21331         
21332 2004-06-08  Dick Porter  <dick@ximian.com>
21333
21334         * locales.c
21335         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21336         Fix memory leak and segfault-causing typo.  No idea how this one
21337         lasted so long without being noticed.
21338
21339 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21340
21341         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21342         any methods. Fixes #59629.
21343
21344 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21345
21346         * assembly.c:
21347         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21348         own the critical section before). Removed dead code (that's done
21349         in the preload hook).
21350
21351         (mono_assembly_load_with_partial_name): call the preload hook.
21352
21353 2004-06-08  Martin Baulig  <martin@ximian.com>
21354
21355         * metadata.c (mono_metadata_signature_alloc): Default
21356         `sentinelpos' to -1.
21357
21358         * reflection.c (mono_image_get_array_token): Likewise.
21359
21360 2004-06-08  Martin Baulig  <martin@ximian.com>
21361
21362         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21363
21364         * metadata.c (mono_metadata_parse_method_signature): When parsing
21365         a MethodDef which has VarArgs, set sentinelpos.
21366
21367         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21368         `gint16' since we're using -1 for non-varargs methods.
21369
21370         * reflection.c
21371         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21372         (method_encode_signature): Added varargs support.
21373         (method_builder_encode_signature): Likewise.
21374         (mono_image_get_varargs_method_token): New static method.
21375         (mono_image_create_method_token): New public method; this is
21376         called via an icall instead of mono_image_create_token() when
21377         calling a varargs method.       
21378
21379 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21380
21381         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21382
21383 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21384
21385         * culture-info-tables.h : Reflecting the latest locale-builder that
21386           fixed empty array representation ({} to {0}).
21387
21388 2004-06-07  Jackson Harper  <jackson@ximian.com>
21389
21390         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21391         looking up extra gac paths. This allows MONO_GAC_PATH to act
21392         exactly like a prefix.
21393         
21394 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21395
21396         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21397         type name before modifying it. Fixes #59405.
21398
21399 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21400
21401         * culture-info.h: added fields for "all datetime patterns".
21402         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21403           _construct_datetime_format ()): fill xxx_patterns fields.
21404         * object.h: added fields for "all datetime patterns" to
21405           MonoDateTimeFormatInfo.
21406         * culture-info-tables.h: reflecting locale-builder updates.
21407
21408 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21409
21410         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21411         the event has no add and remove methods. Fixes #59629.
21412
21413 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21414
21415         * object.c: Fixed possible integer overflow when allocating large
21416         strings.
21417
21418 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21419
21420         * culture-info-tables.h: reflecting locale-builder updates.
21421
21422 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21423
21424         * culture-info-tables.h: reflecting locale-builder updates.
21425
21426 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21427
21428         * culture-info-tables.h: reflecting locale-builder updates.
21429
21430 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21431
21432         * threads.c: Made Thread.Sleep abortable.
21433
21434 2004-06-02  Martin Baulig  <martin@ximian.com>
21435
21436         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21437
21438         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21439
21440 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21441
21442         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21443
21444 2004-05-30  Jackson Harper  <jackson@ximian.com>
21445
21446         * reflection.c: Do not hardcode assembly versions or public key
21447         tokens anymore. All of this except the corlib section was dead
21448         code anyways.
21449         
21450 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21451
21452         * object.c (mono_runtime_invoke_array): Automatically create boxed
21453         objects for byref valuetypes if needed. Fixes #59300.
21454         
21455         * object.c (mono_method_return_message_restore): Handle 
21456         MONO_TYPE_OBJECT as well.
21457
21458 2004-05-28  Jackson Harper  <jackson@ximian.com>
21459
21460         * reflection.c: The modified type encoding was causing build
21461         problems. Reverted for now.
21462         
21463 2004-05-28  Jackson Harper  <jackson@ximian.com>
21464
21465         * reflection.c/h: Take an assembly ref so that we dont create
21466         fully qualified names when encoding types in the same assembly as
21467         the custom attribute being emitted.
21468         * appdomain.c: Increment version number.
21469         
21470 2004-05-26  Duncan Mak  <duncan@ximian.com>
21471
21472         * icall.c
21473         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21474         Set the full version number (major, minor, build, revision).
21475
21476 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21477
21478         * marshal.c (emit_struct_conv): increment src/dst after blit
21479         (mono_marshal_get_managed_wrapper,
21480         mono_marshal_get_native_wrapper): make sure we have marshalling
21481         info before marshalling params (info computation affects
21482         blittable)
21483
21484         * class.c (class_compute_field_layout): correctly deal with
21485         blittable
21486         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21487         value types (as per what windows dows by default)
21488         (mono_class_setup_mono_type): System.ValueType is blittable
21489         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21490         blittable
21491
21492         * marshal.c (mono_marshal_load_type_info): flag types  as
21493         non-blittable if the native layout doesn't match the managed
21494         layout
21495
21496 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21497
21498         * appdomain.c: don't add stuff in the private search path that is
21499         above the application base. If application base is not set, there's
21500         no private search path.
21501
21502 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21503
21504         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21505         byref struct arguments in native->managed marshalling.
21506
21507 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21508
21509         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21510         cache methods using signature (special case for methods
21511         that are value type or string class)
21512         
21513         * image.c (mono_image_close): clean up allocated GSList's
21514         in runtime_invoke_cache.
21515
21516 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21517
21518         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21519         there's no MONO_CFG_DIR environment variable defined.
21520
21521 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21522
21523         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21524
21525 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21526
21527         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21528           is interrumped.
21529         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21530           before waiting for it, and call CloseHandle after the wait to unref it.
21531           This will make sure that handles are not disposed too early.
21532
21533 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21534
21535         * appdomain.c:
21536         * appdomain.h:
21537         * icall.c: removed
21538         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21539         needed now.
21540
21541         * object.c: se the application_base only for the domain that runs
21542         Main. Fixes bug #59216,
21543
21544 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21545
21546         * appdomain.c:
21547         * object.c: only the domain in which Main is run have
21548         SetupInformation.ConfigurationFile set, so moved a few lines from
21549         appdomain.c to object.c.
21550
21551 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21552
21553         * appdomain.c: we tried to load [name].(dll|exe), but according
21554         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21555         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21556         There's a test case attached to bug #58922.
21557
21558 2004-05-27  Dick Porter  <dick@ximian.com>
21559
21560         * icall.c:
21561         * file-io.c: Implemented icalls for locking and unlocking regions
21562         in a file.
21563         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21564         FALSE on error (fixes both compiler warning and real bug.)
21565
21566 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
21567
21568         * culture-info-tables.h: reflecting locale-builder updates.
21569
21570           (Added missing ChangeLog entry for 05/26)
21571
21572 2004-05-27  Jackson Harper  <jackson@ximian.com>
21573
21574         * locales.c: Fix some cut and paste errors.
21575         
21576 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21577
21578         * mono-config.c: set the correct path for config. directory on windows.
21579
21580 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21581
21582         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
21583           on win32.
21584
21585 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21586
21587         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
21588         from pinvoke functions.
21589         
21590         * marshal.c (mono_ftnptr_to_delegate): Implement this.
21591
21592 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21593
21594         * culture-info-tables.h: reflecting locale-builder updates.
21595
21596 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21597
21598         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
21599         #59086.
21600
21601 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
21602
21603         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
21604         * icall.c: Modified icalls for RNG.
21605         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
21606         Windows (CryptoAPI).
21607
21608 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21609
21610         * locales.c: Fix build.
21611
21612 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
21613
21614         * culture-info-tables.h: reflecting locale-builder updates.
21615
21616 2004-05-25  Jackson Harper  <jackson@ximian.com>
21617
21618         * locales.c: When creating the current culture use the $LANGs
21619         specific culture. So DateTimeFormat and NumberFormat entries are created.
21620         
21621 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21622
21623         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
21624         a char array as parameter.
21625
21626 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
21627
21628         * image.c: In mono_image_open(), always use an absolute path name to
21629           look for already loaded images.
21630
21631 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
21632
21633         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
21634         missing in the windows build (like older cygwin include files).
21635
21636 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
21637
21638         * icall.c: Fixed check for possible integer overflow in Buffer_
21639         BlockCopy icall. Replaced comments style // by /* */.
21640
21641 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21642
21643         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
21644         
21645         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
21646         check after MONO_VTADDR. Fixes pinvoke2.exe.
21647
21648         * marshal.h marshal.c metadata.h: Add beginnings of support for
21649         ftnptr -> delegate marshalling.
21650
21651 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21652
21653         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
21654         * threads.c: Fix warnings.
21655
21656 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21657
21658         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
21659         * icall.c: Registered icalls for Suspend and Resume.
21660         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
21661           Thread.Abort.
21662         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
21663         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
21664         * process.c: Use WaitForSingleObjectEx.
21665         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
21666           checkpoints.
21667         * threads.c, threads.h: Make use of new Ex wait methods. Improved
21668           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
21669           for Suspend and Resume. Added new mono_thread_stop, used for stoping
21670           background threads. Added basic support for Abort in Windows.
21671           Start new threads using a managed delegate invoke wrapper. This wrapper
21672           has an interruption checkpoint that is needed since an interruption
21673           can be requested before the thread leaves the unmanaged code that starts 
21674           the thread.
21675         * marshal.c: Added interruption checkpoint after every native call, and
21676           also before managed calls for wrappers called from unmanaged code to
21677           go into managed code.
21678         * object.h: Added new field in MonoThread to keep track of interruption
21679           requests.
21680
21681 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21682
21683         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
21684         calls.
21685
21686 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21687
21688         * appdomain.c:
21689         * assembly.c:
21690         * gc.c:
21691         * locales.c:
21692         * mono-config.c:
21693         * rand.c: getenv -> g_getenv (windows!)
21694
21695         * process.c: complete_path is also used on non-windows platforms.
21696
21697 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21698
21699         * icall.c: new signature for Process_Start.
21700
21701         * process.[ch]: new signature for Process_Start. If we're on windows
21702         and UseShellExecute is false, we have to search for the program by
21703         ourselves if we don't get a full path.
21704
21705 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21706
21707         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
21708         marshalling and call CleanUpNativeData if needed. Fixes #58646.
21709
21710 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21711
21712         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
21713         Fixes bug #58373.
21714
21715 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21716
21717         * process.c: use double quotes to quote program name and arguments on
21718         windows. Fixes bug #58575.
21719
21720 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21721
21722         * file-io.c: don't return "." and ".." when using windows Find*File.
21723
21724 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
21725
21726         * marshal.c: Don't pass wrappers to message init because method 
21727         addressed used to lookup metadata. part of remoting[2|3] fix.
21728
21729 2004-05-15  Jackson Harper  <jackson@ximian.com>
21730
21731         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
21732         path is essentially the same as MONO_PATH except that it points to
21733         GACs instead of lib directories.
21734         * loader.h: The user gac is gone so we dont need function to
21735         enable/disable it.
21736         * mono-config.c: user gac option is now gone.
21737         
21738 2004-05-15  Jackson Harper  <jackson@ximian.com>
21739
21740         * culture-info.h: Make defines more consistent, add calendar data
21741         to the culture info table.
21742         * culture-info-tables.h: Add basic calendar data. Basically
21743         everyone gets default gregorian until all the data is
21744         updated.
21745         * locales.c: Use the new consistent defines. Set calendar data for
21746         culture info objects.
21747         * object.h: add a field for calendar data to CultureInfo
21748         
21749 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21750
21751         * image.c: image->runtime_invoke_cache is keyed on signatures now.
21752         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
21753         a signature.
21754         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
21755         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
21756         an extra param that is the pointer of the method to invoke. The IL for
21757         the invoke method is no longer specific to the method, but to the
21758         signature of the method. Thus, we can share the same code for multiple
21759         methods. This reduces the number of methods that have to be compiled.
21760
21761 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21762
21763         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
21764
21765         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21766
21767         * icall.c: Optimize Buffer.BlockCopy.
21768
21769 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21770
21771         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
21772         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
21773         quote). Changed them to "MMMM yyyy".
21774
21775 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
21776
21777         * rand.c
21778         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
21779
21780 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
21781
21782         * reflection.h: Updated after changes to managed structures.
21783
21784         * appdomain.c: Bump corlib version.
21785
21786 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21787
21788         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
21789         windows.
21790
21791 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21792
21793         * Makefile.am: link to ../os/libmonoos.la on windows.
21794
21795         * assembly.c:
21796                 -If MONO_DEBUG, warn about non-existing directories in
21797                 MONO_PATH.
21798                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
21799                 compile time variable.
21800                 -Removed init_default_path and call mono_set_rootdir from
21801                 libmonoos.a instead (windows only).
21802
21803         * assembly.h: declare mono_assembly_getrootdir().
21804
21805         * domain.c:
21806         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
21807
21808         * loader.c: s/getenv/g_getenv/
21809
21810 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21811
21812         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
21813
21814         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
21815
21816         * metadata.h: Add new marshalling conversions.
21817
21818         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
21819         function.
21820
21821         * reflection.c (mono_reflection_get_type): Lookup the type in all
21822         modules of a multi-module assembly. Fixes #58291.
21823
21824 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21825
21826         * threads.c: Before aborting a background, set the StopRequested
21827         state.  This avoids throwing the Abort exception.
21828         In mono_thread_manage, don't continue with the shutdown until all
21829         aborted threads have actually stopped.
21830
21831 2004-05-10  Jackson Harper  <jackson@ximian.com>
21832
21833         * locales.c: Remove the modifier from culture names.
21834         
21835 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21836
21837         * Makefile.am: monosn is not installed any more. It has been deprecated
21838         in favor of sn.
21839
21840 2004-05-07  Jackson Harper  <jackson@ximian.com>
21841
21842         * locales.c
21843         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
21844         Fix array construction, add bailout if the length is 0.
21845
21846 2004-05-07  Dick Porter  <dick@ximian.com>
21847
21848         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
21849         machine doesn't have a DNS entry.  Patch by Urs Muff
21850         (umuff@quark.com), fixes bug 57928.
21851
21852 2004-05-06  Jackson Harper  <jackson@ximian.com>
21853
21854         * reflection.c: Handle null PublicTokens properly. alloc mem for
21855         assembly names culture so we dont crash when freeing it.
21856         
21857 2004-05-06  Jackson Harper  <jackson@ximian.com>
21858
21859         * assembly.c: Check the usergac when loading with partial names.
21860         
21861 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21862
21863         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
21864         does nothing for now (not required for Linux/Windows) but the class
21865         library can call it (and a newer or modified runtime could need it).
21866         * icall.c: Registred icall.
21867
21868 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21869
21870         * loader.c: prints a message on module loading error we set MONO_DEBUG
21871         environment variable.
21872
21873 2004-05-05  Jackson Harper  <jackson@ximian.com>
21874
21875         * appdomain.c: Handle PublicKeyToken=null properly.
21876         
21877 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21878
21879         * environment.c|h: Added icall ves_icall_System_Environment_
21880         GetOSVersionString to get the current OS version as a string.
21881         * icall.c: Registred icall.
21882
21883 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
21884
21885         * object.c: in mono_object_get_virtual_method(), take into account that
21886         non-virtual methods don't have a slot in the vtable. Check needed when
21887         the object is a proxy.
21888
21889 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21890
21891         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
21892         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
21893
21894         * object.c (mono_class_compute_gc_descriptor): Fix warning.
21895
21896         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
21897         passed when a valuetype is expected.
21898
21899         * object.c (mono_unhandled_exception): Only set the exit code if the
21900         exception happens in the main thread. Fixes thread5.exe.
21901
21902         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
21903         invalid names. Fixes #58047.
21904
21905 2004-05-03  Jackson Harper  <jackson@ximian.com>
21906
21907         * assembly.c: This line was committed accidently and is unneeded.
21908         
21909 2004-05-03  Jackson Harper  <jackson@ximian.com>
21910
21911         * icall.c: Add new icall for Assembly::LoadWithPartialName
21912         * assembly.c/.h: new function that probes the GAC to load partial
21913         assembly names by Paolo Molaro.
21914         
21915 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21916
21917         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
21918         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
21919         (type_get_fully_qualified_name): Added PublicKeyToken when building a
21920         full type name.
21921
21922 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21923
21924         * appdomain.c: fixed check for 'neutral' culture and removed warning.
21925         * reflection.c: fix bug when parsing a full type name and Version is not
21926         the last thing in the string.
21927
21928 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
21929
21930         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
21931         crashes when it is freed.
21932
21933 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21934
21935         * assembly.c: print the compat warning to stderr.
21936
21937 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
21938
21939         * assembly.c (mono_assembly_load_references): Add a compatibility
21940         hack to run old applications that might be still referencing the
21941         3300-based assemblies, only do this for System.xxx.
21942
21943 2004-05-01  Jackson Harper  <jackson@ximian.com>
21944
21945         * appdomain.c: If the culture is neutral we set it to "".
21946         
21947 2004-04-29  Jackson Harper  <jackson@ximian.com>
21948
21949         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
21950
21951 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
21952  
21953         * string-icalls.c: added low overhead function for copying chars
21954         * icall.c: added needed icall for the above function
21955  
21956 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21957
21958         * icall.c: fix return value of get_global_assembly_cache.  Implemented
21959         Environment.GetLogicalDrives.
21960
21961 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
21962
21963         * rand.c: try and talk to egd or prngd
21964         for random bytes if opening devices fail.
21965
21966 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21967
21968         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
21969         alignment for the type using the native alignment of its members 
21970         instead of using klass->min_align.
21971
21972         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
21973
21974 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21975
21976         * file-io.c:
21977         * socket-io.c: added check for sys/aio.h.
21978
21979 2004-04-28  Dick Porter  <dick@ximian.com>
21980
21981         * threads.c: Don't abort a thread thats already aborting, when
21982         terminating everything.
21983
21984 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21985
21986         * icall.c: added 2 new async calls for Socket.
21987
21988         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
21989         IO on *nix systems.
21990
21991         * threadpool.c: removed unused variable.
21992
21993 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
21994
21995         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
21996
21997 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21998
21999         * locales.c: put back string_invariant_tolower () and
22000         string_invariant_toupper ().
22001
22002 2004-04-26 David Waite <mass@akuma.org>
22003
22004         * file-io.h:
22005         * socket-io.h:
22006         * threads.h:
22007         * unicode.h: remove comma from end of enumeration declarations
22008
22009 2004-04-26 David Waite <mass@akuma.org>
22010
22011         * debug-mono-symfile.h:
22012         * decimal.c:
22013         * mono_debug.h:
22014         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
22015
22016
22017 2004-04-26  Jackson Harper  <jackson@ximian.com>
22018
22019         * appdomain.c: Increment version number.
22020         
22021 2004-04-26  Jackson Harper  <jackson@ximian.com>
22022
22023         * appdomain.c: Set assembly references public token value when
22024         PublicKeyToken is specified, not the hash_value. Free public token
22025         values when free assembly name data. Previously the public key
22026         token was hex decoded, however we are using hex encoded public key
22027         tokens, so this is not neccasary.
22028         * assembly.c: Lookup assemblies in the gac if their public token
22029         value is set. Add function to allow enabling user gac
22030         lookups. Specify whether or not the assembly was loaded from the
22031         GAC. Compare full assembly names when checking the cache for
22032         assemblies (Temporarily disabled see comment in code). Remove
22033         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
22034         specifies trace-loader they get extra info to stdout on the
22035         loading of assemblies.
22036         * image.h: Add a field for an assembly references public token
22037         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
22038         whether an assembly has been loaded from the GAC.
22039         * image.c: Remove a corlib -> mscorlib name mapping.
22040         * loader.h: Add function to enable/disable the user gac.
22041         * mono-config.c: Check if the usergac is enabled in the config
22042         file.
22043         * icall.c: New icall to determine whether or not an assembly has
22044         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
22045         * tabldefs.h: Add constant for assemblyref flag that specifies a
22046         full public key is used instead of a public token.
22047         * reflection.c: Remove mscorlib -> corlib mappings. Set
22048         PublicTokenValue instead of hash value. This value is a hex
22049         string so it does not need to be expanded.
22050
22051 2004-04-26  Martin Baulig  <martin@ximian.com>
22052
22053         * mono-debug-debugger.c (mono_debugger_initialize): Set
22054         `mono_debugger_initialized' before calling mono_debug_lock().
22055
22056 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
22057
22058         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
22059           InternalToUpper/InternalToLower.
22060         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
22061           removed invariant culture shortcut.  This is now done in managed code.
22062         * locales.c: (string_invariant_toupper/tolower) removed.
22063
22064 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22065
22066         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
22067         Added Poll internal call.
22068
22069         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
22070         call for Poll. Select was too heavy for polling a single socket.
22071
22072         * threadpool.[ch]: added mono_threadpool_cleanup.
22073         * threads.c: use it. Don't use Thread_Abort on windows.
22074
22075 2004-04-23  Martin Baulig  <martin@ximian.com>
22076
22077         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
22078
22079 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
22080
22081         * icall.c: Registred new icalls for key pair protection and added an
22082         icall for Environment.GetFolderPath on Windows.
22083         * security.c|h: Added new icalls for key pair protection.
22084
22085 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22086
22087         * socket-io.c: don't display the non-supported family warning for known
22088         families. Now this is not displayed on windows when checking support
22089         for IPv4/IPv6.
22090
22091 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22092
22093         * class.c: don't display the layout warning for static fields.
22094
22095 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
22096
22097         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
22098         * locales.c, locales.h: Added new icalls for culture-specific
22099         Char.ToLower and Char.ToUpper.
22100
22101 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22102
22103         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
22104         by David Waite.
22105
22106 2004-04-20  Martin Baulig  <martin@ximian.com>
22107
22108         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
22109         of the type name before passing it to mono_reflection_type_from_name().
22110
22111 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22112
22113         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
22114         encodings here. Fixes #56965.
22115
22116 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
22117
22118         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22119         fix test on strstr result not that I can see anything that
22120         relies on the result.
22121
22122 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22123
22124         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
22125         Fixes #57081.
22126
22127         * marshal.c (mono_marshal_get_string_encoding): New helper function.
22128
22129         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
22130         function to determine which marshalling to use for strings. Fixes
22131         #56965.
22132
22133         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
22134
22135         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
22136
22137 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
22138
22139         * icall.c: #include mono-config.h
22140
22141 2004-04-15  Jackson Harper  <jackson@ximian.com>
22142
22143         * culture-info-tables.h: Fix date formats for en-US culture.
22144         
22145 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
22146
22147         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
22148         ThreadPool.SetMinThreads.
22149         * threadpool.c: Implemented ThreadPool.GetMinThreads and
22150         ThreadPool.SetMinThreads.
22151
22152 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22153
22154         * mono-config.c: also load the .config file in the directory
22155         where the assembly was found.
22156
22157 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22158
22159         * assembly.c: load per-assembly config files.
22160         * icall.c: decrapified code to get the config dir and moved to
22161         mono-config.c.
22162         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
22163         per-assembly config files. When doing a dll map lookup give precedence
22164         to the per-assembly data.
22165
22166 2004-04-14  Martin Baulig  <martin@ximian.com>
22167
22168         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
22169         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
22170         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
22171
22172         * mono-debugger-debugger.c: While the debugger is locked, remember
22173         whether the symbol tables have changes and send one single
22174         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
22175
22176 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22177
22178         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
22179
22180         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
22181         function.
22182
22183         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
22184         account when marshalling string arrays. Fixes #56965.
22185
22186 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
22187
22188         * icall.c: Add new icalls mapping for security.
22189         * security.c|h: Add internal calls for WindowsIdentity,
22190         WindowsImpersonationContext and WindowsPrincipal.
22191
22192 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
22193
22194         * class.c: Added comment to ensure the System.MonoDummy class
22195         is removed when no longer necessary
22196
22197 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22198
22199         * appdomain.c: Pass arguments to the bootstraping exceptions to
22200         minimize JITed methods at boot
22201
22202         * metadata.c (mono_exception_from_name_two_strings): Allow for the
22203         second string to be null.
22204
22205         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22206         Change the protocol to minimize the JIT methods at startup.  Now
22207         it Returns the internal codepage, if the value of "int_code_page"
22208         is 1 at entry, and we can not compute a suitable code page
22209         number, returns the code page as a string.
22210
22211 2004-04-13  Jackson Harper  <jackson@ximian.com>
22212
22213         * culture-info-tables.h: Fix number of decimal digits for all
22214         english locales.
22215
22216 2004-04-13  Jackson Harper  <jackson@ximian.com>
22217
22218         * icall.c: Clairfy out of sync error message. It is not always
22219         your corlib that is out of sync.
22220
22221 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
22222
22223         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
22224         properties when only the set accessor is overriden. Fixes #55874.
22225
22226 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
22227
22228         * assembly.c (mono_assembly_load_references): Make this thread safe.
22229         Fixes #56327.
22230
22231 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22232
22233         * monosn.c: Add missing initialization calls.
22234
22235 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
22236
22237         * locales.c:
22238         ves_icall_System_Globalization_CultureInfo_construct_number_format
22239         Fix g_assert so it compiles on fussier compilers re int/ptr
22240         mismatch
22241
22242 2004-04-08  Dick Porter  <dick@ximian.com>
22243
22244         * socket-io.h:
22245         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
22246         53992.  Also rearrange the code so that the internal calls return
22247         an error value and exceptions are thrown from managed code.
22248
22249         * icall.c: Add type info to the socket icalls.
22250
22251 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22252
22253         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22254         owes me a beer.
22255
22256 2004-04-07  Martin Baulig  <martin@ximian.com>
22257
22258         * class.c (mono_class_from_generic_parameter): Don't default
22259         `klass->parent' to `mono_defaults.object_type'.
22260
22261 2004-04-07  Martin Baulig  <martin@ximian.com>
22262
22263         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22264         `param->pklass->reflection_info'.       
22265
22266 2004-04-07  Jackson Harper  <jackson@ximian.com>
22267
22268         * culture-info-tables.h: Fix date separator symbol.
22269         
22270 2004-04-07  Martin Baulig  <martin@ximian.com>
22271
22272         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22273         from System.Type to System.MonoType.
22274
22275 2004-04-07  Martin Baulig  <martin@ximian.com>
22276
22277         * reflection.h
22278         (MonoReflectionGenericParam): Added `has_reference_type' and
22279         `has_value_type' fields.
22280
22281         * reflection.c (mono_image_get_generic_param_info): Encode the
22282         correct flags if we have the `class' or `struct' constraint.
22283
22284 2004-04-07  Martin Baulig  <martin@ximian.com>
22285
22286         * reflection.h
22287         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22288
22289 2004-04-07  Jackson Harper  <jackson@ximian.com>
22290
22291         * appdomain.c: Revert extra patches, just wanted to bump the
22292         version number.
22293         
22294 2004-04-07  Jackson Harper  <jackson@ximian.com>
22295
22296         * Makefile.am: Add culture-info private headers.
22297         * icall.c: Add new icalls for contructing locales.
22298         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22299         * locales.h: Declare new culture info construction methods.
22300         * object.h: Add new fields used to avoid the CultureMap to
22301         MonoCultureInfo.
22302         * culture-info.h: Definition of structs used in the culture info
22303         tables.
22304         * culture-info-tables.h: Autogenerated tables that contain culture
22305         info data. This file was generated with the locale-builder tool.
22306         * appdomain.c: Incement corlib version number.
22307         
22308 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22309
22310         * appdomain.c: (mono_runtime_init) move mono_thread_init
22311         to before mono_object_new calls so critical sections
22312         are initialized before use.
22313
22314 2004-04-07  Martin Baulig  <martin@ximian.com>
22315
22316         * icall.c
22317         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22318         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22319         (ves_icall_MonoGenericParam_initialize): Removed.
22320         (monogenericparam_icalls): Removed.
22321         (generictypeparambuilder_icalls): Added new table for
22322         System.Reflection.Emit.GenericTypeParameterBuilder.
22323
22324         * reflection.c
22325         (mono_reflection_define_generic_parameter): Removed.
22326         (mono_reflection_initialize_generic_parameter): This is now called
22327         from GenericTypeParameterBuilder's .ctor.
22328
22329 2004-04-06  Martin Baulig  <martin@ximian.com>
22330
22331         * class.c (mono_class_init): Don't inflate nested classes in a
22332         generic instance.
22333         (mono_type_get_name_recurse): Include the generic arguments for
22334         generic instances and generic type declarations.
22335         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22336         (_mono_class_get_instantiation_name): Removed.
22337         (mono_class_create_generic): Always use `gklass->name' as our name.
22338
22339         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22340
22341         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22342         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22343         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22344         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22345         closed generic methods here.
22346
22347         * reflection.c
22348         (mono_reflection_generic_inst_get_nested_types): Removed.
22349         (inflate_mono_method): Copy the generic parameters from the
22350         MonoMethodHeader into out MonoGenericMethod.
22351
22352 2004-04-06  Martin Baulig  <martin@ximian.com>
22353
22354         * row-indexes.h
22355         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22356
22357         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22358
22359         * reflection.c (build_compressed_metadata): If we have any entries
22360         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22361         set the header version to 1.1.
22362
22363 2004-04-06  Martin Baulig  <martin@ximian.com>
22364
22365         * class.c (mono_class_init): If we're a generic instance,
22366         initialize our nested classes, too.
22367         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22368         suffix. 
22369
22370 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22371
22372         * process.c: quote the argument passed to the shell on windows.
22373
22374 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22375
22376         * threads.c (mono_alloc_special_static_data): Allow this to be
22377         called during startup.
22378
22379 2004-04-02  Martin Baulig  <martin@ximian.com>
22380
22381         * icall.c
22382         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22383
22384 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22385
22386         * icall.c: Fix build.
22387
22388 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22389
22390         * Makefile.am: Added security.c|h.
22391         * icall.c: Added icall for get_UserName;
22392         * security.c: New file for security related icalls. Added function
22393         get_UserName for System.Environment (fix #56144).
22394         * security.h: New. Header file for security.c
22395
22396 2004-04-02  Dick Porter  <dick@ximian.com>
22397
22398         * icall.c: Deleted the icalls that were obsoleted some time ago
22399         by the ICU string code, and which were mixed into the icall
22400         rearranging.  Fixes bug 55969.
22401
22402         * string-icalls.h: 
22403         * string-icalls.c: Deleted the code that those icalls reference.
22404
22405 2004-04-01  Martin Baulig  <martin@ximian.com>
22406
22407         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22408
22409         * class.c (mono_class_from_generic_parameter): Don't set 
22410         TYPE_ATTRIBUTE_INTERFACE.
22411         (my_mono_class_from_generic_parameter): Likewise.
22412
22413 2004-04-01  Martin Baulig  <martin@ximian.com>
22414
22415         * loader.c (find_method): Added an optional `MonoClass *ic'
22416         argument to search in a specific interface.
22417         (mono_get_method_constrained): New public function.
22418
22419 2004-04-01  Martin Baulig  <martin@ximian.com>
22420
22421         * reflection.c (mono_image_get_generic_field_token): Use the
22422         `handleref' cache here.
22423
22424 2004-04-01  Martin Baulig  <martin@ximian.com>
22425
22426         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22427
22428         * reflection.c (create_generic_typespec): Use the `typespec' hash
22429         here, not the `typeref' one.    
22430
22431 2004-04-01  Martin Baulig  <martin@ximian.com>
22432
22433         * class.c (mono_class_inflate_generic_type): Moved the
22434         functionality into a new static inflate_generic_type() which
22435         returns NULL if it didn't do anything.  Only increment the
22436         `mono_stats.inflated_type_count' if we actually inflated
22437         something.
22438         (mono_class_get_full): Check the classes type to see whether we
22439         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22440
22441 2004-04-01  Jackson Harper  <jackson@ximian.com>
22442
22443         * reflection.c: Set culture for assembly references.
22444         
22445 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22446
22447         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22448
22449 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22450
22451         * assembly.c:
22452         (do_mono_assembly_open): the critical section also covers
22453         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22454
22455 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22456
22457         * threads.c:
22458         (mono_manage_threads): abort the background threads when finishing.
22459         Fixes bug #47232.
22460
22461 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22462
22463         * gc.c: only close the done_event handle if there was no timeout.
22464         C-ified comments.
22465
22466 2004-03-30  Martin Baulig  <martin@ximian.com>
22467
22468         * icall.c (icall_entries): It's called "System.Activator", not
22469         "System.Activation".    
22470
22471 2004-03-30  Martin Baulig  <martin@ximian.com>
22472
22473         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22474         (mono_class_create_from_typespec): Likewise.
22475
22476 2004-03-30  Martin Baulig  <martin@ximian.com>
22477
22478         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22479         `has_ctor_constraint' and `initialized'.
22480
22481 2004-03-30  Martin Baulig  <martin@ximian.com>
22482
22483         * reflection.c (encode_new_constraint): New static function to add
22484         the constructor constraint attribute to a type parameter.
22485         (encode_constraints): Call encode_new_constraint() if necessary.
22486
22487         * reflection.h
22488         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22489
22490         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22491         
22492 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22493
22494         * reflection.c, icall.c: add support for pinning variables. 
22495
22496 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22497
22498         * marshal.c (mono_marshal_get_managed_wrapper):
22499         init bool local with zero rather than null.
22500
22501 2004-03-29  Martin Baulig  <martin@ximian.com>
22502
22503         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22504         the "official" behavior here.
22505         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22506
22507 2004-03-29  Martin Baulig  <martin@ximian.com>
22508
22509         * icall.c: Reflect latest API changes.
22510
22511 2004-03-29  Martin Baulig  <martin@ximian.com>
22512
22513         * loader.c (mono_get_method_from_token): Also call
22514         mono_metadata_load_generic_params () for abstract and interface
22515         methods; replace the type arguments in the method signature with
22516         the ones which are loaded from the metadata.
22517
22518 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22519
22520         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22521         of the lock is not the current thread. MS.NET don't do it, in spite of
22522         what the documentation says. See bug #56157.
22523
22524 2004-03-28  Martin Baulig  <martin@ximian.com>
22525
22526         * class.c (mono_class_init): Don't call init_properties() and
22527         init_events() for generic instances; set `prop->parent' when
22528         inflating properties.
22529
22530         * reflection.c (mono_generic_inst_get_object): Call
22531         `mono_class_init (ginst->klass)'.
22532         (mono_type_get_object): Only create a MonoGenericInst if your
22533         generic type is a TypeBuilder.
22534         (do_mono_reflection_bind_generic_parameters): Only set
22535         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22536
22537 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22538
22539         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22540         Fixes #56091.
22541
22542 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22543
22544         * icall.c: added Kill_internal icall.
22545         * process.[ch]: added Kill_internal icall.
22546
22547 2004-03-25  Martin Baulig  <martin@ximian.com>
22548
22549         * class.h (MonoStats): Added `generic_instance_count',
22550         `inflated_method_count', `inflated_type_count' and
22551         `generics_metadata_size'.       
22552
22553 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22554
22555         * reflection.c: no warnings now.
22556
22557 2004-03-25  Martin Baulig  <martin@ximian.com>
22558
22559         * class.c (mono_class_get_full): New public function; does a
22560         mono_class_get(), but also takes a `MonoGenericContext *'.
22561
22562         * loader.c (mono_field_from_memberref): Renamed to
22563         `field_from_memberref', made static and added `MonoGenericContext *'
22564         argument.
22565         (mono_field_from_token): Added `MonoGenericInst *' argument.
22566         (method_from_memberef): Likewise.
22567         (mono_get_method_from_token): Likewise.
22568         (mono_get_method_full): New public function; does a
22569         mono_get_method(), but also takes a `MonoGenericContext *'.
22570
22571         * verify.c (mono_method_verify): Get the method's generic context
22572         and pass it to mono_field_from_token(), mono_get_method_full() and
22573         mono_class_get_full().
22574
22575 2004-03-25  Martin Baulig  <martin@ximian.com>
22576
22577         * class.c (mono_class_inflate_generic_type): Take a
22578         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
22579         `MonoGenericMethod *'.
22580
22581 2004-03-25  Martin Baulig  <martin@ximian.com>
22582
22583         * loader.h (MonoMethodInflated): Store the MonoGenericContext
22584         instead of the MonoGenericMethod here.
22585
22586 2004-03-25  Martin Baulig  <martin@ximian.com>
22587
22588         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
22589         each time we create a new MonoGenericInst, we also create a new
22590         context which points back to us.
22591
22592         * class.c (inflate_method): Use `ginst->context' instead of
22593         creating a new context.
22594
22595         * loader.c (method_from_memberref): Use
22596         `klass->generic_inst->context' instead of creating a new context.
22597
22598 2004-03-25  Martin Baulig  <martin@ximian.com>
22599
22600         * class.h (MonoGenericContext): New struct.
22601         (MonoGenericMethod): Removed `generic_inst'.
22602
22603         * class.c (mono_class_inflate_generic_method): Take a
22604         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
22605
22606 2004-03-25  Martin Baulig  <martin@ximian.com>
22607
22608         * loader.h (MonoMethodInflated): New typedef.
22609
22610         * metadata.h (MonoMethodSignature): Removed `gen_method', make
22611         `generic_param_count' consume just 30 bits, added `is_inflated'
22612         and `has_type_parameters' flags (one bit each).
22613
22614         * class.c (mono_class_inflate_generic_method): Create a
22615         MonoMethodInflated instead of a MonoMethodNormal and set
22616         `is_inflated' in the method signature.
22617
22618         * class.h (MonoGenericMethod): Removed `generic_method'.
22619
22620 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
22621
22622         * image.c: Make sure the name of a MonoImage is always an absolute path.
22623           This fixes bug #54415.
22624
22625 2004-03-24  Martin Baulig  <martin@ximian.com>
22626
22627         * class.c (mono_class_setup_vtable): If we're a generic instance,
22628         use our generic type's vtable size.
22629
22630 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
22633         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
22634         problems.
22635
22636 2004-03-23  Martin Baulig  <martin@ximian.com>
22637
22638         * class.h (MonoDynamicGenericInst): Added `int count_events' and
22639         `MonoEvent *events'.
22640
22641         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
22642         (typebuilder_icalls): Added "get_event_info"; calls
22643         mono_reflection_event_builder_get_event_info(). 
22644
22645         * reflection.c (mono_reflection_generic_inst_initialize): Added
22646         `MonoArray *events'.
22647         (mono_reflection_event_builder_get_event_info): New function.
22648
22649 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
22650
22651         * object.h: add mono_type_initialization_init
22652
22653         * object.c (mono_runtime_class_init): 
22654         implement class constructor synchronization rules
22655         to cope with threading issues.  
22656         add mono_type_initialization_init
22657
22658         * appdomain.c (mono_runtime_init): call 
22659         mono_type_initialization_init
22660
22661         * class.h: removing initializing field from MonoVTable
22662
22663 2004-03-23  Martin Baulig  <martin@ximian.com>
22664
22665         * class.c (my_mono_class_from_generic_parameter): Use
22666         `param->name' if it's not NULL. 
22667
22668 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
22669
22670         * class.c: do not insert non-virtual methods in the vtable.
22671         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
22672         that means the method is non-virtual. This never would have
22673         happened before.
22674
22675 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22676
22677         * profiler.c: Added lock for accessing coverage_hash.
22678
22679 2004-03-22  Martin Baulig  <martin@ximian.com>
22680
22681         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
22682         `method->method->signature->generic_param_count != 0' to make it
22683         work for interface methods.
22684
22685 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22686
22687         * process.c: quote the string passed to the shell using g_shell_quote.
22688
22689 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22690
22691         * threads.c:
22692         (mono_threads_manage): don't remove the finalizer thread and self
22693         from the threads hash table so that mono_thread_manage can be called
22694         more than once.
22695
22696 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22697
22698         * process.c: quote the arguments when UseShellExecute is true. Fixes
22699         bug #55790.
22700
22701 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22702
22703         * threads.c: set mono_thread_detach as a cleanup routine for every
22704         thread. This way it's always executed upon thread termination, either
22705         aborted or finished normally. No more xsp hangs!
22706
22707 2004-03-17  Martin Baulig  <martin@ximian.com>
22708
22709         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
22710         `int count_nested' and a `MonoType **nested'.
22711
22712         * reflection.c (mono_reflection_bind_generic_parameters): Moved
22713         most of the functionality into a new static
22714         do_mono_reflection_bind_generic_parameters() and don't take a
22715         `MonoType *nested_in' argument any more.  Don't compute nested
22716         types here.
22717         (mono_reflection_generic_inst_get_nested_types): New public method
22718         to get nested types.
22719
22720         * class.c (mono_class_create_generic): Set `klass->nested_in' if
22721         we're a nested class.
22722
22723         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
22724         mono_reflection_generic_inst_get_nested_types() to compute the
22725         nested types.
22726
22727 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22728
22729         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
22730         descriptive error message under windows.
22731         
22732 2004-03-17  Martin Baulig  <martin@ximian.com>
22733
22734         * class.c (dup_type): Added `const MonoType *original' argument;
22735         copy the attrs from the original type.
22736
22737 2004-03-17  Martin Baulig  <martin@ximian.com>
22738
22739         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
22740         `m->generic_inst_cache' here.
22741
22742 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22743
22744         * exception.h exception.c: Add stack_overflow_exception.
22745
22746 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22747
22748         * threadpool.c:
22749         (overlapped_callback): call SetEvent *after* invoking the callback.
22750         No need to call CloseHandle.
22751
22752 2004-03-16  Martin Baulig  <martin@ximian.com>
22753
22754         * reflection.c (mono_image_get_fieldref_token): Take a
22755         `MonoReflectionField *' instead of a `MonoClassField *' and a
22756         `MonoClass *'; store the `MonoReflectionField *' in the hash.
22757
22758 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22759
22760         * appdomain.c: don't add the culture to the filename we're looking for
22761         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
22762
22763 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22764
22765         * locales.c: don't ignore symbols when doing case insensitive compares.
22766         Thanks Dick! Fixes bug #54046.
22767
22768         * threads.c: surround 'threads' usage with enter/leave in
22769         mono_thread_manage.
22770
22771 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22772
22773         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
22774         implicitly marshalled as [Out]. Fixes #55450.
22775
22776         (mono_marshal_get_runtime_invoke): Zero out the result if there is
22777         an exception.
22778
22779 2004-03-16  Martin Baulig  <martin@ximian.com>
22780
22781         * class.c (mono_class_from_generic_parameter): Use the actual
22782         parameter name. 
22783
22784 2004-03-16  Martin Baulig  <martin@ximian.com>
22785
22786         * reflection.c (type_get_signature_size): New static function.
22787         Compues the size of the type in a method signature.
22788         (method_get_signature_size): New static function; calls
22789         type_get_signature_size() to compute the actual size of the
22790         method's signature.
22791         (method_encode_signature): Use method_get_signature_size() to get
22792         the signature's size rather than using `nparams * 10'.
22793
22794 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22795
22796         * file-io.h: define here WapiOverlapped on windows. I don't want the
22797         regular OVERLAPPED one.
22798
22799         * file-io.c:
22800         * threadpool.c: somehow, BindIoCompletionCallback is not found.
22801         Disabling AIO on windows.
22802
22803 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22804
22805         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
22806         bug #55385.
22807
22808 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22809
22810         * appdomain.c: upgraded corlib version.
22811
22812         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
22813         and BeginWrite. Allow opening files for asynchrnous operations.
22814
22815         * file-io.h: new struct that maps FileStreamAsyncResult.
22816         * icall.c: added new icalls.
22817         * process.[ch]: support setting child process environment variables
22818         and use the SHELL or COMSPEC when UseShellExecute is true.
22819
22820         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
22821         callback for async. IO is here and also BindHandle.
22822
22823         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
22824         from here.
22825
22826 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22827
22828         * reflection.c (create_custom_attr): Allow len == 0.
22829
22830         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
22831         computation on big-endian machines.
22832
22833 2004-03-13  Martin Baulig  <martin@ximian.com>
22834
22835         * class.h (MonoGenericInst): Added `int count_ifaces'.
22836
22837         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
22838         `ginst->count_ifaces' instead `klass->interface_count' since we
22839         may get called before the vtable is created.
22840
22841         * loader.c (mono_method_get_param_names): If we're a generic
22842         instance, return and don't initialize the class.
22843
22844         * reflection.c (mono_reflection_setup_generic_class): Don't call
22845         ensure_runtime_vtable().
22846         (mono_reflection_bind_generic_parameters): Set
22847         `ginst->count_ifaces'.
22848
22849 2004-03-11  Jackson Harper <jackson@ximian.com>
22850
22851         * icall.c:
22852         * unicode.c:
22853         * unicode.h: Remove unused System.Char icalls.
22854         
22855 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
22856
22857         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
22858         code when we P/Invoke the first library in Windows.Forms, instead
22859         of when we first open the assembly.
22860
22861         * assembly.c: Drop the lookup from here.
22862
22863 2004-03-10  Martin Baulig  <martin@ximian.com>
22864
22865         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
22866         class for properties, fields and events.  Finally fixes #54945.
22867
22868 2004-03-10  Martin Baulig  <martin@ximian.com>
22869
22870         * metadata.c (mono_metadata_class_equal): New static function;
22871         checks whether two generic instances or two generic parameters are
22872         equal.
22873         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
22874         compare classes.        
22875
22876 2004-03-10  Martin Baulig  <martin@ximian.com>
22877
22878         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
22879
22880         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
22881         argument and write it into the `reflection_info' field.
22882
22883         * icall.c
22884         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
22885         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
22886
22887 2004-03-09  Jackson Harper  <jackson@ximian.com>
22888
22889         * char-conversions.h: use 8 bits for numeric data its all we need
22890         * icall.c: numeric data is only 8 bits now.
22891
22892 2004-03-09  Martin Baulig  <martin@ximian.com>
22893
22894         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
22895
22896         * class.c (init_properties, init_events): Initialize the new
22897         `parent' field.
22898
22899         * reflection.c (typebuilder_setup_properties): Likewise.
22900         (typebuilder_setup_events): Likewise.
22901
22902         * reflection.h (MonoEventInfo): Replaced `parent with
22903         `declaring_type' and `reflected_type'.
22904
22905         * icall.c (ves_icall_get_property_info): Distinguish between
22906         declaring and reflected type.
22907         (ves_icall_get_event_info): Likewise.
22908
22909 2004-03-09  Martin Baulig  <martin@ximian.com>
22910
22911         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
22912         (ves_icall_Type_GetField): Correctly set field->klass.
22913
22914 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22915
22916         * loader.h: Fix warning.
22917
22918 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
22919
22920         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
22921         library routine if present.  Notice that it will still continue
22922         executing even if its missing, for those working on the Gtk#
22923         edition of Windows.Forms.
22924
22925         * assembly.c (do_mono_assembly_open): If loading the
22926         System.Windows.Forms call mono_loader_wini_init.
22927
22928 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22929
22930         * class.h: Added MonoRemoteClass struct.
22931         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
22932         function for MonoStrings.
22933         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
22934         Added internal call for getting the proxy type.
22935         * marshal.c: Get the type of transparent proxies from its remote_class.
22936         Added methods that generate the IL for type checks and casts:
22937         mono_marshal_get_isinst, mono_marshal_get_castclass, 
22938         mono_marshal_get_proxy_cancast.
22939         * marshal.h: Declaration of the previous new methods.
22940         * object.c: Added new moethods for creating and updating MonoRemoteClass
22941         instances: mono_remote_class, mono_upgrade_remote_class, 
22942         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
22943         * verify.c: FIx transparent_proxy_fields layout.
22944         * appdomain.c: Bump corlib version.
22945
22946 2004-03-04  Jackson Harper  <jackson@ximian.com>
22947
22948         * icall.c: Add icall to access char conversion tables.
22949         * char-conversions.h: Character conversion tables.
22950         * Makefile.am: Add char-conversions.h private header file.
22951         
22952 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
22953
22954         * appdomain.c (unload_thread_main): Increase unloading timeout to
22955         10 sec as a temporary workaround for Nant problems.
22956
22957 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
22958
22959         * gc.c: Add checks for GC_enable and GC_disable.
22960
22961         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
22962         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
22963         (bug #54988).
22964         
22965 2004-02-27  Martin Baulig  <martin@ximian.com>
22966
22967         * reflection.c (mono_reflection_bind_generic_parameters): Take a
22968         `MonoReflectionType *' instead of a `MonoType *'.
22969
22970 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
22971
22972         * gc.c (run_finalize): Avoid finalizing the object representing the
22973         finalizer thread.
22974         (finalizer_thread): Fix warning.
22975
22976 2004-02-25  Martin Baulig  <martin@ximian.com>
22977
22978         * class.c (_mono_class_get_instantiation_name): Added `int offset'
22979         argument for nested types.
22980         (mono_class_create_generic): Added support for nested generictypes.
22981
22982         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
22983         `GList *nested'.
22984
22985         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
22986
22987         * reflection.c (method_encode_signature): Increase the minimum
22988         value of `size' from 10 to 11.
22989         (mono_reflection_bind_generic_parameters): Take `int type_argc'
22990         and `MonoType **types' arguments instead of the `MonoArray
22991         *types'; added `MonoType *nested_in'.  Recursively instantiate
22992         nested classes. 
22993
22994 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
22995
22996         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
22997         stack_overflow_ex members which are used by exception handling.
22998
22999         * appdomain.c (mono_runtime_init): Initialize the new members.
23000
23001         * gc.c (mono_gc_enable): New helper function.
23002         * gc.c (mono_gc_disable): New helper function.
23003
23004 2004-02-23  Martin Baulig  <martin@ximian.com>
23005
23006         * icall.c: I must have been really stupid - make it actually work
23007         this time ;-)
23008
23009 2004-02-23  Martin Baulig  <martin@ximian.com>
23010
23011         * loader.c (method_from_memberref): Only inflate the method if
23012         it's in another klass.
23013
23014 2004-02-23  Martin Baulig  <martin@ximian.com>
23015
23016         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
23017         (mono_class_init): If we're a generic instance and an interface,
23018         compute `class->interface_id'; also create `class->interfaces'
23019         here and inflate them.
23020
23021         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
23022         `ginst->is_open'.
23023         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
23024
23025         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
23026
23027 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
23028
23029         * reflection.c (method_encode_code): Improved the error message
23030         generated by the exception.
23031
23032 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23033
23034         * icall.c: Martin did not do what he said in the ChangeLog for
23035         2004-02-18, but put back the changes for properties and events.
23036         Commenting those changes out again and adding comment to bug #54518.
23037         
23038         * process.c: removed warning.
23039
23040 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
23041
23042         * marshal.c (emit_struct_conv): Print an error message instead of
23043         asserting when a type does not have the StructLayout attribute.
23044
23045 2004-02-20  Martin Baulig  <martin@ximian.com>
23046
23047         * reflection.c (mono_type_get_object): Also use the cache for
23048         generic instances.
23049         (mono_reflection_bind_generic_parameters): Always compute
23050         `ginst->ifaces'.        
23051
23052 2004-02-20  Martin Baulig  <martin@ximian.com>
23053
23054         * class.h (MonoGenericMethod): Removed `klass'.
23055
23056         * class.c (mono_class_inflate_generic_method): Added `MonoClass
23057         *klass' argument.
23058
23059 2004-02-20  Martin Baulig  <martin@ximian.com>
23060
23061         * reflection.c (method_encode_methodspec): Actually use the
23062         uninflated signature for the memberref.
23063
23064 2004-02-20  Martin Baulig  <martin@ximian.com>
23065
23066         * class.h (MonoGenericMethod): Removed `declaring'.
23067
23068         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
23069         is NULL, compute it here.
23070
23071 2004-02-20  Martin Baulig  <martin@ximian.com>
23072
23073         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
23074
23075         * metadata.c (mono_metadata_generic_inst_hash): New method.
23076         (mono_metadata_generic_inst_equal): New method.
23077
23078         * reflection.c (mono_reflection_bind_generic_parameters): Use the
23079         `klass->image->generic_inst_cache' cache to avoid creating
23080         duplicate MonoGenericInst's.
23081
23082         * class.c (mono_class_inflate_generic_type): Use the cache.
23083
23084 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
23085
23086         * object.c: fixed gc descriptor calculation for embedded valuetypes.
23087
23088 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23089
23090         * icall.c: added Socket.WSAIoctl icall.
23091
23092         * socket-io.[ch]: implemented
23093         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
23094
23095 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
23096
23097         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
23098
23099 2004-02-18  Urs C Muff  <umuff@quark.com>
23100
23101         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
23102         this work on PPC and other big-endian architectures.
23103
23104         * debug-mono-symfile.h: Prepended the names of all the `guint32'
23105         fields with an underscore to make sure they're only accessed by
23106         the read32() macro.
23107
23108 2004-02-18  Martin Baulig  <martin@ximian.com>
23109
23110         * icall.c: Put the klass->refclass changes back for methods and
23111         fields, but not for properties and events.  We're currently not
23112         distinguishing between DeclaringType and ReflectedType for
23113         properties and events, that's what caused the regressions.
23114
23115 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23116
23117         * object.c:
23118         (mono_async_result_new): the handle can be NULL.
23119
23120         * threadpool.c: Use an event instead of a semaphore, don't initialize
23121         it until needed. This saves quite a few semaphores from being created
23122         when using the threadpool.
23123
23124 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
23125
23126         * object.c (mono_string_is_interned_lookup): Fix interning of long
23127         strings. Fixes #54473.
23128
23129         * domain.c (ldstr_equal): Optimize if the two strings are equal.
23130
23131         * icall.c: Revert the klass->refclass changes since they introduce
23132         regressions (bug #54518).
23133
23134 2004-02-18  Martin Baulig  <martin@ximian.com>
23135
23136         * class.c (mono_class_init): If we're a generic instance and don't
23137         come from a TypeBuilder, inflate our members here.
23138         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
23139         (mono_class_create_generic): New public method.
23140         (mono_class_initialize_generic): Removed.
23141         (get_instantiation_name): Renamed to
23142         _mono_class_get_instantiation_name() and made it public.
23143
23144 2004-02-18  Martin Baulig  <martin@ximian.com>
23145
23146         * class.c (mono_class_inflate_generic_type): Clear the new
23147         instance's `nginst->klass' when inflating a generic instance.
23148         (mono_class_is_subclass_of): Added (basic) support for generic
23149         instances.
23150
23151 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
23152
23153         * appdomain.h, domain.c: use a MonoCodeManager instead of a
23154         MonoMempool to hold compiled native code.
23155
23156 2004-02-17  Martin Baulig  <martin@ximian.com>
23157
23158         * class.h (MonoDynamicGenericInst): Added `count_properties' and
23159         `properties'.
23160
23161         * reflection.c (mono_reflection_generic_inst_initialize): Added
23162         `MonoArray *properties' argument.
23163
23164         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
23165
23166 2004-02-17  Martin Baulig  <martin@ximian.com>
23167
23168         * icall.c (ves_icall_Type_GetFields): Renamed to
23169         ves_icall_Type_GetFields_internal() and added a
23170         `MonoReflectionType *rtype' argument; pass it to
23171         mono_field_get_object() to set the field's "reflected" type.
23172         (ves_icall_Type_GetConstructors): Likewise.
23173         (ves_icall_Type_GetEvents): Likewise.
23174         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
23175         argument; pass it to mono_method_get_object() to set the method's
23176         "reflected" type.       
23177
23178 2004-02-17  Martin Baulig  <martin@ximian.com>
23179
23180         * class.h (MonoDynamicGenericInst): New type.
23181         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
23182
23183         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
23184         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
23185         (ves_icall_MonoGenericInst_GetFields): New interncall.
23186
23187         * class.c (mono_class_from_generic): Don't call
23188         mono_class_initialize_generic() if this is a dynamic instance;
23189         ie. it's being created from a TypeBuilder.
23190         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
23191         `class->byval_arg.type'.
23192
23193         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
23194         to `inflate_method' and made static.
23195         (mono_reflection_inflate_field): Removed.
23196         (mono_reflection_generic_inst_initialize): New public method.
23197
23198         * reflection.h (MonoReflectionGenericInst): Removed `methods',
23199         `ctors' and `fields'; added `initialized'.
23200
23201 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23202
23203         * debug-helpers.c (mono_method_full_name): Fix output for empty
23204         namespaces.
23205
23206 2004-02-12  Martin Baulig  <martin@ximian.com>
23207
23208         * class.h (MonoClassField): Added `MonoType *generic_type'.
23209
23210         * reflection.c (mono_image_get_fieldref_token): Added support for
23211         instantiated generic types.
23212         (field_encode_inflated_field): Removed.
23213         (mono_image_get_inflated_field_token): Removed.
23214         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
23215
23216         * reflection.h (MonoReflectionInflatedField): Removed.
23217
23218 2004-02-12  Martin Baulig  <martin@ximian.com>
23219
23220         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
23221         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
23222
23223         * reflection.c (mono_image_get_methodspec_token): Take a
23224         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
23225         (mono_image_create_token): Check whether we have a
23226         `method->signature->gen_method' and call
23227         mono_image_get_methodspec_token() if appropriate.
23228         (inflated_method_get_object): Removed.
23229         (mono_reflection_bind_generic_method_parameters): Return a
23230         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
23231         (mono_reflection_inflate_method_or_ctor): Likewise.
23232
23233         * reflection.h (MonoReflectionInflatedMethod): Removed.
23234
23235 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
23236
23237         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
23238         for custom valuetype marshalling.
23239
23240         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
23241
23242 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23243
23244         * icall.c: fixed WSAGetLastError_internal name.
23245
23246 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23247
23248         * threads.c (mono_thread_attach): Allow this to be called multiple
23249         times for a thread.
23250         
23251         * threads.c (build_wait_tids): Do not wait for ourselves.
23252
23253         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23254         appdomain list is empty.
23255
23256         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23257         memory returned by mono_string_builder_to_utf16, since it points into
23258         managed memory. Thanks to Bernie Solomon for noticing this.
23259
23260         * icall.c: Add AppDomainSetup icalls.
23261
23262         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23263
23264         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23265         types.
23266
23267         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23268         custom attributes to the method_aux struct. Also fix array indexes etc.
23269
23270         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23271         
23272 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23273
23274         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23275         (both static and runtime) and reduce startup time.
23276
23277 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23278
23279         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23280         AsAny marshalling conversion instead of crashing.
23281
23282         * marshal.c: Fix warnings.
23283
23284 2004-02-09  Martin Baulig  <martin@ximian.com>
23285
23286         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23287
23288         * reflection.h (MonoReflectionInflatedMethod): Removed the
23289         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23290
23291         * reflection.c (method_encode_methodspec): Removed the `method'
23292         argument; we get it from `gmethod->declaring'.
23293         (inflated_method_get_object): Removed the `declaring' argument.
23294
23295 2004-02-09  Martin Baulig  <martin@ximian.com>
23296
23297         * class.h (MonoGenericMethod): New type.
23298         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23299         `generic_method'.
23300
23301         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23302         a `MonoGenericMethod *gen_method' one.
23303
23304         * class.c (mono_class_inflate_generic_type): Take an additional
23305         `MonoGenericMethod * argument.  This is only non-NULL if we're
23306         inflating types for a generic method.   
23307         (mono_class_inflate_generic_signature): Renamed to
23308         inflate_generic_signature() and made static; take a
23309         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23310         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23311         instead of a `MonoGenericInst *' one.
23312         (mono_class_inflate_generic_method): Likewise.
23313
23314         * reflection.c (encode_generic_method_sig): Take a
23315         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23316         (method_encode_methodspec): Likewise.
23317         (inflated_method_get_object): Likewise. 
23318
23319         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23320         field with a `MonoGenericMethod *gmethod' one.  
23321
23322 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23323
23324         * class.h (mono_class_has_parent): add parens to expansion
23325         so you can ! this.
23326
23327 2004-02-08  Martin Baulig  <martin@ximian.com>
23328
23329         * image.h (MonoImage): Removed `generics_cache'.
23330
23331         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23332         instead of a `MonoType *' argument; removed the `inflate_methods'
23333         argument.  Don't inflate methods here.
23334
23335         * loader.c (find_method): If it's a generic instance, call
23336         mono_class_init() on the `sclass->generic_inst->generic_type'.
23337
23338         * metadata.c (mono_type_size): Make this work on uninitialized
23339         generic instances; call it on the `ginst->generic_type's class.
23340
23341         * reflection.c (mono_reflection_bind_generic_parameters): Call
23342         mono_class_from_generic() to create the `ginst->klass'.
23343
23344 2004-02-08  Martin Baulig  <martin@ximian.com>
23345
23346         * class.h (MonoClass): Changed type of `generic_inst' from
23347         `MonoType *' to `MonoGenericInst *'.
23348
23349 2004-02-08  Martin Baulig  <martin@ximian.com>
23350
23351         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23352         mono_type_get_object(), this is now creating a `MonoGenericInst'
23353         for MONO_TYPE_GENERICINST.
23354         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23355         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23356
23357         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23358         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23359         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23360         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23361         and reflected type.
23362
23363         * reflection.h (MonoReflectionInflatedMethod): Removed
23364         `declaring_type' and `reflected_type'.
23365
23366 2004-02-08  Martin Baulig  <martin@ximian.com>
23367
23368         * class.h (MonoGenericInst): Added `MonoType *parent' and
23369         `MonoType **ifaces'.
23370
23371         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23372         `parent' and `interfaces'.
23373
23374         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23375         `MonoType *' argument and return a `MonoType *'.
23376
23377         * icall.c
23378         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23379         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23380
23381 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23382
23383         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23384         valuetype marshalling.
23385
23386 2004-02-06  Martin Baulig  <martin@ximian.com>
23387
23388         * class.c
23389         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23390         (my_mono_class_from_generic_parameter): Likewise.
23391
23392 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23393
23394         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23395         contents of the symbol files lazily.
23396
23397         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23398
23399         * threads.h threads.c icall.c: New icalls for getting and setting the
23400         threads name.
23401
23402 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23403
23404         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23405         Raise an exception when the domain is not found.
23406
23407 2004-02-03  Martin Baulig  <martin@ximian.com>
23408
23409         * reflection.c (mono_image_get_methodspec_token): Use the
23410         uninflated signature; fixes gen-33.
23411
23412 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23413
23414         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23415         the finalizer code can use thread functionality.
23416
23417         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23418         the finalizer thread.
23419
23420         * threads.c: Make some functions more robust.
23421
23422         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23423
23424         * metadata.h: Add new marshalling conventions.
23425
23426         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23427         stringbuilder marshalling. Fixes #53700.
23428
23429         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23430
23431         * reflection.c (mono_image_get_type_info): Save declarative security
23432         info.
23433
23434         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23435         unmanaged fields as well.
23436
23437         * appdomain.c: Bump corlib version.
23438
23439 2004-02-01  Martin Baulig  <martin@ximian.com>
23440
23441         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23442         method type arguments.  
23443
23444 2004-01-30  Duncan Mak  <duncan@ximian.com>
23445
23446         * marshal.h: Add prototype for
23447         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23448         and
23449         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23450         fix the build.
23451
23452 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23453
23454         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23455         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23456
23457 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23458
23459         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23460         custom marshalling of valuetypes.
23461
23462         * marshal.c: Fix some warnings.
23463
23464 2004-01-29  Martin Baulig  <martin@ximian.com>
23465
23466         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23467         for generic method parameters.
23468
23469         * reflection.c (method_encode_methodspec): Write the uninflated
23470         signature into the methodspec table.
23471         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23472         is always the uninflated method.
23473         (reflection_methodbuilder_to_mono_method): Copy the generic
23474         parameters from the MethodBuilder into `header->gen_params'.
23475
23476 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23477
23478         * class.c (mono_class_from_generic_parameter): Fix warning.
23479
23480 2004-01-27  Martin Baulig  <martin@ximian.com>
23481
23482         * class.c (mono_class_from_generic_parameter): Don't create
23483         `klass->methods' here.  
23484
23485 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23486
23487         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23488         extension since it does not work with libraries named lib<FOO>.dll.so.
23489
23490 2004-01-25  Martin Baulig  <martin@ximian.com>
23491
23492         * class.c (mono_class_inflate_generic_type): Added support for
23493         MONO_TYPE_GENERICINST.
23494
23495         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23496         inflate methods on open constructed types.      
23497
23498 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23499
23500         * object.c: fire ProcessExit event in the root AppDomain after running
23501         Main. Fixes bug #53299.
23502
23503 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23504
23505         * socket-io.c: include the new socket-wrappers.h header.
23506         Use the wrappers instead of the unix socket functions to make the code
23507         more clear.
23508
23509 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23510
23511         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23512
23513         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23514         Fixes #22532.
23515
23516 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23517
23518         * reflection.c (mono_image_create_pefile): Handle the case when the
23519         entry point is not a MethodBuilder.
23520
23521         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23522         field to ReflectionMethod since it is not allways a builder.
23523
23524         * reflection.c (type_get_fully_qualified_name): New helper function to
23525         return the fully qualified name of a type.
23526
23527         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23528         type name for custom marshallers.
23529
23530         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23531
23532         * class.c (mono_class_setup_vtable): If a parent class already 
23533         implements an interface, use the implementing methods from that class.
23534         Fixes #53148.
23535
23536 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23537
23538         * threadpool.c: just return instead of ExitThread to allow for thread
23539         clean up earlier.
23540
23541 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23542
23543         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23544         when closing resource modules.
23545
23546         * reflection.c (mono_image_create_pefile): Handle the case when the
23547         entry point is not a MethodBuilder.
23548
23549         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23550         field to ReflectionMethod since it is not allways a builder.
23551
23552 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23553
23554         * marshal.c (mono_marshal_get_managed_wrapper): 
23555         mono_marshal_alloc takes native int so CONV_I
23556         the arg for 64bits.
23557
23558 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23559
23560         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23561         tokens in the cattr table. Fixes #53108.
23562
23563 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23564
23565         * loader.c: don't trim ".dll" before looking up in the config file.
23566         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
23567
23568 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23569
23570         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
23571         Return the module which contains the resource as well.
23572         (ves_icall_System_Reflection_Module_Close): New icall.
23573
23574         * appdomain.c: Bump corlib version number.
23575
23576         * image.c (mono_image_addref): New public function.
23577
23578         * assembly.c: Call mono_image_addref.
23579
23580         * reflection.c (mono_module_get_object): Increase reference count of 
23581         the image.
23582
23583         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23584         Fixes #22532.
23585
23586         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
23587         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
23588         proper exceptions on DllImport problems.
23589
23590 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
23591
23592         * class.c, metadata.c: eliminate CSIZE macro.
23593
23594 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
23595
23596         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
23597         * object.h: Added async_callback field in MonoAsyncResult.
23598         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
23599         * verify.c: Added async_callback in MonoAsyncResult layout.
23600
23601 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
23602
23603         * reflection.c (mono_reflection_get_custom_attrs): Add support
23604         for Modules.
23605
23606 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23607
23608         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
23609         marshalling.
23610         (mono_marshal_method_from_wrapper): Add null pointer check.
23611
23612 2004-01-16  Martin Baulig  <martin@ximian.com>
23613
23614         * debug-mono-symfile.h: Set version number to 36 and reflect
23615         latest symbol writer changes.
23616
23617 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23618
23619         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
23620         multi-dimensional arrays.
23621         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
23622         (mono_class_from_mono_type): Use bounded_array_class_get.
23623         
23624         * class.c (mono_bounded_array_class_get): New function which takes
23625         a 'bounded' bool argument to distinguish vectors from one dimensional
23626         arrays.
23627
23628         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
23629         bounded_array_class_get if the array has bounds.
23630
23631         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23632         Search modules loaded using AssemblyBuilder:AddModule as well.
23633
23634 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23635
23636         * appdomain.c: increased corlib version.
23637         * filewatcher.c: removed g_print.
23638         * icall.c:
23639         (get_property_info): only allocate what is actually requested.
23640         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
23641
23642 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23643
23644         * Makefile.am: added filewatcher.[ch]
23645         * filewatcher.[ch]: FileSystemWatcher runtime support.
23646         * icall.c: added new FSW icalls.
23647
23648 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
23649
23650         * string-icalls.c: fix stringbuilder regression as suggested by
23651         Iain McCoy <iain@mccoy.id.au>.
23652
23653 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23654
23655         * process.c (process_read_stringtable_block): Recognize '007f' as
23656         a language neutral stringtable block.
23657
23658 2004-01-12  Patrik Torstensson
23659
23660         * object.h (MonoStringBuilder) : Changed layout to support our
23661         new stringbuilder class.
23662         * marshal.c: Change marshalling to support the new layout of 
23663         string builder.
23664         * appdomain.c: increased version number because new layout of
23665         string builder.
23666
23667 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
23668
23669         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
23670         assembly name as an string instead of an AssemblyName, since it is
23671         easier to extract info from it.
23672
23673         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
23674         the culture subdirectories too. Fixes #52231.
23675
23676 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23677
23678         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
23679         It takes 2 new parameters with an optional name for the method to look
23680         for and case ignoring info.
23681
23682         * threadpool.c: removed unused variable.
23683
23684 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23685
23686         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
23687         It takes 2 new parameters with an optional name for the property to look
23688         for and case ignoring info.
23689         Fixes bug #52753.
23690
23691 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23692
23693         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
23694         Fix #52451.
23695
23696 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23697
23698         * appdomain.c:
23699         * assembly.c: escape the uri before passing it to g_filename_from_uri.
23700         Fixes bug #52630.
23701
23702 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
23703
23704         * reflection.c: Add support for more than one unmanaged resource.
23705
23706         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
23707         in field->def_value, as done in all other cases.
23708
23709         * reflection.c (mono_reflection_get_custom_attrs): Add support for
23710         TypeBuilders.
23711
23712         * reflection.c (mono_reflection_create_runtime_class): Remove 
23713         errorneous assignment to klass->element_class, since it is already
23714         done in mono_reflection_setup_internal_class.
23715
23716 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23717
23718         * gc.c: added missing LeaveCriticalSection.
23719         * icall.c: indented a couple of lines.
23720         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
23721         if we call EndInvoke inside a callback. Fixes bug #52601.
23722
23723 2004-01-07  Martin Baulig  <martin@ximian.com>
23724
23725         * mono-debug-debugger.h
23726         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
23727
23728 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
23729
23730         * appdomain.c: Use messages in NotImplementedException.
23731
23732         * exception.c (mono_get_exception_not_implemented): Now this takes
23733         a message argument.
23734
23735         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
23736         exception instead of g_asserting an aborting when something is not
23737         implemented.
23738
23739         Add some inline docs.
23740
23741 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
23742
23743         * reflection.h: Update after changes to object layout.
23744
23745         * reflection.c: Implement saving of unmanaged aka win32 resources.
23746
23747         * appdomain.c: Bump version number.
23748
23749         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
23750         Handle missing domains gracefully.
23751
23752 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
23753
23754         * file-io.c : On Windows, there are much more invalid_path_chars.
23755
23756 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23757
23758         * class.h, object.c: prepare for GetType () speedup.
23759
23760 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
23761
23762         * profiler.c: workaround for --profile null reference exception on
23763           cygwin. Patch by Patrik Torstensson.
23764
23765 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
23766
23767         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
23768         make work for unaligned access.
23769
23770 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
23771
23772         * class.c: small cleanup (class->fields [i] -> field).
23773         * image.c: check address of metadata is valid.
23774
23775 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
23776
23777         * assembly.h assembly.c (mono_assembly_loaded): New public function to
23778         search the list of loaded assemblies.
23779
23780         * reflection.c (mono_reflection_type_from_name): Use 
23781         mono_assembly_loaded instead of mono_image_loaded.
23782
23783         * reflection.c: Fix warnings.
23784
23785 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
23786
23787         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
23788         is dynamic. This is needed since an assembly can contain both dynamic and
23789         non-dynamic images.
23790
23791         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
23792         assembly->dynamic.
23793
23794         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
23795
23796         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
23797         to store modules loaded using AddModule.
23798
23799         * reflection.c (mono_image_fill_file_table): Generalize this so it works
23800         on Modules.
23801
23802         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
23803
23804         * reflection.c (mono_image_fill_export_table_from_module): New function to
23805         fill out the EXPORTEDTYPES table from a module.
23806
23807         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
23808         into a separate function. Also handle loaded non-dynamic modules.
23809
23810         * reflection.c (mono_image_basic_init): Fix memory allocation.
23811
23812         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23813
23814         * assembly.c (mono_assembly_load_references): Make this public.
23815
23816 2003-12-19  Martin Baulig  <martin@ximian.com>
23817
23818         * class.c (mono_class_initialize_generic): Made this static, take
23819         a `MonoGenericInst *' instead of a `MonoClass *'.
23820         (mono_class_from_generic): Call mono_class_initialize_generic()
23821         unless we're already initialized or being called from
23822         do_mono_metadata_parse_generic_inst().
23823
23824         * class.h (MonoGenericInst): Added `initialized' and
23825         `init_pending' flags.
23826
23827         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
23828         `mono_class_init (gklass)' or mono_class_initialize_generic()
23829         here; set `generic_inst->init_pending' while parsing the
23830         `type_argv'.
23831
23832 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
23833
23834         * locales.c: include string.h for memxxx prototypes
23835
23836 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23837
23838         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
23839         constructor when accessing literal fields.
23840
23841 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
23842
23843         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23844
23845         * reflection.c (assembly_add_resource_manifest): New function to fill
23846         the MANIFESTRESOURCE table.
23847
23848         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
23849
23850         * reflection.h: Update to changes in class layout.
23851
23852         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
23853         Reenable call to mono_runtime_is_shutting_down ().
23854
23855         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
23856         determine if the runtime is shutting down.
23857
23858 2003-12-16  Jackson Harper <jackson@ximian.com>
23859
23860         * icall.c: comment out call to mono_runtime_is_shutting_down to
23861         fix build.
23862         
23863 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
23864
23865         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
23866         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
23867
23868 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
23869
23870         * reflection.c: move definition of swap_with_size
23871         to before its first call
23872
23873 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
23874
23875         * appdomain.c (mono_runtime_is_shutting_down): New public function.
23876
23877         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
23878         icall.
23879
23880         * object.c: Fix warnings.
23881
23882         * icall.c (ves_icall_Type_Get...): Only consider inherited static
23883         members if FlattenHierarchy is set.
23884
23885         * reflection.c (mono_image_add_decl_security): New function to emit
23886         declarative security.
23887
23888         * reflection.h reflection.c: Add support for declarative security.
23889
23890         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23891         
23892 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23893
23894         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
23895         
23896         * appdomain.c verify.c: Moved corlib version checking into its own
23897         function in appdomain.c since it needs to create vtables etc.
23898
23899 2003-12-13  Patrik Torstensson <p@rxc.se>
23900
23901         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
23902         instead of unwrapped server.
23903
23904 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
23905
23906         * verify.c (check_corlib): Fix field index.
23907
23908 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
23909
23910         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
23911         GetGacPath icall.
23912
23913 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
23914
23915         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
23916         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
23917         cope with sizeof(size_t) != sizeof(guint32).
23918
23919 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23920
23921         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
23922         in case of failure.
23923
23924 2003-12-10  Mark Crichton <crichton@gimp.org>
23925
23926         * icall.c: removed the GetNonZeroBytes.  We now handle this case
23927         in managed code.
23928
23929         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
23930
23931 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
23932
23933         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
23934         marked as deleted.
23935
23936 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23937
23938         * verify.c (check_corlib): Handle the case when the version field is 
23939         initialized by a static constructor.
23940
23941 2003-12-08  Patrik Torstensson  <p@rxc.se>
23942
23943     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
23944
23945 2003-12-08  Martin Baulig  <martin@ximian.com>
23946
23947         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
23948         a MonoReflectionGenericParameter, also take the parameter index
23949         and name as arguments.
23950         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
23951         (ves_icall_MonoGenericParam_initialize): New interncall.
23952         (ves_icall_Type_make_byref_type): New interncall.
23953
23954         * reflection.h (MonoReflectionGenericParam): Derive from
23955         MonoReflectionType, not just from MonoObject.  Added `refobj' and
23956         `index' fields.
23957
23958         * reflection.c (mono_reflection_define_generic_parameter): Create
23959         and return a new MonoReflectionGenericParam; don't initialize the
23960         constraints here.
23961         (mono_reflection_initialize_generic_parameter): New public method;
23962         initializes the constraints and creates the `param->pklass'.
23963
23964 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23965
23966         * reflection.h reflection.c: Use the new fields 'num_types', 
23967         'num_fields' and 'num_methods' to track the number of types etc.
23968
23969         * verify.c (check_corlib): Check corlib version number.
23970
23971 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
23972
23973         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
23974         function works on all methods.
23975
23976 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23977
23978         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
23979         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
23980         the custom_type_info flag of the transparent proxy.
23981         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
23982         objects that supports IRemotingTypeInfo.
23983         * object.h: Added custom_type_info field in transparent proxy.
23984
23985 2003-12-06  Martin Baulig  <martin@ximian.com>
23986
23987         * class.c (mono_class_create_from_generic): Removed.
23988         (mono_class_from_generic): Check `ginst->klass' before doing
23989         anything else.  This is important to fully support "recursive"
23990         generic types.
23991
23992         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
23993         empty `generic_inst->klass' before doing anything else.
23994
23995 2003-12-06  Dick Porter  <dick@ximian.com>
23996
23997         * verify.c: 
23998         * object.h:
23999         * icall.c:
24000         * locales.c: Use C structs to access class fields.  Don't do a
24001         conversion between MonoString and UChar because both are
24002         platform-endian UTF-16.  Compare now takes startindex and count
24003         parameters.  Add a char overload for IndexOf.  Speed up the
24004         invariant string IndexOf.
24005
24006 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
24007
24008         * Makefile.am (monosn_LDADD): Fix parallel build.
24009
24010 2003-12-04  Martin Baulig  <martin@ximian.com>
24011
24012         * icall.c
24013         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24014         (ves_icall_Type_make_array_type): New interncall.       
24015
24016 2003-12-04  Martin Baulig  <martin@ximian.com>
24017
24018         * locales.c: also change it in the !HAVE_ICU case.
24019
24020 2003-12-04  Dick Porter  <dick@ximian.com>
24021
24022         * icall.c:
24023         * locales.c: construct_compareinfo is now in CompareInfo, not
24024         CultureInfo.
24025
24026 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24027
24028         * image.c (mono_image_load_file_for_image): Cache loaded images in the
24029         image->files array.
24030
24031         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
24032         table as well.
24033
24034         * assembly.c (mono_assembly_load_references): Only load references
24035         once.
24036
24037         * class.c (mono_class_from_name): Avoid linear search of the 
24038         EXPORTEDTYPE table.
24039
24040         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
24041
24042 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24043
24044         * image.h (MonoImage): Add 'field_cache' field.
24045
24046         * loader.c (mono_field_from_token): Cache field lookups.
24047         
24048         * reflection.c (mono_module_get_object): Fix name property.
24049
24050         * icall.c (ves_icall_get_enum_info): Update after changes to 
24051         mono_metadata_get_constant_index ().
24052
24053         * icall.c: Get rid of get_type_info icall, use a separate icall for
24054         each type property to avoid needless memory allocations. Fixes #51514.
24055
24056         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
24057         to avoid needless binary searches.
24058
24059         * class.c (class_compute_field_layout): Move the initialization of
24060         field->def_value to mono_class_vtable ().
24061
24062         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
24063         non-corlib types.
24064
24065         * object.c (mono_object_allocate): Make it inline.
24066
24067         * object.c (mono_object_allocate_spec): Make it inline.
24068         
24069 2003-12-02  Dick Porter  <dick@ximian.com>
24070
24071         * locales.c (create_NumberFormat): NumberFormatInfo construction.
24072         Patch by Mohammad DAMT (mdamt@cdl2000.com).
24073
24074 2003-12-01  Dick Porter  <dick@ximian.com>
24075
24076         * threads.c: Fix signature and call in CreateMutex and
24077         CreateEvent.
24078
24079 2003-12-01  Dick Porter  <dick@ximian.com>
24080
24081         * icall.c: 
24082         * locales.c: Implement string compares and searching
24083
24084         * object.h: Add extra Thread field
24085
24086 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
24087
24088         * reflection.c (fixup_method): Add support for MonoCMethod.
24089
24090 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
24091
24092         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
24093
24094         * reflection.c (assembly_name_to_aname): Allow extra characters in
24095         assembly names. Fixes #51468.
24096
24097 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24098
24099         * exception.c (mono_exception_from_name_domain): New helper function.
24100
24101         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
24102         exception object in the correct domain.
24103
24104         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
24105         formatting + make a copy a the input data.
24106
24107         * loader.c (mono_get_method_from_token): Methods which contain
24108         native code do not have entries in the ImplMap.
24109
24110         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
24111         Thanks to Gonzalo for spotting this.
24112         
24113         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
24114         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
24115
24116         * assembly.h (mono_assembly_load_from): Split the second part of 
24117         assembly loading into a new public function.
24118
24119         * exception.h (mono_get_exception_bad_image_format): New function.
24120
24121 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
24122
24123         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24124         Enumerate all modules inside a dynamic assembly. Fixes #51293.
24125         
24126         * icall.c: Add new icall for creating dynamic methods.
24127
24128         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
24129
24130         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
24131
24132         * reflection.c (mono_reflection_create_dynamic_method): New icall to
24133         create a dynamic method.
24134
24135         * reflection.c (resolve_object): New helper function.
24136
24137         * reflection.c: Generalize ReflectionMethodBuilder and the functions
24138         which manipulate it so they can also work on dynamic methods.
24139
24140         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
24141         creating the MonoReflectionMethodAux structure if it is not needed.
24142         
24143         * reflection.h verify.c: Update after changes to object layout.
24144
24145         * reflection.c (method_builder_encode_signature): Fix compilation on
24146         gcc 2.95.x.
24147
24148 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
24149
24150         * appdomain.h: Added support for context static fields. Added static_data
24151           field to MonoAppContext and renamed thread_static_fields to a more
24152           generic special_static_fields in MonoAppDomain, since it can now contain
24153           context static fields.
24154         * domain.c: Updated hashtable name.
24155         * object.c: Replaced field_is_thread_static() for a more generic
24156           field_is_special_static() which also checks for context static attribute.
24157           In mono_class_vtable(), added support for static context fields.
24158         * threads.c: Changed methods that manage thread static fields to more
24159           generic methods so they can be reused both for thread and context static
24160           data.
24161         * threads.h: Declared some new methods.
24162
24163 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
24164
24165         * reflection.h: Update after changes to the managed types.
24166
24167         * reflection.c (encode_custom_modifiers): New helper function.
24168
24169         * reflection.c (method_encode_signature): Emit custom modifiers.
24170
24171         * reflection.c (field_encode_signature): Emit custom modifiers.
24172
24173 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24174
24175         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
24176
24177         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
24178         implementation.
24179
24180         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
24181         icall.
24182
24183         * object.c (mono_field_get_value_object): New function.
24184
24185         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
24186         specific.
24187
24188 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24189
24190         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
24191         return a preallocated out-of-memory exception instance.
24192
24193         * object.c (out_of_memory): Use the new function.
24194
24195         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
24196         flag is before the custom modifiers. Fixes #49802.
24197
24198 2003-11-16  Martin Baulig  <martin@ximian.com>
24199
24200         * class.c (mono_class_is_open_constructed_type): Implemented the
24201         MONO_TYPE_GENERICINST case.
24202
24203 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24204
24205         * assembly.c (mono_assembly_fill_assembly_name): New function to
24206         fill out the MonoAssemblyName structure.
24207         (mono_assembly_open): Use the new function.
24208
24209         * icall.c (fill_reflection_assembly_name): New helper function.
24210
24211         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
24212         new function.
24213
24214         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
24215
24216 2003-11-15  Martin Baulig  <martin@ximian.com>
24217
24218         * class.c (mono_class_is_open_constructed_type): New public
24219         function; checks whether a type is an open constructed type,
24220         ie. whether it still contains type parameters.
24221         (mono_class_inflate_generic_type): If we're a type parameter and
24222         the inflated type is also a MONO_TYPE_(M)VAR, return the original
24223         type.
24224
24225         * class.h (MonoGenericInst): Added `guint32 is_open'.
24226
24227         * loader.c (method_from_methodspec): Check whether we're an open
24228         or closed constructed type and set `ginst->is_open'.
24229
24230         * reflection.c (mono_reflection_bind_generic_parameters): Check
24231         whether we're an open or closed constructed type and set
24232         `ginst->is_open'.
24233         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
24234         from open constructed types.
24235
24236 2003-11-15  Martin Baulig  <martin@ximian.com>
24237
24238         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24239         a generic instance (instead of a generic type declaration) with
24240         unbound generic parameters, bind them to our actual types.
24241
24242 2003-11-14  Martin Baulig  <martin@ximian.com>
24243
24244         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
24245
24246         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24247         an interface type, populate `res->interfaces' with instantiated
24248         versions of all the interfaces we inherit.
24249
24250 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24251
24252         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24253         when MONO_PATH is set but doesn't contain the install dir.
24254
24255 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24256
24257         * icall.c:
24258         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24259         it's also implemented in base classes. Fixes bug #50927.
24260
24261 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24262
24263         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24264         if this method is called from a finalizer. Fixes #50913.
24265
24266 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24267
24268         * threads.c: Implement VolatileRead/VolatileWrite
24269
24270         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24271
24272 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24273
24274         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24275         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24276         2.95.3.
24277
24278         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24279         from Peter Ross (pro@missioncriticalit.com).
24280         
24281 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24282
24283         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24284
24285 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24286
24287         * assembly.c (mono_assembly_load_references): Disable check because it
24288         triggers on older corlibs which lots of people have.
24289
24290 2003-11-12  Jackson Harper  <jackson@ximian.com>
24291
24292         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24293         load corlib.dll if mscorlib.dll is not found.
24294         * assembly.h: Remove corlib name define.
24295         * class.c:
24296         * domain.c:
24297         * image.c: Change corlib name to mscorlib.
24298         
24299 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24300
24301         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24302
24303 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24304
24305         * appdomain.h: Added loader_optimization here to sync with the C#
24306         code, and add disallow_binding_redirects field.
24307
24308 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24309
24310         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24311
24312         * reflection.c (mono_image_build_metadata): Fix crash on modules
24313         with no types.
24314
24315         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24316
24317         * icall.c (ves_icall_get_method_info): Return callingConvention as
24318         well.
24319
24320         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24321         namespaces from the EXPORTEDTYPE table as well.
24322
24323         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24324         from all modules inside the assembly.
24325         
24326 2003-11-11  Martin Baulig  <martin@ximian.com>
24327
24328         * reflection.c (mono_reflection_bind_generic_parameters): Make
24329         this work for interfaces.
24330
24331 2003-11-11  Martin Baulig  <martin@ximian.com>
24332
24333         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24334
24335 2003-11-11  Martin Baulig  <martin@ximian.com>
24336
24337         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24338         "MonoInflatedMethod" and "MonoInflatedCtor".
24339
24340 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24341
24342         * reflection.c (resolution_scope_from_image): Use the assembly table
24343         from the manifest module, since other modules don't have it.
24344
24345         * debug-helpers.c (mono_type_full_name): New helper function.
24346
24347         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24348
24349         * image.c (mono_image_load_file_for_image): New public function which
24350         is a replacement for the load_file_for_image in class.c.
24351
24352         * assembly.c (mono_assembly_load_module): A wrapper for the function
24353         above which does assembly association and reference loading too.
24354
24355         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24356
24357 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24358
24359         * appdomain.c: not all of the attributes for the full assembly name
24360         are required and the order doesn't matter. Fixes bug #50787.
24361
24362 2003-11-10  Dick Porter  <dick@ximian.com>
24363
24364         * locales.c: Use platform-endian UTF16
24365
24366 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24367
24368         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24369         
24370 2003-11-10  Martin Baulig  <martin@ximian.com>
24371
24372         * metadata.c
24373         (mono_metadata_load_generic_params): Make this actually work.
24374
24375         * reflection.c (mono_reflection_bind_generic_parameters): If our
24376         parent is a generic instance, pass all the `types' to it, no
24377         matter whether it has the same number of type parameters or not.
24378
24379 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24380
24381         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24382
24383         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24384         assignment code to this function so it gets called recursively for all
24385         modules.
24386
24387         * image.c (load_modules): Remove the assembly assignment since it is
24388         now done by mono_assembly_load_references.
24389         
24390         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24391         Add 'module' argument.
24392         (mono_module_get_types): New helper function.
24393         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24394
24395 2003-11-08  Martin Baulig  <martin@ximian.com>
24396
24397         * class.c (mono_class_inflate_generic_method): Interface method
24398         don't have a header.
24399
24400         * reflection.c (mono_image_get_methodspec_token): Take an
24401         additional `MonoGenericInst *' argument instead of reading it from
24402         the header; this is necessary to support interfaces.
24403         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24404         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24405         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24406         argument.
24407
24408         * reflection.h (MonoReflectionInflatedMethod): Added
24409         `MonoGenericInst *ginst'.
24410
24411 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24412
24413         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24414
24415 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24416
24417         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24418
24419 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24420
24421         * reflection.c 
24422         (reflection_methodbuilder_from_method_builder):
24423         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24424         initialize a ReflectionMethodBuilder structure.
24425         (mono_image_get_methodbuilder_token):
24426         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24427         tokens which point to types in another module inside the same assembly.
24428
24429         * reflection.c: Use the new helper functions.
24430         
24431         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24432
24433         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24434         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24435
24436         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24437         neccesary.
24438
24439         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24440         current module. Emit the manifest only for the main module.
24441
24442         * reflection.c (mono_image_create_token): Add assertion when a 
24443         memberref needs to be created.
24444
24445         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24446
24447         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24448         larger buffer for the custom attribute blob. Fixes #50637.
24449         
24450 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24451
24452         * threadpool.c: notify listener on async processing handles after
24453         invoking the async callback. Thanks to Zoltan.
24454
24455 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24456
24457         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24458         avoid code duplication.
24459
24460         * reflection.h (MonoDynamicImage): New type which is currently unused,
24461         but will be used through the ref.emit code in place of 
24462         MonoDynamicAssembly.
24463
24464         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24465         object layout.
24466
24467         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24468         a MonoDynamicImage instead of just a MonoImage.
24469         
24470         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24471         icalls to ModuleBuilder but keep their semantics, so they will work
24472         with moduleb->assemblyb. This will change later.
24473         
24474 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24475
24476         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24477         object layout.
24478
24479         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24480         main module, since it is now done by the managed code.
24481
24482 2003-11-03  Martin Baulig  <martin@ximian.com>
24483
24484         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24485         `ginst->klass' here.
24486         (method_encode_methodspec): Don't use the `ginst->generic_method's
24487         klass if it's a generic instance, use `ginst->klass' in this case.
24488
24489 2003-11-03  Martin Baulig  <martin@ximian.com>
24490
24491         * reflection.c (mono_image_get_generic_method_param_info):
24492         Removed, use mono_image_get_generic_param_info() instead.
24493         (mono_image_get_type_info): Write the GenericParam table before
24494         the Method table.  This is neccessary because in the GenericParam
24495         table, type parameters of the class (ie. '!0' etc.) must come
24496         before the ones from its generic methods (ie. '!!0' etc).
24497
24498 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24499
24500         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24501
24502 2003-11-02  Martin Baulig  <martin@ximian.com>
24503
24504         * reflection.c (create_generic_typespec): Take a
24505         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24506         the generic parameters from it.
24507
24508 2003-11-02  Martin Baulig  <martin@ximian.com>
24509
24510         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24511         instead of a `MonoClassField *' since we just need the type.
24512         (create_generic_typespec): New static function.  Creates a
24513         TypeSpec token for a generic type declaration.
24514         (mono_image_get_generic_field_token): New static function.
24515         (mono_image_create_token): If we're a FieldBuilder in a generic
24516         type declaration, call mono_image_get_generic_field_token() to get
24517         the token.
24518
24519 2003-11-02  Martin Baulig  <martin@ximian.com>
24520
24521         * reflection.h
24522         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24523         `MonoReflectionGenericInst *declaring_type' and
24524         `MonoReflectionGenericInst *reflected_type' fields.
24525
24526         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24527         `MonoReflectionGenericInst *declaring_type' and a
24528         `MonoReflectionGenericInst *reflected_type' argument instead of a
24529         single `MonoReflectionGenericInst *type' one.  Set
24530         `res->declaring_type' and `res->reflected_type' from them.
24531         (mono_reflection_inflate_field): Likewise.      
24532
24533 2003-11-02  Martin Baulig  <martin@ximian.com>
24534
24535         * class.c (mono_class_setup_vtable): Don't store generic methods
24536         in the vtable.  
24537
24538 2003-11-02  Martin Baulig  <martin@ximian.com>
24539
24540         * reflection.h (MonoReflectionGenericInst): Added
24541         `MonoReflectionType *declaring_type'.
24542
24543         * reflection.c (mono_reflection_bind_generic_parameters): Use
24544         `if (tb->parent)' instead of `klass->parent'.
24545
24546 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24547
24548         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24549         with an empty ASSEMBLY table.
24550
24551         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24552         variable in the inner and outer loops.
24553
24554 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24555
24556         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24557         argument.
24558
24559         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24560         
24561         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24562         icalls. Instead, do everything in managed code. This is needed since
24563         it is hard to restore the original domain etc. in unmanaged code in the
24564         presence of undeniable exceptions.
24565
24566         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
24567         New icalls to push and pop appdomain refs.
24568
24569 2003-10-31  Martin Baulig  <martin@ximian.com>
24570
24571         * class.c (inflate_generic_type): Renamed to
24572         mono_class_inflate_generic_type() and made it public.
24573
24574         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
24575         New interncall.
24576
24577         * loader.c (mono_field_from_memberref): Also set the retklass for
24578         typespecs.
24579
24580         * fielder.c (mono_image_get_inflated_field_token): New static
24581         method; creates a metadata token for an inflated field.
24582         (mono_image_create_token, fixup_method): Added support for
24583         "MonoInflatedField".
24584         (fieldbuilder_to_mono_class_field): New static function.
24585         (mono_reflection_inflate_field): New public function.
24586
24587         * reflection.h
24588         (MonoReflectionGenericInst): Added `MonoArray *fields'.
24589         (MonoReflectionInflatedField): New typedef.     
24590
24591 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
24592
24593         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
24594         for Solaris and other platforms without s6_addr16
24595
24596 2003-10-30  Martin Baulig  <martin@ximian.com>
24597
24598         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
24599         argument instead of two.
24600         (mono_class_inflate_generic_signature): Likewise.
24601         (inflate_generic_header): Likewise.
24602         (mono_class_inflate_generic_method): Likewise.  In addition, if
24603         `ginst->klass' is set, it becomes the new `method->klass'.
24604
24605         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
24606         field.
24607
24608         * reflection.c (encode_generic_method_sig): Write a 0xa as the
24609         first byte. [FIXME]
24610         (method_encode_methodspec): If we have generic parameters, create
24611         a MethodSpec instead of a MethodRef.
24612         (fixup_method): Added support for "MonoInflatedMethod" and
24613         "MonoInflatedCtor".
24614         (mono_image_create_token): Added support for "MonoInflatedMethod"
24615         and "MonoInflatedCtor".
24616         (inflated_method_get_object): New static function; returns a
24617         managed "System.Reflection.MonoInflatedMethod" object.
24618         (mono_reflection_bind_generic_method_parameters): Return a
24619         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
24620         (mono_reflection_inflate_method_or_ctor): Likewise.
24621         (mono_image_get_generic_method_param_info): Initialize unused
24622         fields to zero.
24623         (mono_image_get_generic_param_info): Likewise.
24624
24625         * reflection.h (MonoReflectionInflatedMethod): New public
24626         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
24627         "S.R.MonoInflatedCtor" classes.
24628
24629         * loader.c (method_from_memberref): If we're a TypeSpec and it
24630         resolves to a generic instance, inflate the method.
24631
24632 2003-10-28  Dick Porter  <dick@ximian.com>
24633
24634         * object.c (mono_runtime_run_main): Convert command-line arguments
24635         into utf8, falling back to the user's locale encoding to do so.
24636
24637 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24638
24639         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
24640         at this time.
24641
24642         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
24643
24644         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
24645         up icalls at method definition time. Partially fixes #33569.
24646
24647 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
24648
24649         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
24650         marshalling of arrays. Fixes #50116.
24651
24652         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
24653
24654         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
24655         points to a vtable in the dying appdomain.
24656
24657         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
24658         listeners into unmanaged code inside the lock.
24659
24660         * object.c (mono_class_vtable): Turn off typed allocation in non-root
24661         domains and add some comments.
24662
24663 2003-10-25  Martin Baulig  <martin@ximian.com>
24664
24665         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
24666
24667         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
24668
24669         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
24670         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
24671         currently parsing.  Create the generic class and store it in
24672         `generic_inst->klass' before parsing the type arguments.  This is
24673         required to support "recursive" definitions; see mcs/tests/gen-23.cs
24674         for an example.
24675         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
24676         to support recursive typespec entries.
24677
24678         * class.c (mono_class_setup_parent): If our parent is a generic
24679         instance, we may get called before it has its name set.
24680         (mono_class_from_generic): Splitted into
24681         mono_class_create_from_generic() and mono_class_initialize_generic().
24682
24683 2003-10-25  Martin Baulig  <martin@ximian.com>
24684
24685         * icall.c (ves_icall_Type_BindGenericParameters): Return a
24686         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
24687         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
24688         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
24689
24690         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
24691         (create_typespec): Likewise.
24692         (mono_reflection_bind_generic_parameters): Return a
24693         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
24694         (mono_reflection_inflate_method_or_ctor): New public function.
24695
24696         * reflection.h (MonoReflectionGenericInst): New typedef.        
24697
24698 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24699
24700         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
24701         inside the domain lock. Fixes #49993.
24702         
24703         * object.c (mono_class_vtable): When typed allocation is used, 
24704         allocate vtables in the GC heap instead of in the mempool, since the
24705         vtables contain GC descriptors which are used by the collector even
24706         after the domain owning the mempool is unloaded.
24707
24708         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
24709
24710         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
24711         reflect what it does. Also invalidate mempools instead of freeing
24712         them if a define is set.
24713
24714         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
24715         of the appdomain.
24716         
24717         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
24718         hold the finalizable objects in this domain.
24719
24720         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
24721         appdomain.
24722
24723         * appdomain.c (mono_domain_set): New function to set the current
24724         appdomain, but only if it is not being unloaded.
24725
24726         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
24727         appdomain which is being unloaded.
24728         
24729         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
24730         unloading of the root appdomain.
24731
24732         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
24733         icall to execute a method in another appdomain. Intended as a 
24734         replacement for InternalSetDomain, which can confuse the code 
24735         generation in the JIT.
24736
24737         * appdomain.c (mono_domain_is_unloading): New function to determine
24738         whenever an appdomain is unloading.
24739
24740         * appdomain.c (mono_domain_unload): New function to correctly unload
24741         an appdomain.
24742
24743         * assembly.c (mono_assembly_load_references): Check that an assembly
24744         does not references itself.
24745
24746         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
24747         domain manually, it asks the finalizer thread to do it, then waits for
24748         the result. Also added a timeout.
24749
24750         * icall.c: Register the new icalls.
24751
24752         * threads.h threads.c: Export the mono_gc_stop_world and 
24753         mono_gc_start_world functions.
24754         
24755         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
24756         function to fill out the mempool with 0x2a.
24757
24758 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
24759
24760         * reflection.h (MonoReflectionMethodAux): New structure to store
24761         information which is rarely used, thus is not in the MonoMethod
24762         structure.
24763
24764         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
24765         store the aux info.
24766
24767         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
24768         and marshalling info into the aux structure.
24769
24770         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
24771         from the aux structure.
24772
24773         * loader.c (mono_method_get_param_names): Retrieve the param names from
24774         the aux structure.
24775         
24776 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
24777
24778         * exception.h exception.c: Add AppDomainUnloadedException && fix 
24779         warning.
24780
24781 2003-10-21  Dick Porter  <dick@ximian.com>
24782
24783         * socket-io.c
24784         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
24785         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
24786
24787 2003-10-21  Martin Baulig  <martin@ximian.com>
24788
24789         * reflection.c (mono_reflection_bind_generic_parameters):
24790         `klass->parent' is NULL for interfaces.
24791
24792 2003-10-21  Martin Baulig  <martin@ximian.com>
24793
24794         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24795
24796 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
24797
24798         * exception.c (mono_exception_from_name_msg): New helper function for
24799         creating exceptions and initializing their message field.
24800
24801         * exception.c: Simplify functions using the new helper.
24802
24803         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
24804         New function.
24805
24806         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
24807         mono_raise_exception, since otherwise gcc doesn't generate the function
24808         epilog for raise_exception, confusing the stack unwinding in the JIT.
24809         Fixes #45043.
24810
24811         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
24812         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
24813         Fixes #49499.
24814
24815 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24816
24817         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
24818         utf8.
24819
24820 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
24821
24822         * icall.c: Removed GetUninitializedObject method because
24823           AllocateUninitializedClassInstance does the same.
24824
24825 2003-10-18  Martin Baulig  <martin@ximian.com>
24826
24827         * class.c (inflate_generic_signature): Renamed to
24828         mono_class_inflate_generic_signature() and made it public.
24829         (my_mono_class_from_generic_parameter): New static function; if we
24830         don't already have the generic parameter's MonoClass, create a
24831         very simple one which is just used internally in the runtime and
24832         not passed back to managed code.
24833
24834         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
24835
24836         * metadata.h (MonoMethodSignature): Moved the
24837         `MonoGenericParam *gen_params' to the MonoMethodHeader.
24838         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
24839
24840         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
24841         ves_icall_MonoMethod_GetGenericArguments(); this is now an
24842         interncall on the MonoMethod class, not on MethodInfo.
24843         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
24844         calling mono_reflection_bind_generic_method_parameters() directly.
24845
24846         * loader.c (mono_method_get_signature): If this is a MethodSpec;
24847         return the already computed `method->signature'.
24848         (method_from_methodspec): New static function to load a method
24849         from a MethodSpec entry.
24850         (mono_get_method_from_token): Call the new method_from_methodspec()
24851         for MethodSpec tokens.  
24852         (mono_get_method_from_token): If we're a generic method, load the
24853         type parameters.
24854
24855         * reflection.c (mono_image_get_memberref_token): Allow
24856         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
24857         table.
24858         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
24859         (mono_image_create_token): First check whether it's a generic
24860         method (so we'd need to create a MethodSpec), then do the other
24861         two alternatives.
24862         (mono_reflection_bind_generic_method_parameters): Return a
24863         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
24864         called directly from the interncall.
24865
24866 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
24867
24868         * reflection.c (load_public_key): Move loading of the public key
24869         into managed code.
24870
24871         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
24872
24873         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
24874         fields.
24875
24876         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
24877         culture, hash_alg and public_key. Fixes #49555.
24878
24879 2003-10-17  Martin Baulig  <martin@ximian.com>
24880
24881         * class.h (MonoGenericInst): Moved this declaration here and added
24882         `MonoMethod *generic_method'.
24883
24884         * icall.c
24885         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
24886         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
24887
24888         * metadata.c (mono_metadata_type_equal): Two types of
24889         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
24890         index; ie. don't compare the address of the `MonoGenericParam'
24891         structure.
24892         (mono_metadata_load_generic_params): Removed the `MonoMethod
24893         *method' argument.
24894
24895         * metadata.h (MonoGenericInst): Moved declaration to class.h.
24896         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
24897
24898         * reflection.c (method_encode_signature): Encode the number of
24899         generic parameters.
24900         (encode_generic_method_sig): New static function.
24901         (method_encode_methodspec): New static function; creates an entry
24902         in the MethodSpec table for a generic method.
24903         (mono_image_get_methodspec_token): New static function.
24904         (mono_image_create_token): Call mono_image_get_methodspec_token()
24905         for generic methods.
24906         (mono_reflection_bind_generic_method_parameters): New public
24907         function.  Instantiates a generic method.
24908
24909 2003-10-16  Martin Baulig  <martin@ximian.com>
24910
24911         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
24912         *gen_params' here from MonoMethodHeader.
24913
24914         * metadata.c (mono_metadata_parse_method_signature): If we have
24915         generic parameters, initialize `method->gen_params' and then set
24916         the correct `type->data.generic_param' in all the parameters.
24917
24918 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24919
24920         * threads.c (mono_threads_get_default_stacksize): New function to 
24921         return the default stacksize.
24922
24923         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
24924         termination of the finalizer thread, since the previous method had
24925         race conditions. Fixes #49628.
24926
24927         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
24928         as for the other managed threads.
24929
24930 2003-10-16  Martin Baulig  <martin@ximian.com>
24931
24932         * class.c (inflate_generic_signature): Copy `generic_param_count'
24933         and `gen_params'.
24934
24935         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
24936         New interncall.
24937
24938         * metadata.c (mono_metadata_parse_method_signature): Actually set
24939         the `method->generic_param_count' here.
24940         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
24941
24942 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24943
24944         * object.h: Add a new field to TypedRef to simplify the implementation
24945         of the REFANY opcodes in the JIT.
24946
24947         * icall.c: Make use of the new field.
24948
24949         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
24950         dynamically.
24951
24952 2003-10-15  Martin Baulig  <martin@ximian.com>
24953
24954         * class.c (mono_class_from_gen_param): Renamed to
24955         mono_class_from_generic_parameter() and moved most of the
24956         functionality from mono_reflection_define_generic_parameter()
24957         here; ie. we create a "real" class here.
24958         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
24959         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
24960         previously been called.
24961
24962         * class.h (MonoGenericParam): Moved the declaration of this struct
24963         here from metadata.h and added `MonoMethod *method'.
24964
24965         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
24966         interncall.
24967
24968         * loader.c (mono_get_method_from_token): If we have any generic
24969         parameters, call mono_metadata_load_generic_params() to read them
24970         from the MONO_TABLE_GENERICPAR.
24971
24972         * metadata.c (mono_metadata_load_generic_params): Added
24973         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
24974
24975         * metadata.h (MonoMethodSignature): Replaced
24976         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
24977         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
24978
24979         * reflection.c (mono_reflection_define_generic_parameter): Moved
24980         most of the functionality into the new
24981         mono_class_from_generic_parameter(); set the `method' field if
24982         we're a method parameter.       
24983
24984 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
24985
24986         * marshal.c (emit_struct_conv): if native size is 0
24987         emit no code.
24988
24989 2003-10-14  Martin Baulig  <martin@ximian.com>
24990
24991         * icall.c: The generics API has changed in the spec since it was
24992         added to System.Type; these modifications make it match the spec
24993         again.
24994         (ves_icall_Type_GetGenericParameters): Renamed to
24995         `ves_icall_Type_GetGenericArguments'.
24996         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
24997         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
24998         `ves_icall_MonoType_get_HasGenericArguments'.
24999         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
25000         `ves_icall_MonoType_get_IsGenericParameter'.
25001         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
25002         this is no interncall anymore.
25003         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
25004         `ves_icall_TypeBuilder_get_IsGenericParameter'.
25005
25006 2003-10-14  Martin Baulig  <martin@ximian.com>
25007
25008         * reflection.c (mono_reflection_bind_generic_parameters): Also
25009         inflate generic methods if we're reading the class from IL.
25010
25011 2003-10-13  Martin Baulig  <martin@ximian.com>
25012
25013         * reflection.c (mono_reflection_define_generic_parameter): This
25014         method isn't called directly from the icall anymore; take a
25015         `MonoReflectionAssemblyBuilder *' so we can use this for type and
25016         method generic parameters.
25017         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
25018         (method_builder_encode_signature): Encode generic parameters.
25019         (mono_image_get_method_info): Write generic params to the
25020         MONO_TABLE_GENERICPARAM table.
25021
25022         * reflection.h (MonoReflectionMethodBuilder): Added
25023         `MonoArray *generic_params'.
25024
25025         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
25026
25027         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
25028         wrapper for mono_reflection_define_generic_parameter().
25029         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
25030
25031 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
25032
25033         * marshal.h: Add missing function to fix build.
25034
25035         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
25036         the SetLastError pinvoke attribute.
25037
25038         * marshal.c (mono_marshal_set_last_error): New helper function called
25039         by the generated code.
25040         
25041         * marshal.c (mono_mb_emit_branch): New helper function.
25042
25043         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
25044
25045         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
25046         classes as parameters and return values of delegates. Fixes #29256. 
25047
25048 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
25049
25050         * locales.c: use gint32 in non HAVE_ICU case
25051
25052 2003-10-11  Martin Baulig  <martin@ximian.com>
25053
25054         * mono-debug.c (mono_debug_add_method): Added a workaround for
25055         bug #48591.
25056
25057 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
25058
25059         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
25060         delegates passed to native code must use the STDCALL calling 
25061         convention. Fixes #35987.
25062
25063 2003-10-10  Martin Baulig  <martin@ximian.com>
25064
25065         * class.c (inflate_generic_type): If we're inflating for a generic
25066         type instance (and not for a generic method), return
25067         MONO_TYPE_MVAR unchanged.
25068
25069 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25070
25071         * string-icalls.c: Join ignores null strings in the source array.
25072         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
25073         * threads.c: GetAvailableTheads is slightly more accurate.
25074
25075 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
25076
25077         * threads.h threads.c : add mono_threads_set_default_stacksize
25078         and pass default to CreateThread calls.
25079
25080 2003-10-09  Dick Porter  <dick@ximian.com>
25081
25082         * icall.c:
25083         * locales.h:
25084         * locales.c: Internal calls for constructing CultureInfo and
25085         related objects from libicu (if its available.)
25086
25087 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
25088
25089         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
25090
25091 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25092
25093         * threadpool.c: added an argument to async_invoke_thread that is the
25094         item to process, pass the MonoAsyncResult to the thread start function
25095         when creating a new thread. This way we don't need to acquire any lock
25096         when we're creating a new thread. Readded a semaphore for faster
25097         response times (instead of that Sleep i added).
25098
25099 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
25100
25101         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25102         get daylight change dates better on Windows, fix handling
25103         of platforms without tm_gmtoff.
25104
25105 2003-10-06  Martin Baulig  <martin@ximian.com>
25106
25107         * class.c (inflate_generic_method): Renamed to
25108         mono_class_inflate_generic_method() and made public.
25109         (mono_class_init): Don't inflate the generic methods here.
25110         (mono_class_from_generic): Added `gboolean inflate_methods'
25111         argument.  Inflate the methods here.
25112
25113         * loader.c (mono_method_get_param_names): Ignore instances of
25114         generic types for the moment.
25115
25116         * reflection.c (fixup_method): Added support for inflated methods.
25117         (mono_image_create_token): Use mono_image_get_methodref_token()
25118         for inflated methods.
25119         (mono_custom_attrs_from_param): Ignore instances of generic types
25120         for the moment.
25121         (mono_reflection_bind_generic_parameters): New public function.
25122         Moved all the functionality from
25123         ves_icall_Type_BindGenericParameters() here and added support for
25124         dynamic types.
25125         (mono_reflection_define_generic_parameter): Initialize
25126         `klass->methods' here.
25127
25128         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
25129         functionality into mono_reflection_define_generic_parameter().
25130         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
25131         TypeBuilder, return that TypeBuilder.
25132
25133 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25134
25135         * appdomain.c: removed mono_delegate_semaphore.
25136
25137         * threadpool.c:
25138         (mono_thread_pool_add): moved hash table creation inside and the thread 
25139         creation outside of the critical region.
25140         (mono_thread_pool_finish): removed obsolete code.
25141         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
25142         continue or exit the thread depending on the queue.
25143
25144 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
25145
25146         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
25147         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
25148         handle more bool marshalling options
25149
25150 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
25151
25152         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
25153         arrays of structs. Also add a more descriptive error message when
25154         a structure member is marshalled as LPArray.
25155
25156 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
25157
25158         * marshal.c (mono_marshal_get_native_wrapper): Add support for
25159         marshalling arrays of complex types. Fixes #29098. Also remove an
25160         usused and incomplete function.
25161
25162 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25163
25164         * gc.c: report heap_size - free_bytes as total memory allocated
25165         (bug#49362).
25166
25167 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
25168
25169         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
25170         fix timezone handling problems on Windows.
25171         
25172         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
25173         asserts when the year is outside the range handled by ms the functions.
25174
25175         * class.c (setup_interface_offsets): If the class is an interface,
25176         fill out its interface_offsets slot.
25177
25178 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25179
25180         * threadpool.c: mark threadpool threads as background.
25181
25182 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
25183
25184         * decimal.c - define DECINLINE to nothing if not using GCC
25185
25186 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
25187
25188         * assembly.c: More refcount fixes.
25189
25190 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25191
25192         * string-icalls.c: if we're not trimming, return the same string.
25193         When not splitting, don't create a new string.
25194
25195 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25196
25197         * image.c:
25198         (mono_image_open): increment the ref_count inside the critical section.
25199
25200 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
25201
25202         * image.c (mono_image_open): Fix reference counting bug.
25203
25204 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
25205
25206         * marshal.c (mono_marshal_type_size) struct alignment changed for 
25207         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
25208         64bits. Avoid leak in mono_marshal_get_native_wrapper when
25209         mono_lookup_pinvoke_call throws.        
25210
25211 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
25212
25213         * reflection.c (mono_reflection_parse_type): Fix #49114.
25214
25215         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
25216         temporary workaround for cygwin header problem.
25217
25218         * object.c (mono_object_isinst): Synchronize this with the code
25219         generated by the JIT for casts.
25220
25221 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
25222
25223         * reflection.c (encode_type): Fix #38332.
25224
25225 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
25226
25227         * marshal.c (mono_marshal_method_from_wrapper): New function to return
25228         the original method from the wrapper method.
25229
25230 2003-09-25  Martin Baulig  <martin@ximian.com>
25231
25232         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
25233         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
25234         (ves_icall_Type_get_IsGenericInstance): New interncall.
25235
25236 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
25237
25238         * object.c: fix cast warning in big endian code.
25239
25240 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
25241
25242         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
25243         
25244 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25245
25246         * assembly.c: don't call check_env from mono_assembly_load. It's
25247         already done once in mono_assemblies_init and may cause headaches when
25248         multiple threads are loading assemblies.
25249
25250 2003-09-19  Martin Baulig  <martin@ximian.com>
25251
25252         * reflection.c (mono_reflection_define_generic_parameter): Don't
25253         allocate `klass->methods', set `klass->flags' to
25254         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25255
25256 2003-09-18  Martin Baulig  <martin@ximian.com>
25257
25258         * class.c (mono_class_init): Don't create `class->methods' if it's
25259         already initialized.
25260
25261         * metadata.c (mono_metadata_load_generic_params): Make this
25262         actually work.
25263
25264         * reflection.c (mono_reflection_define_generic_parameter): Set
25265         parent class and interfaces from the constraints.
25266
25267         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25268         to keep this struct in sync with the declaration in TypeBuilder.cs.
25269
25270 2003-09-17  Martin Baulig  <martin@ximian.com>
25271
25272         * metadata.h (MonoType): Replaced the data's `int type_param'
25273         field with `MonoGenericParam *generic_param'.
25274         (MonoGenericParam): Added `MonoClass *klass'.
25275
25276         * class.c (mono_class_from_gen_param): Removed the
25277         `MonoImage *image' and `int type_num' arguments.
25278
25279         * metadata.c (mono_metadata_parse_generic_param): New static
25280         method; creates a MonoGenericParam which just contains the index.
25281         (do_mono_metadata_parse_type): Call
25282         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25283         MONO_TYPE_MVAR.
25284
25285         * reflection.c (mono_image_typedef_or_ref): Generic type
25286         parameters may be in the same assembly, but never use a typedef
25287         for them.
25288         (mono_reflection_define_generic_parameter): We're now creating a
25289         "real" class for the type parameter; it's now safe to call
25290         mono_class_from_mono_type() on the class'es type, it'll do the
25291         right thing.
25292
25293 2003-09-16  Martin Baulig  <martin@ximian.com>
25294
25295         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25296         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25297         the `symfile' data structure must be fully initialized before it
25298         gets added to the table.
25299
25300 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25301
25302         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25303
25304         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25305         class init trampolines.
25306
25307 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25308
25309         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25310         to the built-in profiler to turn off time and allocation profiling
25311         respectively.
25312
25313 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25314
25315         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25316         g_direct_equal.
25317
25318         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25319         in human readable form.
25320
25321 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25322
25323         * reflection.c icall.c: Fixed warnings.
25324
25325         * image.c (load_class_names): Use a temporary hash table to hold the
25326         namespaces in order to avoid doing many string comparisons.
25327
25328         * image.h: Fix typo.
25329
25330         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25331         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25332         since the NULL case is short-circuited inside g_hash_table_lookup, 
25333         leading to better performance.  
25334
25335         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25336         obtain the first custom attribute for a given index. Depends on the
25337         CustomAttribute table being sorted by the parent field.
25338
25339         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25340         for better performance.
25341
25342 2003-09-07  Martin Baulig  <martin@ximian.com>
25343
25344         * class.c (mono_class_init): If we're a generic instance, inflate
25345         all our methods instead of loading them from the image.
25346         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25347
25348 2003-09-07  Martin Baulig  <martin@ximian.com>
25349
25350         * mono-debug-debugger.c: Added support for constructors.
25351
25352 2003-09-06  Martin Baulig  <martin@ximian.com>
25353
25354         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25355         New interncall.
25356
25357         * reflection.c (mono_reflection_setup_generic_class): Call
25358         ensure_runtime_vtable() to create the vtable.
25359
25360 2003-09-05  Martin Baulig  <martin@ximian.com>
25361
25362         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25363         MONO_TYPE_MVAR.
25364
25365 2003-09-04  Martin Baulig  <martin@ximian.com>
25366
25367         * reflection.c (mono_reflection_define_generic_parameter): Generic
25368         parameters start with zero.
25369
25370 2003-09-04  Martin Baulig  <martin@ximian.com>
25371
25372         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25373
25374         * reflection.h (MonoReflectionGenericParam): New typedef.
25375         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25376         the generic parameters from the managed TypeBuilder.
25377
25378         * reflection.c (mono_reflection_define_generic_parameter): New function.
25379         (mono_reflection_create_runtime_class): Encode generic parameters.
25380         (mono_reflection_setup_generic_class): New function; this is
25381         called after adding adding all generic params to the TypeBuilder.
25382         (encode_type): Added MONO_TYPE_VAR.
25383
25384 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25385
25386         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25387         here from the JIT.
25388
25389         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25390         load hook.
25391
25392 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25393
25394         * reflection.h reflection.c class.h class.c: Delete duplicate 
25395         definition of mono_type_get_name () from reflection.c and export the
25396         one in class.c.
25397
25398         * class.c: Class loading fixes from Bernie Solomon 
25399         (bernard@ugsolutions.com).
25400
25401         * reflection.c: Endianness fixes from Bernie Solomon 
25402         (bernard@ugsolutions.com).
25403         
25404 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25405
25406         * assembly.h assembly.c: Define a file format version for AOT
25407         libraries.
25408         
25409         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25410
25411         * appdomain.h (MonoJitInfo): New field to determine whenever the
25412         code is domain neutral.
25413         
25414 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25415
25416         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25417
25418 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25419
25420         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25421         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25422         Avoid caching the result since strings must be domain specific. Fixes
25423         #48050.
25424
25425 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25426
25427         * marshal.c (mono_marshal_init): Make this callable multiple times
25428         since it is hard to find a correct place to call it.
25429
25430         * object.c (mono_runtime_class_init): Execute static constructors in
25431         the correct appdomain.
25432
25433         * image.c (build_guid_table): Handle the case when multiple images have
25434         the same GUID.
25435
25436 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25437
25438         * icall.c: added a couple of icalls for System.Web.
25439
25440 2003-08-28  Martin Baulig  <martin@ximian.com>
25441
25442         * icall.c (ves_icall_Type_BindGenericParameters): Use
25443         `klass->generic_inst' instead of `&klass->byval_arg' in the
25444         mono_type_get_object() call.  The returned type must be
25445         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25446
25447 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25448
25449         * NOTES: New file.
25450
25451         * object.c (mono_class_proxy_vtable): Make it thread safe.
25452
25453         * pedump.c: Fix warning.
25454
25455         * object.c appdomain.h: Get rid of metadata_section. 
25456         It is no longer needed and it was causing deadlocks with domain->lock.
25457
25458         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25459
25460 2003-08-26  Martin Baulig  <martin@ximian.com>
25461
25462         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25463
25464 2003-08-26  Martin Baulig  <martin@ximian.com>
25465
25466         * pedump.c (main): Call mono_metadata_init(),
25467         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25468         and mono_loader_init().
25469
25470 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25471
25472         * loader.h: Add missing include to fix build.
25473
25474         * image.h: mono_image_load_references is no more.
25475
25476         * assembly.c: Reworked assembly loading to make it really thread safe.
25477         After these changes, the assembly returned by mono_assembly_open is
25478         fully initialized, i.e. all its references assemblies are loaded.
25479
25480         * assembly.c (mono_image_load_references): Renamed to 
25481         mono_assembly_load_references, and made private, since clients no
25482         longer need to call it.
25483
25484         * class.c: Removed calls to mono_assembly_load_references, since it was
25485         a source of deadlocks.
25486
25487         * loader.h loader.c class.h class.c: Protect data structures using a 
25488         new lock, the loader lock.
25489
25490         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25491         GPtrArrays only when needed.
25492
25493         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25494         into empty structures by mcs. Fixes pinvoke7.cs.
25495         
25496         * domain.c (mono_init): Call a new initialization function.
25497
25498         * appdomain.c (mono_runtime_init): Call the new initializer function
25499         of the marshal module.
25500
25501         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25502         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25503
25504         * marshal.h marshal.c: Added locks around the wrapper caches to make
25505         this module thread safe.
25506
25507         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25508         this argument. Fixes pinvoke1.exe.
25509
25510 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25511
25512         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25513         enumeration of values. Removed fields to store remote call output values in
25514         MonoAsyncResult. Not needed any more.
25515         * object.c: Initialize call_type and async_result fields in mono_message_init.
25516         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25517         dispatching the message.
25518         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25519         async call to finish. To do it use a message with EndInvoke call type.
25520
25521 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25522
25523         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25524         determines whenever a method has marshalling info.
25525
25526 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25527
25528         * assembly.c: fix the build on windows.
25529
25530 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25531
25532         * object.cs: Fixed bug #47785.
25533
25534 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25535
25536         * string-icalls.c (StringReplace): If their are no occurances of
25537         the old string found return a reference to the supplied
25538         string. This saves some memory and matches MS behavoir.
25539         
25540 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25541
25542         * socket-io.c: fixed compilation for systems that define AF_INET6
25543         and don't define SOL_IP/SOL_IPV6.
25544
25545 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25546
25547         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25548         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25549
25550         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25551
25552         * domain.c: Make this module thread safe.
25553
25554         * domain.c (mono_init): Call new initialization function.
25555
25556         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25557         reference types too. Fixes #38812.
25558
25559         * image.c (mono_image_init): Fixed warnings.
25560
25561         * class.c (mono_class_from_typeref): Handle assembly load failure
25562         correctly.
25563
25564         * appdomain.c (add_assemblies_to_domain): Handle the case when
25565         the references of an assembly are not yet loaded.
25566
25567         * metadata.c image.c assembly.c: Moved initialization of global
25568         variables to a separate function called at startup since lazy 
25569         initialization of these variables is not thread safe.
25570         
25571         * image.c assembly.c: Made this module thread safe by adding locks in 
25572         the appropriate places.
25573
25574         * domain.c (mono_init): Call the new initialization functions of the
25575         three modules.
25576
25577 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
25578
25579         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
25580           make a direct call. It is proxy's work to make the call asynchronous.
25581           mono_delegate_end_invoke(): If the targe is a proxy, just collect
25582           the return values.
25583         * object.cs: mono_method_call_message_new(): read AsyncResult and
25584           state object from parameters list, if this info is requested.
25585         * object.h: Added fields to store remote call output values in
25586           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
25587
25588 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25589
25590         * object.h: add needed fields to MonoThread.
25591         * threads.c, threads.h: allow registering a function to cleanup data
25592         allocated per thread by the JIT.
25593
25594 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25595
25596         * loader.h: portability fix by Bernie Solomon
25597         * <bernard@ugsolutions.com>.
25598
25599 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
25600
25601         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
25602         return a MonoArray. This simplifies the code and also ensures that
25603         the cache allways contains an object reference as a value.
25604
25605         * icall.c (ves_icall_get_parameter_info): Simplified using the new
25606         function.
25607
25608 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25609
25610         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
25611         fixes a problem with byte ordering when getting the address family for
25612         a socket.
25613
25614 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
25615
25616         * .cvsignore: Added monosn.
25617
25618         * reflection.h reflection.c loader.c: Added support for parameter
25619         marshalling to dynamically created types. Fixes #47295.
25620
25621 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25622
25623         * rand.c: remove useless warnings.
25624
25625 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25626
25627         * class.c: implemented ldtoken for methods and fieldrefs.
25628
25629 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25630
25631         * threadpool.c: when mono_async_invoke was called, no one took care of
25632         monitoring the queue. So if the method invoked took some time and we
25633         got new async invoke requests after 500 ms (the thread created waited
25634         that long in WaitForSingleObject), the new async invoke was not called
25635         until the previous one finished.
25636
25637         This is fixed now. Thanks to Totte for helping with it.
25638
25639 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25640
25641         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
25642
25643 2003-08-11  Martin Baulig  <martin@ximian.com>
25644
25645         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
25646
25647 2003-08-06  Martin Baulig  <martin@ximian.com>
25648
25649         * mono-debug-debugger.c: Added support for static fields,
25650         properties and methods.
25651
25652 2003-08-06  Martin Baulig  <martin@ximian.com>
25653
25654         * mono-debug-debugger.c: Don't store the MonoString's vtable to
25655         make this work for applications with multiple application domains.
25656
25657 2003-08-04  Martin Baulig  <martin@ximian.com>
25658
25659         * mono-debug-debugger.c: Completely reworked the type support; the
25660         most important thing is that we're now just using one single
25661         `MonoType' instance per type.
25662
25663 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
25664
25665         * mono-endian.h, mono-endian.c, icall.c: Added icall
25666         ves_icall_System_Double_AssertEndianity to assert double word endianity
25667         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
25668
25669 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25670
25671         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
25672         support, icalls and fixes.
25673
25674 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
25675
25676         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
25677         classes that are a punctuation character in .NET is not the same a
25678         g_unichar_ispunct.
25679
25680 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25681
25682         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
25683
25684 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
25685
25686         * icall.c: Add new MemCopy internalcall.
25687         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
25688         Simplified code; It is not necessary to handle all the cases here,
25689         as the C# code takes care of it.  Only handle the case of the name
25690         resource embedded into the assembly.
25691
25692         Changed signature to return the data pointer and the size of the
25693         data. 
25694
25695 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
25696
25697         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
25698         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
25699
25700 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25701
25702         * socket-io.c: ignore EINTR error in select.
25703
25704 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
25705
25706         * class.h, class.c: removed unused subclasses field in MonoClass.
25707
25708 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25709
25710         * icall.c: improve fix of get_base_definition(). If the parent class
25711           doesn't have the mehod, look at the parent of the parent.
25712         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
25713           to check if a parameter is an in or out parameter
25714           (PARAM_ATTRIBUTE_IN is not set by default).
25715           mono_method_return_message_restore(): Use mono_class_value_size to
25716           get the size of a value type. mono_type_stack_size (parameterType)
25717           does not return the correct value if parameterType is byRef.
25718           mono_load_remote_field(), mono_load_remote_field_new(),
25719           mono_store_remote_field(), mono_store_remote_field_new():
25720           raise exception if the remote call returns an exception.
25721
25722 2003-07-28  Martin Baulig  <martin@ximian.com>
25723
25724         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
25725         method.  This is a wrapper around mono_runtime_invoke() which
25726         boxes the instance object if neccessary.
25727
25728 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25729
25730         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
25731         metadata.h, row-indexes.h, verify.c: first cut of generics support.
25732
25733 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25734
25735         * icall.c: disable mcs bug workaround.
25736
25737 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25738
25739         * object.c (mono_runtime_class_init): Take the metadata_section
25740         mutex before obtaining the domain mutex.
25741
25742         * appdomain.h: Added definition of metadata_section mutex here. 
25743
25744         * object.c: define metadata_mutex here.
25745
25746 2003-07-24  Ravi Pratap  <ravi@ximian.com>
25747
25748         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
25749         fixed.
25750
25751 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
25752
25753         * reflection.c: Fix bug #46669
25754
25755 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25756
25757         * exception.c:
25758         * exception.h:
25759         * icall.c:
25760         * object.h: fill in the type name for TypeLoadException.
25761
25762 2003-07-23  Ravi Pratap  <ravi@ximian.com>
25763
25764         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
25765         relationship between TypeBuilders while compiling corlib) and bug
25766         45993 (Array types returned from the runtime while compiling
25767         corlib were from the loaded corlib).
25768
25769 2003-07-22  Martin Baulig  <martin@ximian.com>
25770
25771         * mono-debug-debugger.c: Reworked the type support a bit more;
25772         distinguish between types and classes.
25773
25774 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
25775
25776         * icall.c: add IsArrayImpl icall.
25777
25778 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
25779
25780         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
25781         initializing real_size only once. Also fix bug #46602.
25782
25783 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
25784
25785         * object.c: Renamed mono_metadata_section to metadata_section.
25786
25787 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
25788
25789         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
25790           empty array if the type is an array. Fixed.
25791           ves_icall_MonoMethod_get_base_definition: if the base method
25792           is abstract, get the MethodInfo from the list of methods of
25793           the class.
25794         * reflection.c: ParameterInfo.PositionImpl should be zero-based
25795           and it was 1-based. Fixed in mono_param_get_objects.
25796
25797 2003-07-20  Martin Baulig  <martin@ximian.com>
25798
25799         * mono-debug.h: Set version number to 31.
25800         (mono_debug_init): Added `MonoDomain *' argument.
25801
25802         * mono-debug-debugger.c: Reworked the type support; explicitly
25803         tell the debugger about builtin types; pass the `klass' address to
25804         the debugger.
25805
25806 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
25807
25808         * image.c: Allow new metadata tables to be loaded without a
25809         warning. Also update the warning message to give the new constant value.
25810                 
25811 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25812
25813         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
25814         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
25815         array type representation changes.
25816
25817 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25818
25819         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
25820         on Environment.Exit () call.
25821
25822 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25823
25824         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
25825         requires a matching corlib.
25826
25827 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25828
25829         * Changelog: My editor decided to add a CR to each line. Sorry about that.
25830           Committed again without the CRs.
25831         
25832 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25833
25834         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
25835           getting it from the "this" socket instance. Did not work
25836           if the socket is a subclass of Socket.
25837           Also fixed bug #35371.
25838
25839 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25840
25841         * metadata.c: fixed size for TypedByRef.
25842         * loader.c: when searching for a method, consider the vararg amrker.
25843         * unicode.c, decimal.c: constify some arrays.
25844
25845 2003-07-15  Dick Porter  <dick@ximian.com>
25846
25847         * socket-io.c: Fixed compilation for gcc < 3.2.
25848
25849         Fixed compilation for machines that don't have AF_INET6 (thanks to
25850         Bernie Solomon <bernard@ugsolutions.com> for that part.)
25851
25852         Fixed compile warnings.
25853         
25854         Fixed formatting and line endings.
25855
25856 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
25857
25858         * socket-io.h:
25859         * socket-io.c: Added IPv6 support.
25860
25861 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
25862
25863         * class.c (mono_class_is_assignable_from): New function to implement
25864         the is_assignable_from logic. Used by mono_object_isinst, 
25865         Type::IsAssignableFrom () and the interpreter.
25866
25867         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
25868         Object, even interfaces.
25869         
25870         * object.c (mono_object_isinst): Implement in terms of 
25871         is_assignable_from.
25872
25873         * icall.c (ves_icall_type_is_assignable_from): New icall.
25874
25875 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
25876
25877         * domain.c (foreach_domain): fix compiler warning.
25878
25879 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
25880
25881         * image.c (load_metadata_ptrs): use g_strndup because strndup is
25882         not available on all plattforms
25883
25884 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
25885
25886         * image.h image.c: Store the metadata version string in MonoImage.
25887         * icall.c: New icall to retrieve the image version.
25888         * reflection.c (create_dynamic_image): Fill in the image version field
25889         * reflection.c (build_compressed_metadata): Use the image version
25890         from the image structure.
25891
25892 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25893
25894         * appdomain.c: modified comment.
25895         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
25896         That will be its last iteration when mono_gc_cleanup is called from
25897         mono_runtime_cleanup and before the domain is unloaded.
25898
25899         Fixes bug #45962.
25900
25901 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
25902
25903         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
25904         attributes.
25905
25906 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25907
25908         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
25909         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
25910         Bernie Solomon <bernard@ugsolutions.com>.
25911
25912 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25913
25914         * object.c, object.h: provide mono_object_new_fast() for faster
25915         allocation in some special cases.
25916
25917 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25918
25919         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
25920         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
25921
25922 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25923
25924         * threadpool.c: fix leaks.
25925
25926 2003-07-01  Dick Porter  <dick@ximian.com>
25927
25928         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
25929         using MonoGHashTables.  Fixes threadpool bug posted to list.
25930
25931 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25932
25933         * image.h, image.c: added support to load an assembly from a byte array.
25934         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
25935         assembly bundle support.
25936
25937 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
25938
25939         * threadpool.c (mono_thread_pool_add): keep a reference to the
25940         AsyncResult to prevent GC
25941
25942 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25943
25944         * class.c: leak fix.
25945
25946 2003-06-25  Dick Porter  <dick@ximian.com>
25947
25948         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
25949         for the async object, the WaitHandle object will close the handle.
25950         Fixes bug 45321.
25951
25952 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25953
25954         * class.c: in mono_array_class_get (), lookup from the hash with the
25955         same type we insert: this works around a bug in
25956         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
25957         lluis. The real fix will have to wait for after the release.
25958
25959 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25960
25961         * icall.c: fix memory leak when getting type members.
25962
25963 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
25964
25965         * reflection.c: added more pubtoken special cases.
25966
25967 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25968
25969         * class.c: handle field offset correctly when class size
25970         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
25971
25972 2003-06-20  Martin Baulig  <martin@ximian.com>
25973
25974         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
25975         *image' field.
25976
25977 2003-06-20  Martin Baulig  <martin@ximian.com>
25978
25979         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
25980
25981 2003-06-20  Martin Baulig  <martin@ximian.com>
25982
25983         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
25984         just distinguish between variables in registers and variables at
25985         an offset relative to a register.
25986
25987 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25988
25989         * icall.c: #ifdef out latest changes until mcs is fixed.
25990
25991 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25992
25993         * icall.c: return members in metadata order.
25994
25995 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25996
25997         * icall.c: avoid infinite loop in GetTimeZoneData.
25998
25999 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
26000
26001         * icall.c: added Marshal.Prelink/All icalls.
26002
26003 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26004
26005         * object.c, object.h: fix warnings and do some overflow checking
26006         when creating arrays.
26007
26008 2003-06-17  Dick Porter  <dick@ximian.com>
26009
26010         * file-io.h:
26011         * file-io.c: File attributes need to be tweaked slightly when
26012         passed from the managed to the w32 world.
26013
26014 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26015         * profiler.h profiler-private.h profiler.c: Rework last patch
26016         based on suggestion by Paolo.
26017         
26018 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26019
26020         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
26021         instruction level coverage data collection.
26022         * profiler.h profiler.c (: Added new callback function which can be
26023         used by the profiler to limit which functions should have coverage
26024         instrumentation.
26025         * profiler.c (mono_profiler_load): Call g_module_build_path to
26026         generate the file name of the profiler library.
26027
26028 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26029
26030         * profiler.c, profiler.h, profiler-private.h: added basic block 
26031         coverage profiling API.
26032
26033 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
26034
26035         * reflection.c (mono_reflection_create_runtime_class): Add support
26036         for events in dynamically generated code.
26037
26038         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
26039         not allocated.
26040
26041 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26042
26043         * icall.c: when getting timezone info, return reasonable values if we
26044         can't get the actual data.
26045
26046 2003-06-14  Dick Porter  <dick@ximian.com>
26047
26048         * threads.c (start_wrapper): Remove the reference to the thread
26049         object in the TLS data, so the thread object can be finalized.
26050         This won't be reached if the thread threw an uncaught exception,
26051         so those thread handles will stay referenced :-( (This is due to
26052         missing support for scanning thread-specific data in the Boehm GC
26053         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
26054
26055 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
26056
26057         * reflection.c: ensure streams and tables are first allocated with
26058         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
26059
26060 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26061
26062         * icall.c: fixed GetElementType for byrefs (bug# 44792).
26063
26064 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
26065
26066         * reflection.c (mono_reflection_create_runtime_class): Add support for
26067         properties to dynamically created classes.
26068         * reflection.c: Fix a few places where non-MonoObjects were inserted
26069         into the tokens hashtable.
26070
26071 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26072
26073         * object.c: some support to handle out of memory exceptions.
26074
26075 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
26076
26077         * marshal.c (mono_marshal_get_native_wrapper): support reference
26078         return types
26079
26080 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26081
26082         * object.h, object.c: more portability stuff from Bernie Solomon.
26083         Unexport mono_object_allocate(). Added mono_object_unbox ().
26084         Set exitcode when an unhandled exception is thrown.
26085
26086 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
26087
26088         * marshal.c (mono_marshal_get_native_wrapper): use custom
26089         marshaler for return types.
26090
26091 2003-06-10  Dick Porter  <dick@ximian.com>
26092
26093         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
26094         ip_mreq is available
26095
26096 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
26097
26098         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
26099         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
26100         by Bernie Solomon <bernard@ugsolutions.com>.
26101
26102 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
26103
26104         * gc.c (mono_gc_init): Avoid error message on shutdown when
26105         GC_DONT_GC=1 is used.
26106
26107         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
26108         New icall to return the GUID of a module.
26109
26110 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26111
26112         * class.c: ensure instance size always includes the parent's size
26113         even whem class size is set explicitly (fixes bug#44294).
26114
26115 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26116
26117         * profiler.h, profiler.c: made the simple profiler thread-safe,
26118         get more accurate timing info. Allow the loading of an
26119         externally-developed profiler module.
26120
26121 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
26122
26123         * marshal.c (mono_marshal_get_native_wrapper): improved
26124         class/byref arguments.
26125         (mono_marshal_get_native_wrapper): better string marshaling support.
26126
26127 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
26128
26129         * class.c: ensure .pack and .size are handled correctly and
26130         simplified layout of static fields.
26131
26132 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
26133
26134         * appdomain.c
26135         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
26136
26137         * loader.c (mono_lookup_pinvoke_call): look for modules in the
26138         current directory (fix bug 44008)
26139
26140 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
26141
26142         * marshal.c (mono_marshal_get_native_wrapper): started support for
26143         custom marshalers.
26144         (mono_delegate_to_ftnptr): consider marshalling specifications
26145
26146 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
26147
26148         * reflection.c, reflection.h: emit custom marshal info.
26149
26150 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26151
26152         * object.c: free the GError.
26153         * icall.c: added CloseEvent_internal.
26154         * threads.[ch]:
26155         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
26156         call.
26157
26158 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
26159
26160         * loader.c (mono_method_get_signature): Add support for dynamic
26161         assemblies.
26162
26163 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
26164
26165         * reflection.c: fixed bug #43905.
26166
26167 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26168
26169         * class.c, domain.c, icall.c, metadata.h, object.h: support for
26170         handling TypedReference and ArgIterator.
26171         * loader.c, loader.h: added function to get signature at call site.
26172
26173 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26174
26175         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
26176         data readonly. Buglets and warning fixes. Some MethodSpec support.
26177
26178 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26179
26180         * class.h, class.c, object.c: remove relative numbering support.
26181
26182 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
26183
26184         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
26185         free the string, until we get a chance to fix Gtk#
26186
26187 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26188
26189         * marshal.c: revert last patch.
26190
26191 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
26192
26193         * icall.c: updates for new mono_class_vtable() not calling
26194         the type constructor anymore.
26195
26196 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26197
26198         * object.h, object.c: separate vtable creation from type
26199         initialization. Make running the .cctor thread safe.
26200
26201 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
26202
26203         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
26204
26205 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
26206
26207         * loader.c (mono_get_method): consider calling convention
26208
26209 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
26210
26211         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
26212         to return the invisible global type for a module.
26213
26214         * reflection.c (mono_image_build_metadata): Emit global fields too.
26215
26216 2003-05-20  Peter Williams  <peterw@ximian.com>
26217
26218         * loader.c (mono_lookup_internal_call): Add a few newlines.
26219
26220 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
26221
26222         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
26223         literal strings.
26224
26225         * appdomain.c (set_domain_search_path): Recalculate search path when
26226         AppDomainSetup.PrivateBinPath changes.
26227
26228         * object.c (mono_class_compute_gc_descriptor): It turns out some
26229         parts of the class libs (like System.Thread) holds pointers to
26230         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
26231         to treat native int a pointer type here.
26232         
26233 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
26234
26235         * appdomain.h, domain.c: add hashtable for jump target resolution.
26236
26237 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
26238
26239         * reflection.h reflection.c icall.c: Added new icalls 
26240         GetManifestResourceInfoInternal, GetModulesInternal and support
26241         infrastructure.
26242
26243 2003-05-16  Dick Porter  <dick@ximian.com>
26244
26245         * icall.c:
26246         * file-io.h:
26247         * file-io.c: Implement System.IO.MonoIO::GetTempPath
26248
26249 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
26250
26251         * object.c: mono_store_remote_field: little fix to previous patch.
26252
26253 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26254
26255         * class.c: add constructors to array classes.
26256         * icall.c: special case array construction for InternalInvoke (),
26257
26258 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26259
26260         * class.h class.c reflection.c object.c: Added support for field
26261         defaults in dynamically generated classes.
26262
26263 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26264
26265         * reflection.c: properly encode charset for ddlimport.
26266
26267 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26268
26269         * threads.c: allow compiling without GC.
26270
26271 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26272
26273         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26274         handling of thread static data.
26275
26276 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26277
26278         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26279
26280 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26281
26282         * class.c (mono_array_class_get): always set the serializable flags
26283         (mono_array_class_get): always set the SEALED attribute for array types
26284
26285 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26286
26287         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26288         attributes (fix for bug 42021).
26289
26290 2003-05-12  Dick Porter  <dick@ximian.com>
26291
26292         * gc.c: Don't run finalizers when the finalizer thread is
26293         finishing up, because the default domain has already been
26294         destroyed.
26295
26296 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26297
26298         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26299         value is null, we should throw an exception.   This is slightly
26300         different than the other conventions used for the constructor.
26301
26302 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26303
26304         * socket-io.c: fixed windows build.
26305
26306 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26307
26308         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26309
26310 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26311
26312         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26313         compilers.
26314
26315 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26316
26317         * class.c (mono_class_layout_fields): Add experimental GC aware
26318         auto layout facility. Requires class library changes to work correctly.
26319
26320         (mono_class_setup_vtable): Avoid overriding explicit interface
26321         method implementations. Fixes iface3.exe test.
26322
26323         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26324         object reference.
26325         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26326         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26327
26328         * metadata.h: Add new type classification macro which determines
26329         whenever the type holds an object reference.
26330
26331 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26332
26333         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26334
26335 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26336
26337         * gc.c (finalizer_thread): Work around a GC bug.
26338
26339 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26340
26341         * marshal.c (emit_struct_conv): allow unions
26342
26343         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26344
26345 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26346
26347         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26348
26349 2003-05-06  Martin Baulig  <martin@ximian.com>
26350
26351         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26352
26353 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26354
26355         * socket-io.c:
26356         (Select_internal): allow NULLs, don't create arrays if not needed.
26357         Coupled with Socket.cs changes.
26358
26359         * threadpool.c:
26360         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26361         register a finalizer for it that will close the semaphore handle. This
26362         fixes the leak and make Lupus' test run with > 4080 loops.
26363
26364 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26365
26366         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26367         Jerome Laban (bug #42287)
26368
26369 2003-05-02  Martin Baulig  <martin@ximian.com>
26370
26371         * debug-mono-symfile.h
26372         (MonoSymbolFile): Moved declaration into mono-debug.h.
26373         (MonoDebugMethodJitInfo): Likewise.
26374         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26375         argument.
26376         (_mono_debug_address_from_il_offset): Take a
26377         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26378
26379         * mono-debug.h
26380         (MonoDebugDomainData): New struct.
26381         (mono_debug_get_domain_data): New function.
26382         (mono_debug_add_method): Take an additional `MonoDomain *'
26383         argument.
26384         (mono_debug_source_location_from_address): Likewise.
26385         (mono_debug_il_offset_from_address): Likewise.
26386         (mono_debug_address_from_il_offset): Likewise.
26387
26388 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26389
26390         * reflection.c: one more check for null type in custom attrs.
26391
26392 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26393
26394         * reflection.c: avoid warning (comparison is always false due to limited
26395         range of data type).
26396
26397 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26398
26399         * icall.c: throw an exception in Type.GetField if the argument 'name'
26400         is NULL.
26401
26402 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26403
26404         * reflection.c: fixed handling of enums in named arguments to custom
26405         attributes (bug #42123).
26406
26407 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26408
26409         * reflection.c: use the right array element type and handle
26410         a null for a Type argument, too.
26411
26412 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26413
26414         * reflection.c: handle arrays as arguments to custom attributes.
26415
26416 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26417
26418         * reflection.c: handle a string value in a custom attr
26419         ctor that takes an object.
26420
26421 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26422
26423         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26424         (fix bug #42063)
26425
26426 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26427
26428         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26429
26430 2003-04-27  Martin Baulig  <martin@ximian.com>
26431
26432         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26433         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26434         MONO_DEBUGGER_EVENT_BREAKPOINT.
26435         (mono_breakpoint_trampoline_code): Removed.
26436         (mono_debugger_event_handler): The last argument is now a
26437         `guint32'.
26438         (mono_debugger_insert_breakpoint_full): Removed the
26439         `use_trampoline' argument.
26440         (mono_debugger_method_has_breakpoint): Likewise.
26441         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26442         mono_debugger_breakpoint_callback(); take the method and
26443         breakpoint number as arguments.
26444
26445 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26446
26447         * metadata.c: fix off by one when loading parameters attributes.
26448
26449 2003-04-24  Martin Baulig  <martin@ximian.com>
26450
26451         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26452
26453 2003-04-24  Martin Baulig  <martin@ximian.com>
26454
26455         * mono-debug-debugger.c: Moved all code which interacts with the
26456         Mono Debugger here.
26457
26458         * debug-mono-symfile.c: This code now just deals with the symbol
26459         file itself, the debugger code is now in mono-debug-debugger.c.
26460
26461 2003-04-23  Martin Baulig  <martin@ximian.com>
26462
26463         * mono-debug.c (mono_debug_source_location_from_il_offset):
26464         New method; like mono_debug_source_location_from_address(), but
26465         takes an IL offset instead of a machine address.
26466
26467 2003-04-23  Martin Baulig  <martin@ximian.com>
26468
26469         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26470         `line' field; this is now computed by the debugger.
26471
26472 2003-04-23  Martin Baulig  <martin@ximian.com>
26473
26474         * mono-debug.[ch]: New files.  This is the new debugging interface.
26475
26476         * mono-debug-debugger.[ch]: New files.  Moved all code which
26477         interacts with the Mono Debugger here.
26478
26479 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26480
26481         * domain.c (mono_init): initialize mono_defaults.monitor_class
26482
26483 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26484
26485         * reflection.c (method_encode_code): Add a spicy exception to help
26486         future compiler authors.
26487
26488 2003-04-21  Martin Baulig  <martin@ximian.com>
26489
26490         * icall.c
26491         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26492         Make this work with relative pathnames; g_filename_to_uri() needs
26493         an absolute filename.
26494
26495 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26496
26497         * icall.c: Track name changes in Object and ValueType.
26498
26499 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26500
26501         * metadata.c (mono_type_stack_size): size should be a multiple of
26502         sizeof (gpointer)
26503
26504 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26505
26506         * gc.c:
26507         (internal_domain_finalize): moved into mono_domain_finalize. No need
26508         to create another thread because the finalizers will be run in the
26509         finalizer thread.
26510         
26511         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26512         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26513         to be run (MS does this too).
26514
26515 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26516
26517         * object.c (mono_class_compute_gc_descriptor): Update comment.
26518
26519         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26520
26521         * image.h: Add synchronized wrapper cache.
26522
26523         * image.c (do_mono_image_open): Initialize cache.
26524
26525         * reflection.c (create_dynamic_mono_image): Initialize cache.
26526
26527 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26528
26529         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26530         ves_icall_System_Buffer_ByteLengthInternal.
26531
26532 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26533
26534         * reflection.c: setup klass->nested_in earlier. Allow
26535         a dash in the assembly name.
26536
26537 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26538
26539         * metadata.c (mono_type_to_unmanaged): dont access
26540         type->data.klass for MONO_TYPE_OBJECT
26541         (mono_type_to_unmanaged): consider System.Delegate class
26542
26543 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26544
26545         * class.c: just setup supertypes in the proper place instead of
26546         initializing the full element class for arrays.
26547
26548 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26549
26550         * class.c: ensure the element class of arrays is initialized.
26551         Setup the supertype info for array classes, too.
26552
26553 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26554
26555         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26556
26557 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26558
26559         * Makefile.am: re-added -m option when running cygpath. This way,
26560         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26561         separator.
26562         * mono-config.c: same codepath for locating mono config file for WIN32
26563         and the rest.
26564         * assembly.c: if mono_assembly_setrootdir is called, don't override
26565         the value set.
26566
26567 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26568
26569         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
26570         MONO_ASSEMBLIES variable.
26571
26572 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
26573
26574         * icall.c: added Assembly::GetNamespaces() icall.
26575
26576 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26577
26578         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
26579
26580 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
26581
26582         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
26583         * object.c: fixed bug in the construction of vtable for proxies
26584
26585 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
26586
26587         * object.c (mono_array_new): Mark mono_array_new as an icall.
26588
26589 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26590
26591         * class.c: fixed test for public method when overriding interfaces.
26592         Closes bug #40970.
26593
26594 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26595
26596         * appdomain.h, domain.c: added mono_domain_foreach() to
26597         be able to access the currently loaded appdomains.
26598         * object.c: make string interning work across sppdomains.
26599         Mark some functions for use as icalls.
26600
26601 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26602
26603         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
26604
26605         * reflection.h reflection.c: Allocate long living data using 
26606         GC_MALLOC_ATOMIC so the collector does not need to scan it.
26607
26608         * reflection.c: Double the allocation size in streams instead of
26609         increasing it, to prevent unneccesary copying on large assemblies.
26610         
26611         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
26612         creation if the assembly does not have the Run flag set.
26613
26614 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
26615
26616         * class.h: avoid the C++ keywords in header files (Jerome Laban
26617         spotted and fixed this).
26618
26619 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26620
26621         * object.c:
26622         (mono_unhandled_exception): fill in the arguments for the
26623         UnhandledException event. Only trigger that event for the default
26624         domain (as MS does).
26625
26626 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
26627
26628         * object.c: Improve typed allocation stuff based on suggestions from
26629         Paolo. Also turn it on if the GC library supports it.
26630
26631 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26632
26633         * object.c object.h class.h: Added experimental typed allocation
26634         facility using the interfaces in gc_gcj.h.
26635
26636         * os/gc_wrapper.h: Added new include files.
26637         
26638 2003-04-03  Martin Baulig  <martin@ximian.com>
26639
26640         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
26641         which is not yet enabled by default.
26642
26643         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
26644         functions.
26645         (mono_gc_lock, mono_gc_unlock): New static functions.
26646
26647         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
26648         functions; stop/start the world for the garbage collector.  This
26649         is using the windows API; we need to complete the SuspendThread()/
26650         ResumeThread() implementation in the io-layer to make this work on Unix.
26651         (mono_gc_push_all_stacks): New public function; tells the garbage
26652         collector about the stack pointers from all managed threads.
26653
26654 2003-04-03  Martin Baulig  <martin@ximian.com>
26655
26656         * object.h (MonoThread): Added `gpointer stack_ptr'.
26657
26658         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
26659
26660 2003-04-03  Martin Baulig  <martin@ximian.com>
26661
26662         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
26663
26664 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26665
26666         * reflection.c (typebuilder_setup_fields): Initialize field.first and
26667         field.last.
26668
26669 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
26670
26671         * loader.c (mono_lookup_internal_call): Report the corlib that is
26672         out of sync.
26673
26674 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
26675
26676         * icall.c (ves_icall_type_GetTypeCode): fixed check for
26677         System.DBNull (it's class not valuetype).
26678
26679 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26680
26681         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
26682         if the array method was already assigned a token (fixes bug#40646).
26683
26684 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
26685
26686         * reflection.c (mono_reflection_get_type): Attempt type resolve even
26687         if no assembly is given.
26688
26689 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
26690
26691         * metadata.h: Added the new tables.
26692
26693         * row-indexes.h: Added definitions for new tables.
26694
26695         * metadata.c: Add schemas for new tables, and add support for
26696         computing the sizes of them.
26697
26698         * class.c: Update for handling the new type cases.
26699
26700 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
26701
26702         * metadata.h (MONO_TYPE_IS_VOID): new macro
26703
26704 2003-03-31  Martin Baulig  <martin@ximian.com>
26705
26706         * threads.h (MonoThreadCallbacks): Added `thread_created'.
26707
26708         * threads.c (mono_thread_new_init): Call `thread_created' in the
26709         mono_thread_callbacks.
26710
26711 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
26712
26713         * loader.h: added marshalbyrefobject_class to mono_defaults
26714         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
26715         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
26716           generation of output parameters.
26717           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
26718         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
26719           contextbound and the target object belongs to the context of the caller.
26720         * object.h: added context and unwrapped_server variables in MonoRealProxy.
26721         * object.c: Implemented support for interfaces and abstract classes
26722           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
26723           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
26724
26725 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
26726
26727         * class.h class.c (mono_class_is_subclass_of): New function.
26728         
26729         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
26730         routines for most common case (calls from ArrayList::ToArray).
26731
26732         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
26733         routine so programs which call Environment::Exit() can be profiled.
26734
26735         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
26736         Added MONO_ARCH_SAVE_REGS.
26737
26738         * icall.c (ves_icall_type_is_subtype_of): Use new function.
26739
26740 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
26741
26742         * blob.h: Add a couple of new MonoType types definitions.
26743
26744         * tabledefs.h: Add a couple of new call convs.
26745
26746 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
26747
26748         * reflection.h (MonoReflectionDynamicAssembly): track changes in
26749         the layout of the class.
26750
26751         * reflection.c (alloc_table): double the size on overflow to avoid
26752         unnecessary copying.
26753
26754         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
26755         avoid filling out metadata tables and blobs. Also set mb->ilgen to
26756         null so it can be garbage collected.
26757         
26758 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
26759
26760         * reflection.c (mono_reflection_get_type): Return the resolved type
26761         only if it is in the assembly we searched.
26762
26763         * reflection.c (ensure_runtime_vtable): Initialize method slots.
26764
26765         * class.c (mono_class_setup_vtable): Set the slot of the overriding
26766         method.
26767
26768 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26769
26770         * appdomain.c:
26771         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
26772         the right one is 'file:///blah', but MS allows it.
26773         * assembly.c:
26774         (mono_assembly_open): allow 'file://blah'
26775
26776         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
26777
26778 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
26779
26780         * socket-io.c: fixes bug #40310.
26781
26782 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
26783
26784         * reflection.c (mono_reflection_parse_type): handle deeply nested
26785         types correctly.
26786
26787         * reflection.c (mono_image_create_token): Use unique token values
26788         since they will be put into a hash table.
26789
26790         * class.c (mono_class_setup_vtable): If a method occurs in more than
26791         one place in the vtable, and it gets overriden, then change the
26792         other occurances too.
26793
26794         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
26795         object as return type.
26796
26797 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26798
26799         * icall.c: Deleted "ToString" implementation for double and float
26800         because they are full implemented in managed code.
26801
26802 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26803
26804         * reflection.c, reflection.h: implemented and exported functions
26805         to retrieve info about custom attributes.
26806
26807 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26808
26809         * appdomain.c: moved Uri handling to assembly.c
26810         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
26811         work when using a file Uri in *nix and windows.
26812
26813         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
26814         GetReferencedAssemblies.
26815
26816 2003-03-18  Dick Porter  <dick@ximian.com>
26817
26818         * icall.c: Rename a couple of internal calls
26819
26820         * threads.c: Set the thread state to Stopped when a thread exits.
26821         Fixes bug 39377.
26822
26823 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
26824
26825         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
26826         New icall.
26827
26828         * object.c (mono_class_vtable): fix warning.
26829
26830 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
26831
26832         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
26833
26834         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
26835         memory.
26836         (method_encode_clauses): Create exception info structures in the right
26837         order.
26838         (mono_reflection_setup_internal_class): Initialize supertypes field.
26839
26840         * class.c object.c: Handle interfaces which implement other interfaces 
26841         correctly.
26842
26843         * class.h class.c: Move the supertypes array initialization code into 
26844         a separate function so it can be used for dynamic types too. Also call
26845         it earlier, in mono_class_init(), since it can be used before the
26846         type is initialized.
26847
26848 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26849
26850         * Makefile.am:
26851         * assembly.c:
26852         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
26853
26854         * appdomain.c:
26855         * appdomain.h:
26856         * marshal.c:
26857         * object.c: remove warnings.
26858
26859 2003-03-13  Martin Baulig  <martin@ximian.com>
26860
26861         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
26862         (MonoDebugLexicalBlockEntry): New types.
26863
26864         * debug-mono-symfile.c
26865         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
26866
26867 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26868
26869         * process.c: ret can be any non-zero value accroding to MS doc.
26870
26871 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
26872
26873         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
26874         fixing a warning for a miss-used prototype, would have cause
26875         random memory corruption.
26876
26877 2003-03-07  Martin Baulig  <martin@ximian.com>
26878
26879         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
26880         getting really annoying ....
26881
26882 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
26883
26884         * reflection.c (fixup_method): added support for array methods.
26885
26886 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
26887
26888         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
26889         (pointed out by Michael Adams).
26890
26891 2003-03-04  Dick Porter  <dick@ximian.com>
26892
26893         * icall.c: Temporarily reverted the Double and Single ToString()
26894         change, because it broke nunit.
26895
26896 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
26897
26898         * object.h, threads.h: make include files compatible with C++
26899         (patch by Jerome Laban <jlaban@wanadoo.fr>).
26900
26901 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26902
26903         * icall.c: Erased ToString helper functions for Double and Single.
26904         Now, that implementations ar all in managed code (Double and Single
26905         Formatters).
26906
26907 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
26908
26909         * appdomain.c: Added method for initializing the default context of
26910         a domain. Added internal call for getting the default context.
26911         * appdomain.h: Added context variable in MonoDomain struct.
26912         * domain.c: mono_domain_set also sets the default context of the domain
26913         * icall.c: Mapped internal method InternalGetDefaultContext.
26914         * object.c: mono_object_get_virtual_method returns always a remoting
26915         wrapper if the object is a transparent proxy.
26916         mono_runtime_invoke_array: when creating an object by calling the
26917         constructor, if the created object is a proxy, then the constructor should
26918         be called using the a remoting wrapper.
26919
26920 2003-03-03  Dick Porter  <dick@ximian.com>
26921
26922         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
26923         variable so it compiles on solaris.  Problem spotted by
26924         Christopher Taylor <ct@cs.clemson.edu>
26925
26926 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26927
26928         * appdomain.c:
26929         (get_info_from_assembly_name): don't leak value.
26930
26931         * icall.c:
26932         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
26933         result.
26934
26935 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
26936
26937         * assembly.c: export mono_image_load_references ().
26938         * class.c: handle function pointers. mono_class_from_name() now
26939         supports nested type names directly.
26940
26941 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
26942
26943         * reflection.h reflection.c: Encode already created dynamic methods 
26944         and fields correctly as a DEF instead of a REF.
26945
26946         * reflection.c: Get rid of the force_ref argument to 
26947         mono_image_typedef_or_ref since it was wrong in the first place.
26948
26949         * string-icalls.c: add error checking to string constructors according
26950         to the MSDN docs.
26951
26952         * reflection.c: Emit types in the order their TypeBuilders were 
26953         created. Previously, a new table index was assigned to each type before
26954         the tables were emitted. This was wrong because the signature blob
26955         might already refer to a type by its original table index.
26956
26957 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
26958
26959         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
26960         change.
26961         
26962 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26963
26964         * Makefile.am: make assemblies dir have \ instead of / on windows.
26965
26966 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
26967
26968         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
26969         iterate over the NESTEDCLASS table using a linear search since the
26970         table is not guaranteed to be sorted by the secondary key.
26971
26972         * class.c (mono_class_create_from_typedef): fixed up call to
26973         mono_metadata_nesting_typedef.
26974         
26975 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
26976
26977         * marshal.c (mono_string_to_byvalstr): clear the memory as
26978         suggested by Jerome Laban <jlaban@wanadoo.fr>
26979
26980 2003-02-26  Dick Porter  <dick@ximian.com>
26981
26982         * process.c: Cope with padding in .rsrc blocks
26983
26984 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26985
26986         * metadata.h: reverted the filter_len change, it breaks reflection
26987         
26988 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
26989
26990         * metadata.h: added a new field to store the filter_len
26991         
26992
26993 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
26994
26995         * reflection.c: handle custom attributes for types and members
26996         created with Reflection.Emit (bug#38422).
26997
26998 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
26999
27000         * reflection.c: define RTSpecialName automatically for constructors for
27001         compatibility with MS.NET.
27002
27003         * reflection.c (mono_reflection_create_runtime_class): initialize
27004         nested_in field of dynamically created classes.
27005
27006 2003-02-22  Martin Baulig  <martin@ximian.com>
27007
27008         * debug-mono-symfile.h: Incremented version number.
27009
27010 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27011
27012         * object.h icall.c process.c: fix warnings.
27013
27014 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27015
27016         * appdomain.h appdomain.c:
27017         (mono_domain_try_type_resolve): split the 
27018         name_or_tb argument into a name and a tb argument.
27019         (mono_domain_has_type_resolve): new function to check whenever the
27020         application has registered a TypeResolve event handler.
27021         
27022         * icall.c reflection.h reflection.c: move the type resolve logic into
27023         mono_reflection_get_type () so it will be invoked when 
27024         Assembly::GetType () is called.
27025
27026         * reflection.c:
27027         (mono_reflection_get_type): renamed to get_type_internal.
27028         (mono_reflection_get_type): fixed type name generation so it works 
27029         for nested types too.
27030         (mono_reflection_get_type): call has_type_resolve () to avoid the 
27031         costly type name generation if there is no resolve event handler.
27032
27033 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27034
27035         * class.c, image.c: load exported types from file references.
27036
27037 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
27038
27039         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
27040           used to cache the managed methods used to create proxies and make 
27041           remote invocation of methods.
27042         * class.h: Added in MonoVTable a flag to indicate that a class needs 
27043           to be remotely created.
27044         * object.c: Modified the method mono_class_vtable(). It now initializes 
27045           the remote flag of the vtable. Modified mono_object_new_specific(), 
27046           so now it checks the remote flag.
27047         * icall.c: Added a couple of internal methods, one for enabling instance 
27048           creation interception for a type, and one for creating objects bypassing
27049           the remote check.
27050
27051 2003-02-18  Martin Baulig  <martin@ximian.com>
27052
27053         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
27054         New interncall to get a method's metadata token.
27055
27056         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
27057         New interncall for the debugger.
27058
27059 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
27060
27061         * class.c (mono_class_setup_vtable): allocate supertype array
27062
27063 2003-02-18  Martin Baulig  <martin@ximian.com>
27064
27065         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
27066
27067 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27068
27069         * reflection.c:
27070         (assembly_name_to_aname): jump over unknown properties (i've found
27071         something like: 'type, assembly, version=xxx, custom=null, public...',
27072         so now will ignore custom=null and still get the rest of the values).
27073
27074 2003-02-17  Dick Porter  <dick@ximian.com>
27075
27076         * threads.c: Have Thread.Start() wait for a semaphore to signal
27077         that the thread has set up all its local data.  This fixes bug
27078         34323, where Abort() raced the new thread's TLS data.
27079
27080         Also removes the handle_store() call from start_wrapper, because
27081         threads are now always created suspended and there is no longer a
27082         race between the parent and child threads to store the info.
27083
27084 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
27085
27086         * image.c: explain the #- heap issue in a message, hopefully
27087         avoiding FAQs on mono-list.
27088
27089 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27090
27091         * icall.c:
27092         (GetEntryAssembly): if the domain has not invoked
27093         AppDomain.ExecuteAssembly yet, return the assembly of the default
27094         AppDomain.
27095
27096 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
27097
27098         * class.c (mono_ldtoken): make it work in dynamic assemblies.
27099
27100 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
27101
27102         * metadata.c, reflection.c: simple speedup to type hash
27103         and equals code.
27104
27105 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
27106
27107         * image.c, image.h, class.c, assembly.c: move module loading
27108         to MonoImage. When loading metadata, consider alignemnet from
27109         the start of metadata, not from the metadata address in memory.
27110
27111 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
27112
27113         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
27114         AssemblyBuilder objects. Factored out custom attribute creation into
27115         a separate function.
27116         (create_custom_attr): new function to create custom attributes.
27117
27118 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
27119
27120         * Makefile.am: Got tired of typing the full pathname to pedump.
27121         Until there is another option, am installing this.
27122
27123 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
27124
27125         * class.c (class_compute_field_layout): always set field->parent 
27126         (mono_ldtoken): use mono_defaults.fieldhandle_class;
27127
27128 2003-02-11  Dick Porter  <dick@ximian.com>
27129
27130         * threads-types.h:
27131         * monitor.c: Rewrote Monitor, making lock much faster and
27132         Pulse/Wait work as specified.  Also uses much fewer handles, and only
27133         creates them as needed.
27134
27135         * exception.c: Added SynchronizationLockException
27136
27137         * threads.c: Deleted old Monitor implementation.  The new one is
27138         in a new file.
27139
27140 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
27141
27142         * class.c: handled TypedReference type code. Set the correct size for
27143         class data. Setup interface_offsets for interface classes, too.
27144
27145 2003-02-09  Martin Baulig  <martin@ximian.com>
27146
27147         * debug-mono-symfile.h: Reflect latest symbol writer changes.
27148
27149 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
27150
27151         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
27152         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
27153         * object.c: fixed mono_object_get_virtual_method () for interfaces.
27154         * verify.c: check for code that runs after the end of the method.
27155
27156 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27157
27158         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
27159         "System.Math::Round2".
27160         * sysmath.h: Added Floor, Round and Round2 definitions.
27161         * sysmath.c: Modified certain functions that were not 100% compliant
27162         with MS.NET (math precision) and added the implementation of Floor,
27163         Round and Round2.
27164
27165 2003-02-07  Martin Baulig  <martin@ximian.com>
27166
27167         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
27168
27169 2003-02-07  Martin Baulig  <martin@ximian.com>
27170
27171         * debug-mono-symfile.c: Reflected latest symwriter changes.
27172         (mono_debug_create_mono_symbol_file): Removed.
27173         (mono_debug_open_mono_symbol_file): Take an argument which
27174         specifies whether to create a dynamic symbol file.
27175
27176 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
27177
27178         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
27179
27180 2003-02-05  Martin Baulig  <martin@ximian.com>
27181
27182         * reflection.c (mono_image_build_metadata): Make this public,
27183         protect it against being called multiple times, don't create
27184         resources and don't build the compressed metadata here.
27185         (mono_image_create_pefile): Do this here.
27186
27187         * icall.c
27188         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
27189
27190 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27191
27192         * socket-io.c: fixed bug #36322.
27193
27194 2003-02-06  Piers Haken <piersh@friskit.com>
27195
27196         * appdomain.[ch]:
27197         * class.h:
27198         * debug-mono-symfile.c:
27199         * icall.c:
27200         * loader.c:
27201         * mono-config.c:
27202         * monosn.c:
27203         * reflection.c:
27204         * socket-io.c: warning cleanups
27205
27206 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
27207
27208         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
27209         function. works like remoting invoke, but does a check for the Proxy first.
27210
27211 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
27212
27213         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
27214
27215 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
27216
27217         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
27218         array of pointers.
27219         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
27220         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
27221
27222         * object.c (mono_store_remote_field_new): used by the new jit
27223         instead of mono_store_remote_field
27224         (mono_load_remote_field_new): used by the new jit
27225         instead of mono_load_remote_field
27226
27227 2003-02-05  Patrik Torstensson
27228
27229         * appdomain.c: changed unload to take the domain id instead
27230         of domain
27231         
27232         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
27233
27234
27235 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27236
27237         * appdomain.c: don't look for assemblies in ApplicationBase if
27238         PrivateBinPathProbe is set.
27239
27240 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27241
27242         * object.c: make the first argument in main_args contain the absolute
27243         path to the assembly. Fixes bug #37511.
27244
27245 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27246
27247         * icall.c: get correct UTC offset for countries not using daylight
27248         time saving. Fixes bug #30030.
27249
27250 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27251
27252         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27253         and 1 are the family).
27254
27255 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27256
27257         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27258
27259         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27260
27261 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27262
27263         * reflection.c: added support for SignatureHelper tokens, which is
27264         needed by the Calli opcode.
27265
27266         * reflection.h: track changes to SignatureHelper class.
27267
27268         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27269
27270 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27271
27272         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27273
27274 2003-02-03  Patrik Torstensson
27275         * appdomain.[c|h], domain.c : 
27276          - Added support for getting a domain via domain id
27277          - Support for setting and getting domain from System.AppDomain 
27278            (used in cross appdomain channel)
27279          - Added support for get/set for a MonoAppContext on a thread 
27280            (Context class in System.Runtime.Remoting.Contexts),
27281          - Removed hack in Get/SetData and ExecuteAssembly.
27282         
27283         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27284         the managed world to get control when a proxy is created.
27285
27286         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27287         
27288 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27289
27290         * icall.c
27291         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27292         Populate the codebase field as well.
27293
27294 2003-02-02  Martin Baulig  <martin@ximian.com>
27295
27296         * debug-mono-symfile.c
27297         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27298         (mono_debug_symfile_add_method): Allow interncalls.
27299
27300 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27301
27302         * icall.c: throw parse exception if strtod fails or the string is empty.
27303
27304 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27305
27306         * marshal.c: handle object type separately from defined
27307         class types.
27308
27309 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27310
27311         * marshal.c: handle NATIVE_LPSTR for strings when it's
27312         explicitly specified.
27313
27314 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27315
27316         * reflection.c, reflection.h, icall.c: setup the reflection
27317         handle cache for ModuleBuilders and AssemblyBuilders.
27318
27319 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27320
27321         * reflection.c (reflection_methodbuilder_to_mono_method): set
27322         pinvoke flag
27323
27324 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27325
27326         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27327
27328 2003-01-29  Dick Porter  <dick@ximian.com>
27329
27330         * threads.c: No need for the fake_thread kludge now that Thread
27331         doesn't run a class constructor
27332         
27333 2003-01-29  Dick Porter  <dick@ximian.com>
27334
27335         * threads.c: Use g_direct_hash instead of the rather bogus
27336         g_int_hash
27337
27338 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27339
27340         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27341         (fix pinvoke12.exe)
27342         (mono_marshal_get_struct_to_ptr): generate valid IL code
27343         (mono_marshal_get_ptr_to_struct): generate valid IL code
27344         (*): correctly set sig->pinvoke, we need to memdup the signature
27345         to do that
27346
27347 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27348
27349         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27350         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27351
27352 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27353
27354         * profiler.c: provide more callers information.
27355
27356 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27357
27358         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27359
27360         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27361
27362         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27363
27364 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27365
27366         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27367         exception instead of going into an infinite loop on dates which it 
27368         can't yet handle.
27369
27370         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27371         out-of-range exception if needed.
27372
27373         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27374         an implementation for an interface method and to override an inherited
27375         method at the same time. 
27376         Imagine a scenario when a virtual method is used to override a
27377         virtual abstract method in a parent class, and this same method 
27378         provides an implementation for an method inherited from an interface. 
27379         In this case, the interface resolution code will set im->slot, which 
27380         means that the virtual method override pass will skip this method 
27381         which means a pointer to the abstract method inherited from the parent
27382         will remain in the vtable of this non-abstract class.
27383
27384         * class.c: (mono_class_setup_vtable): continue search for a real 
27385         method if only an abstract method is found.     
27386
27387 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27388
27389         * reflection.c: add size to encoding for ByValStr and ByValArray
27390         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27391
27392 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27393
27394         * class.c (mono_class_setup_vtable): pass the override info as an
27395         argument.
27396
27397         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27398         correctly.
27399         
27400         * reflection.c (ensure_runtime_vtable); add support for method 
27401         overrides.
27402         
27403 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27404
27405         * reflection.c (resolution_scope_from_image): Hack to work to work with
27406         dynamic assemblies.
27407
27408         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27409         added a 'force_ref' argument to force this function to allways return 
27410         a TypeRef. This is needed by mono_image_get_memberref_token ().
27411         
27412 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27413
27414         * reflection.c (mono_image_get_type_info): interfaces really don't have
27415         a parent.
27416
27417         * reflection.c (mono_image_basic_init): fill out missing fields of
27418         image structure.
27419
27420         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27421         dynamic assemblies. This is required so dynamic assemblies show up in
27422         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27423         Type::GetType() etc. This is consistent with MS behaviour.
27424
27425         * image.c image.h reflection.c: add newly created classes to the name 
27426         cache so mono_class_get () will find them.      
27427
27428 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27429
27430         First part of changes to get IKVM.NET running under mono.
27431         
27432         * appdomain.h, appdomain.c: added new function 
27433         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27434         This function will call AppDomain::DoTypeResolve to do the actual work.
27435
27436         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27437         moved existing code dealing with dynamic tokens to a new function 
27438         called mono_reflection_lookup_dynamic_token (). This function will 
27439         raise TypeResolve events when appropriate. Since reflection.c is not 
27440         part of libmetadata, a new hook function called 
27441         mono_lookup_dynamic_token() is added to class.c which will call this.
27442
27443         * assembly.h assembly.c: make the invoke_load_hook function public,
27444         so it can be called for dynamic assemblies.
27445
27446         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27447
27448         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27449         type isn't found.
27450
27451         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27452         MonoGHashTable, since it contains pointers to objects which the GC 
27453         needs to track.
27454
27455         * assembly.c (search_loaded): remove unused variable.
27456         
27457 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27458
27459         * object.c: fixed issue exposed by gcc-generated IL programs
27460         that use RVA data for pointers.
27461
27462 2003-01-25  Martin Baulig  <martin@ximian.com>
27463
27464         * threads.c (start_wrapper): Moved the initialization of
27465         `start_func' above the mono_new_thread_init() call to which we
27466         pass it as argument.
27467
27468 2003-01-24  Martin Baulig  <martin@ximian.com>
27469
27470         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27471         the MonoThread pointer.
27472
27473 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27474
27475         * icall.c: Rename `PowImpl' to Pow.
27476
27477 2003-01-23  Dick Porter  <dick@ximian.com>
27478
27479         * threads.c (start_wrapper): Create a Thread object if needed, so
27480         the Main() thread can do the class initialisation in a subthread
27481         that has been set up to allow managed code execution.
27482
27483         Pass the thread ID instead of the MonoThread pointer to the thread
27484         start and attach callbacks.  This change is required, because the
27485         jit thread start callback must be called _before_ the Thread
27486         object can be created.
27487         
27488         (mono_thread_init): Removed much object creation code that is no
27489         longer needed.  No managed code is called from here now.
27490
27491         * object.c (mono_runtime_exec_managed_code): Create a subthread
27492         for Main, and call back to the runtime to use it.
27493         Set the exit code when Main exits.
27494
27495         * gc.c: Make sure domain finalisation happens in a subthread.
27496         Re-enable threaded GC, fixing bug 31333 (again).
27497
27498         * environment.c: System.Environment internall calls (so far just
27499         ExitCode is here, the others are still in icall.c)
27500
27501         * appdomain.c (mono_runtime_cleanup): All threads running managed
27502         code should have finished before mono_runtime_cleanup() is
27503         reached, so no need to clean up threads.
27504
27505 2003-01-22  Martin Baulig  <martin@ximian.com>
27506
27507         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27508         `gpointer func' arguments.      
27509         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27510         but added `MonoThread *thread' argument.
27511         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27512
27513         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27514         and pass it to the mono_thread_start_cb callback.
27515         (mono_install_thread_callbacks): New public function to install a
27516         set of callbacks which are set by the debugger.
27517         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27518
27519 2003-01-22  Martin Baulig  <martin@ximian.com>
27520
27521         * Makefile.am: Install debug-mono-symfile.h.
27522
27523 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27524
27525         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27526
27527 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27528
27529         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27530         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27531         (mono_array_class_get): correctly set access levels of arrays
27532
27533 2003-01-20      Patrik Torstensson
27534         * image.h (MonoAssemblyName): changed major, minor, build, revision
27535         from signed to unsigned.
27536
27537 2003-01-20  sean kasun <skasun@azstarnet.com>
27538
27539         * reflection.c (load_cattr_value): Now this handles
27540         MONO_TYPE_SZARRAY.  Fixes bug #35629
27541
27542 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27543
27544         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27545         integer value
27546
27547 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27548
27549         * decimal.c: fixed bug #26056.
27550
27551 2003-01-17  Martin Baulig  <martin@ximian.com>
27552
27553         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27554
27555 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27556
27557         * exception.[ch]:
27558         (mono_get_exception_type_initialization): new function.
27559
27560         * object.c: throw a TypeInitializationException when an exception is
27561         thrown invoking the class constructor.
27562
27563 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27564
27565         * reflection.c: fixed attribute reading.
27566
27567 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27568
27569         * icall.c:
27570         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
27571         provided, look for the type in the calling assembly and then in
27572         mscorlib; if the assembly name is provided, only try that one.
27573
27574 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
27575
27576         * object.c: register the vtable before there is a chance it's
27577         queried again recursively.
27578
27579 2003-01-13  Duncan Mak  <duncan@ximian.com>
27580
27581         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
27582         gc-internal.h. 
27583         
27584 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
27585
27586         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
27587
27588 2003-01-11  Martin Baulig  <martin@ximian.com>
27589
27590         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
27591         this to 20 for the release.
27592
27593 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
27594
27595         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
27596
27597         * loader.c (mono_method_get_marshal_info): bug fix
27598
27599         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
27600         structures with explicit layout
27601
27602 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27603
27604         * profiler.c: made the output more readable (and sorted). 
27605         Added caller information for the allocation profiler.
27606
27607 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
27608
27609         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
27610
27611 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27612
27613         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
27614         to get value types.
27615         
27616 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
27617
27618         * object.c, profiler.h, profiler.c, profiler-private.h:
27619         Added object allocation profiler.
27620
27621 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
27622
27623         * reflection.h, reflection.c: handle global methods.
27624         Compress blob entries.
27625
27626 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
27627
27628         * marshal.c: fix compilation.
27629
27630 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
27631
27632         * loader.c (mono_method_get_marshal_info): impl.
27633
27634         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
27635
27636 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27637
27638         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
27639         for reference types.
27640
27641 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
27642
27643         * loader.c: fixed off by one error in loaded parameter names.
27644
27645 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
27646
27647         * marshal.c (mono_marshal_get_icall_wrapper): like
27648         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
27649         instead of a MonoMethod.
27650
27651 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27652
27653         * decimal.c: fixed bug #36537.
27654
27655 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
27656
27657         * marshal.c: throw a missing method exception if a
27658         P/Invoke method is not found.
27659
27660 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27661
27662         * icall.c: allow a null this for constructors.
27663
27664 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
27665
27666         * icall.c: raise the proper exceptions if the arguments to the
27667         internal Invoke are incorrect.
27668
27669 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
27670
27671         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
27672
27673 2003-01-03  Martin Baulig  <martin@ximian.com>
27674
27675         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27676
27677 2002-12-31  Martin Baulig  <martin@ximian.com>
27678
27679         * debug-mono-symfile.c: Completely rewrote the type section.
27680         Instead of using individual malloc()ed fields, we use one big
27681         continuous memory area and offsets into this area.
27682         See the comments in the source code for details.
27683
27684 2002-12-30  Martin Baulig  <martin@ximian.com>
27685
27686         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
27687
27688 2002-12-30  Martin Baulig  <martin@ximian.com>
27689
27690         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
27691         line number table in this data blob instead of using an external
27692         pointer.
27693
27694 2002-12-28  Martin Baulig  <martin@ximian.com>
27695
27696         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27697
27698 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
27699
27700         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
27701         as a boxed return type.
27702
27703 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
27704
27705         * appdomain.c
27706         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
27707         g_build_filename to properly get separators on the filename created.
27708
27709         * object.h: Small change, introduce MonoMarshalByRefObject to
27710         track the layout of that structure in the C# universe as we make
27711         changes there.
27712
27713 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
27714
27715         * object.c: removed assert to allow static fields on interfaces.
27716         * loader.c: a TypeSpec may be used for any type, not just arrays.
27717
27718 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27719
27720         * class.c, class.h: added mono_class_array_element_size ().
27721         Ignore static methods in interfaces.
27722
27723 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27724
27725         * threads.c: fixed the build under cygwin.
27726
27727 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27728
27729         * reflection.c: handle nullref constants. Allocate keys for
27730         reflection handles with the GC.
27731
27732 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27733
27734         * threads.c, threads.h: added mono_thread_get_abort_signal()
27735         to get a suitable signal for thread abort.
27736
27737 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27738
27739         * metadata.c: fix handling of ExportedType table.
27740
27741 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27742
27743         * icall.c: added WriteWindowsDebugString internal call.
27744
27745 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27746
27747         * reflection.h: added fields to match C# implementation.
27748
27749 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27750
27751         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
27752
27753 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
27754
27755         * gc.h, gc-internal.h: Rename header for GC internal calls to
27756         gc-internal.h from gc.h as to not clash with Boehm GC having its
27757         header installed as <gc.h> in outside include paths.
27758         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
27759         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
27760
27761 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27762
27763         * icall.c: assign minor, build and revision in FillName.
27764
27765 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
27766
27767         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
27768         Added support for running code generated by Reflection.Emit.
27769
27770 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27771
27772         * appdomain.c: check for NULL argument in LoadFrom.
27773
27774 2002-12-10  Dick Porter  <dick@ximian.com>
27775
27776         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
27777
27778 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27779
27780         * appdomain.c: fix buglet when building exe file name.  Handle full
27781         assembly name (needed after latest changes to AssemblyName).
27782         * image.c:
27783         (mono_image_close): free some hashtables.
27784
27785 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
27786
27787         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
27788         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
27789         on some systems (redhat 7.3) 
27790
27791 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
27792
27793         * threads.c: delete the critical section of a sync block,
27794         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
27795
27796 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
27797
27798         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
27799
27800 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27801
27802         * appdomain.[ch]: handle the assembly preload event to try loading the
27803         assemblies using the paths we have in the current domain.
27804
27805         * assembly.[ch]: created an assembly preload hook that is called to try
27806         loading the assembly by other means that the ones provided here.
27807
27808         * domain.c: initialize the domain search path.
27809
27810         From now on, assemblies (TODO: except corlib and System) are loaded
27811         according to these rules when using mono_assembly_load ():
27812
27813                 1. It tries to load the assembly from the ApplicationBase
27814                 of the current domain appending .dll and .exe (TODO: have to
27815                 try loading from name/name.dll and name/name.exe).
27816
27817                 2. It tries the search path specified in PrivateBinPath for the
27818                 current domain (if any).
27819
27820                 3. Previous behavior.
27821
27822 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
27823
27824         * icall.c: implemented GetInterfaceMap() related icall.
27825         * domain.c, loader.h: load MethodInfo in mono_defaults.
27826
27827 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27828
27829         * gc.c: disable the finalizer thread for now, untill all the issues
27830         with it are resolved.
27831
27832 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27833
27834         * string-icalls.c: handle embedded nulls in string ctor when the
27835         length is specified.
27836
27837 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
27838
27839         * class.c: look for explicit interface implementation in parent
27840         classes, too.
27841
27842 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
27843
27844         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
27845
27846 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
27847
27848         * gc.c: protect handles with a critical section.
27849
27850 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27851
27852         * icall.c:
27853         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
27854         parameters. If no assembly specified, try getting the type from all
27855         the assemblies in the current domain, else, load the assembly and get
27856         the type from it.
27857
27858 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27859
27860         * marshal.c: applied patch from Aleksey Demakov that fixes
27861         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
27862
27863 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27864
27865         * icall.c: fixed get_location.
27866
27867 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
27868
27869         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
27870         declarations to make it work with older gcc. 
27871
27872         * loader.c (mono_get_method): set signature->pinvoke for native calls
27873
27874 2002-11-20  Dick Porter  <dick@ximian.com>
27875
27876         * threads.c (mono_thread_init): Set the main thread's handle
27877
27878 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
27879
27880         * gc.c: allow compilation without GC support. Changed to match the
27881         mono coding style.
27882
27883 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
27884
27885         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
27886
27887 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
27888
27889         * reflection.c: set a public key token on the core assemblies.
27890
27891 2002-11-18  Dick Porter  <dick@ximian.com>
27892
27893         * threads.c: Split out some thread initialisation so that other
27894         files can set the start callback function.
27895
27896         * gc.c: Run finalisers in a separate thread, to avoid stack
27897         overflow.  Fixes bug 31333.
27898
27899         * appdomain.c: Set up GC finalisation thread.
27900
27901         * reflection.c: 
27902         * object.c: 
27903         * domain.c: Use gc.h macros for GC_malloc
27904         
27905 2002-11-15  Dick Porter  <dick@ximian.com>
27906
27907         * threadpool.c: 
27908         * threads.c:
27909         * appdomain.c: Removed mono_runtime_init_with_attach(),
27910         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
27911         merging the extra parameter with the existing function.  Removed
27912         unneeded code in mono_thread_attach().
27913
27914 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
27915
27916         * image.c (mono_image_loaded_by_guid): a method to get loaded
27917         images by guid. 
27918         (load_metadata_ptrs): we store the guid as string.
27919
27920 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
27921
27922         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
27923
27924         * metadata.c (mono_guid_to_string): imported method form Zoltan
27925         Varga (slightly modified)
27926
27927         * assembly.c (mono_assembly_open): load precompiled code
27928
27929         * loader.h (MonoMethod): we store the method token for use in the
27930         aot compiler. 
27931
27932 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27933
27934         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
27935         the hook function called when an assembly is loaded.
27936         
27937         * domain.c: Modified file.
27938         (mono_domain_assembly_load): removed hash table insertion of assemblies.
27939
27940         Fixes bug #33196.
27941
27942 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
27943
27944         * reflection.c: Map PEFileKind to the value expected by the WinNT
27945         image loader. 
27946
27947 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27948
27949         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
27950         Read until the buffer is filled completely.
27951
27952 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27953
27954         * icall.c: implemented MonoType.InternalGetEvent ().
27955
27956 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27957
27958         * appdomain.c: implemented InitAppDomainSetup. Delayed
27959         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
27960         the entry_assembly.
27961
27962         * assembly.c: base_dir is now an absolute path ending with
27963         G_DIR_SEPARATOR.
27964
27965         * icall.c: modified get_location according to the above changes.
27966
27967         * object.c: init AppDomain.SetupInformation for the default domain after
27968         we have the entry assembly.
27969
27970         * domain.c: when unloading a domain, setup = NULL.
27971
27972 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
27973
27974         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
27975
27976 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
27977
27978         * object.h, object.c: introduced mono_object_get_virtual_method ()
27979         to lookup the method invoked on an object when a callvirt is done on
27980         a method.
27981         * icall.c: make MethodInfo::Invoke() always do a virtual call.
27982
27983 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27984
27985         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
27986         current domain when loaded an assembly and failed to load it.
27987
27988         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
27989
27990 2002-10-31  Dick Porter  <dick@ximian.com>
27991
27992         * icall.c: 
27993         * file-io.h: 
27994         * file-io.c: Return the error status in a parameter, as the
27995         GetLastError() value has long since been blown away if we try and
27996         look it up in a subsequent internal call invocation.  Delete the
27997         GetLastError() internal call, because it's useless.
27998
27999 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
28000
28001         * class.[ch]: added cast_class to fix bug 29517
28002
28003 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
28004
28005         * marshal.c: create valid IL code in the filter clause:
28006         the new JIT is less forgiving:-)
28007
28008 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28009
28010         * icall.c: removed get_property internal call.
28011
28012 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
28013
28014         * appdomain.h domain.c: Added an ID to appdomains.
28015         
28016         * threads.c threads.h icall.c: Implement icall
28017         Thread:GetDomainID(), and remove unused icall 
28018         CurrentThreadDomain_internal.
28019
28020 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28021
28022         * icall.c: Don't recurse through the base types in GetConstructor.
28023         Fixes bug #32063. 
28024
28025 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
28026
28027         * mempool.h, mempool.c: added mono_mempool_empty() and
28028         mono_mempool_stats().
28029
28030 2002-10-23  Dick Porter  <dick@ximian.com>
28031
28032         * file-io.c: 
28033         * file-io.h: 
28034         * icall.c: Added MonoIO.GetFileType internal call
28035
28036 2002-10-17  Dick Porter  <dick@ximian.com>
28037
28038         * appdomain.c (mono_runtime_cleanup): Don't signal the async
28039         delegate semaphore before waiting for all threads to finish,
28040         because new threads can also call async delegates.  Fixes bug
28041         32004.
28042
28043         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
28044         of 3 seconds, in case another async job is queued.  (This part is
28045         needed because the bug fix reintroduced the 3s exit lag.)  This
28046         makes the mono_runtime_shutdown flag superfluous.
28047
28048 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
28049
28050         * reflection.c: include ehader size in method section headers.
28051         Really check for suplicated modules entries.
28052
28053 2002-10-17  Martin Baulig  <martin@gnome.org>
28054
28055         * debug-mono-symfile.c: Added back support for locals.
28056
28057 2002-10-14  Martin Baulig  <martin@gnome.org>
28058
28059         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
28060         MONO_TYPE_VOID.
28061
28062 2002-10-14  Martin Baulig  <martin@gnome.org>
28063
28064         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
28065         mono_class_get() instead of looking in the class cache. 
28066
28067 2002-10-13  Martin Baulig  <martin@gnome.org>
28068
28069         * debug-mono-symfile.c: Set version number to 28, include the
28070         signature in method names.
28071
28072 2002-10-13  Martin Baulig  <martin@gnome.org>
28073
28074         * debug-mono-symfile.h: Set version number to 27.
28075
28076 2002-10-11  Martin Baulig  <martin@gnome.org>
28077
28078         * gc.c: Don't register/unregister NULL pointers as disappearing links.
28079
28080 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28081
28082         * metadata.c, metadata.h: added helper function to allocate signatures.
28083
28084 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28085
28086         * icall.c: added internal call to get the location of machine.config.
28087
28088 2002-10-08  Martin Baulig  <martin@gnome.org>
28089
28090         * debug-mono-symfile.c: Ignore classes with a pending init for the
28091         moment.
28092
28093 2002-10-03  Dick Porter  <dick@ximian.com>
28094
28095         * threads.c: Freebsd pthread_t is a pointer
28096
28097 2002-10-03  Dick Porter  <dick@ximian.com>
28098
28099         * socket-io.c: Implemented GetHostName_internal
28100
28101 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28102
28103         * mono-config.c:
28104         (mono_config_parse_file): don't leak the text.
28105
28106 2002-10-02  Martin Baulig  <martin@gnome.org>
28107
28108         * debug-mono-symfile.c: Added support for methods.
28109
28110 2002-10-01  Martin Baulig  <martin@gnome.org>
28111
28112         * debug-mono-symfile.c: Don't emit methods and line numbers for
28113         the dynamic symbol file, just write the type table.  We can easily
28114         have an external helper program which creates a symbol file for an
28115         IL file.        
28116
28117 2002-10-01  Dick Porter  <dick@ximian.com>
28118
28119         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
28120         Only add the handle to the cleanup array when we're about to
28121         launch the thread.  Bug 31425 deadlocked when the test was run on
28122         mono under w32.
28123
28124 2002-10-01  Martin Baulig  <martin@gnome.org>
28125
28126         * debug-mono-symfile.c: Added support for properties.
28127
28128 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28129
28130         * reflection.c: unaligned store fix from Mark Crichton
28131         <crichton@gimp.org>.
28132
28133 2002-09-27  Martin Baulig  <martin@gnome.org>
28134
28135         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
28136         New interncall.
28137
28138 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
28139
28140         * assembly.h, assembly.c: use a sane API to hook into the assembly
28141         loading process instead of a useless special-purpouse hack
28142         (ngen needs a hook, too, for example).
28143
28144 2002-09-27  Dick Porter  <dick@ximian.com>
28145
28146         * threads.c (mono_thread_init): Call GetCurrentProcess() so
28147         io-layer can set up some process handle info.  Not needed on w32,
28148         but doesn't hurt either.
28149
28150         * process.c: Pass the program name in the second parameter to
28151         CreateProcess, so the path is searched.  Include the working
28152         directory. Implemented process name, process enumeration, and some
28153         process detail internal calls.
28154         
28155         * icall.c: Added internal calls for process lookup, and some
28156         process details
28157
28158 2002-09-26  Martin Baulig  <martin@gnome.org>
28159
28160         * assembly.c (mono_install_open_assembly_hook): New global
28161         function to install a function to be invoked each time a new
28162         assembly is loaded.
28163         (mono_assembly_open): Run this callback function if set.
28164
28165         * debug-mono-symfile.c: Put back line numbers for the dynamic
28166         symbol file and also record the .il file as source file.  This
28167         allows us to install the temporary symbol file as `file.dbg' just
28168         like a compiler-generated one.
28169
28170 2002-09-26  Nick Zigarovich <nick@chemlab.org>
28171
28172         * Corrected typo in gc.c (BOHEM vs BOEHM).
28173
28174 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28175
28176         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
28177         GetProperties. Also avoid calling g_slist_length in GetProperties and
28178         GetMethods.
28179
28180 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28181
28182         * reflection.c: avoid unaligned stores (bug spotted by
28183         Mark Crichton  <crichton@gimp.org>).
28184
28185 2002-09-25  Martin Baulig  <martin@gnome.org>
28186
28187         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
28188         instead of guint64 for addresses and added prologue/epilogue info.
28189
28190 2002-09-25  Martin Baulig  <martin@gnome.org>
28191
28192         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
28193         store line number info.  For the dynamic symbol file, we only need
28194         to provide the JIT generated dynamic line number info for the dynamic
28195         symbol file.
28196
28197 2002-09-25  Martin Baulig  <martin@gnome.org>
28198
28199         * debug-mono-symfile.h: Incremented version number.
28200
28201 2002-09-24  Martin Baulig  <martin@gnome.org>
28202
28203         * class.c (mono_debugger_class_init_func): New global function
28204         pointer variable.
28205         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
28206         call it.
28207
28208         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
28209         function.  This is called via the mono_debugger_class_init_func
28210         hook to add all types to the dynamic type table.
28211         (ves_icall_MonoDebugger_GetType): New interncall to get a class
28212         from its metadata token.
28213
28214         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
28215         New interncall for the debugger.
28216
28217 2002-09-24  Nick Drochak <ndrochak@gol.com>
28218
28219         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
28220         before using it in case it is null.
28221         
28222 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28223
28224         * metadata.c: allow custom modifiers in local var signatures
28225         (bug spotted by Zoltan Varga).
28226
28227 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28228
28229         * class.c: deal with the <Module> class that may have a NULL vtable.
28230         Eliminate warnings.
28231
28232 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28233
28234         * image.c, image.h: more strong name helpers.
28235         * monosn.c: more work: convert pem keys to cryptoapi format.
28236
28237 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28238
28239         * string-icalls.c: speedup IndexOf.
28240
28241 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28242
28243         * icall.c: updates from Zoltan.2.Varga@nokia.com.
28244
28245 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28246
28247         * icall.c: cleanup: use mono_object_domain ().
28248
28249 2002-09-23  Martin Baulig  <martin@gnome.org>
28250
28251         * debug-mono-symfile.c: Improved type support.
28252
28253 2002-09-22  Martin Baulig  <martin@gnome.org>
28254
28255         * debug-mono-symfile.c: Added support for reference types and strings.
28256
28257 2002-09-22  Martin Baulig  <martin@gnome.org>
28258
28259         * debug-mono-symfile.c: Started to work on the type table.
28260
28261 2002-09-21  Martin Baulig  <martin@gnome.org>
28262
28263         * debug-mono-symfile.c: Largely reworked the symbol table format.
28264         The symbol table is now incrementally updated each time a new
28265         method is added.  We're now also using our own magic and version
28266         so that you don't need to recompile all your classes if the
28267         dynamic table changes.
28268         (mono_debug_update_mono_symbol_file): Removed.
28269         (mono_debug_symfile_add_method): New function to add a method.
28270
28271 2002-09-21  Martin Baulig  <martin@gnome.org>
28272
28273         * icall.c
28274         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28275         New interncall.
28276
28277         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28278         New interncall to get a method from its metadata token.
28279
28280 2002-09-21  Martin Baulig  <martin@gnome.org>
28281
28282         * debug-mono-symfile.c: Create type table.
28283
28284 2002-09-20  Martin Baulig  <martin@gnome.org>
28285
28286         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28287
28288 2002-09-20  Martin Baulig  <martin@gnome.org>
28289
28290         * debug-mono-symfile.c: Provide information about params and locals.
28291
28292 2002-09-20  Martin Baulig  <martin@gnome.org>
28293
28294         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28295         New interncall.
28296
28297         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28298         interncall to get a method from its metadata token.
28299
28300 2002-09-20  Martin Baulig  <martin@gnome.org>
28301
28302         * debug-mono-symfile.c: Added a few checks for method->header
28303         being non-NULL.  This should never happen, but for the moment
28304         let's use a g_warning() rather than a g_assert().
28305
28306 2002-09-19  Mark Crichton  <crichton@gimp.org>
28307
28308         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28309         even if support for it isn't present.  Added an #ifdef to fix this.
28310
28311         * socket-io.c: Added checks back for Solaris support.
28312
28313 2002-09-19  Martin Baulig  <martin@gnome.org>
28314
28315         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28316         changes in the symbol file format.
28317
28318 2002-09-18  Martin Baulig  <martin@gnome.org>
28319
28320         * debug-mono-symfile.c: Set version number to 21.
28321
28322 2002-09-18  Dick Porter  <dick@ximian.com>
28323
28324         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28325         on netbsd.  Fixes bug 30051.
28326
28327 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28328
28329         * reflection.c:
28330         (set_version_from_string): little fix.
28331
28332 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28333
28334         * monosn.c, Makefile.am: added strong name utility.
28335         * reflection.h, reflection.c: implemented delayed signing,
28336         locale, version and hash id assembly attributes.
28337
28338 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28339
28340         * loader.c, metadata.c: load param attributes in signatures.
28341
28342 2002-09-16  Martin Baulig  <martin@gnome.org>
28343
28344         * debug-mono-symfile.c: Added string table with all method names.
28345
28346 2002-09-14  Martin Baulig  <martin@gnome.org>
28347
28348         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28349         fast method lookup.
28350
28351 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28352
28353         * reflection.c: record the public key token of referenced assemblies.
28354
28355 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28356
28357         * image.c, image.h: added functions to get the strong name and the
28358         public key of an assembly.
28359         * pedump.c: use them.
28360
28361 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28362
28363         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28364
28365 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28366
28367         * marshal.c (mono_marshal_get_managed_wrapper): Added
28368         MONO_TYPE_BOOLEAN 
28369
28370 2002-09-11  Martin Baulig  <martin@gnome.org>
28371
28372         * gc.c: Call GC_unregister_disappearing_link() on all links when
28373         finalizing them, this is necessary to aviod a crash in boehm's
28374         finalize handler.
28375
28376 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28377
28378         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28379         nick@chemlab.org.
28380
28381 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28382
28383         * icall.c: implemented MonoType::Module.
28384         * reflection.c, reflection.h: mono_module_get_object () from
28385         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28386
28387 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28388
28389         * icall.c: ignore overridden methods in GetMethods ().
28390         Fix for FieldInfo::SetValue().
28391         * object.c: handle float/double in runtime invoke.
28392
28393 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28394
28395         * object.c: allow a constructor to be called again on an object.
28396
28397 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28398
28399         * class.h, class.c: move field layout code to it's own function and
28400         export it. Get an interface id earlier. Move fields in MonoClass
28401         so they are more cache friendly and align the bitfields.
28402         * loader.c: temporary handle get_param_names() for a runtime method.
28403         * reflection.c, reflection.h: more code to handle runtime creation of
28404         types.
28405
28406 2002-09-09  Martin Baulig  <martin@gnome.org>
28407
28408         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28409         signature with the pinvoke field being set for the actual call.
28410
28411 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28412
28413         * icall.c: removed some unused icalls. Start of map of glib charsets
28414         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28415
28416 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28417
28418         * debug-helpers.c: break infinite loop (found and fixed by
28419         Holger Arnold <harnold@gmx.de>).
28420
28421 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28422
28423         * icall.c: target may be null in create_delegate.
28424
28425 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28426
28427         * marshal.c: handle a boolean return type.
28428
28429 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28430
28431         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28432
28433 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28434
28435         * gc.c: fix weakreferences.
28436
28437 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28438
28439         * icall.c: added icall to get default codepage.
28440
28441 2002-09-03  Dick Porter  <dick@ximian.com>
28442
28443         * threads.h: 
28444         * threads.c: Use MonoThread instead of MonoObject where
28445         apropriate.
28446
28447         Store running thread objects in a hash table, so that we have all
28448         the info to hand when waiting for them to finish
28449         (means we don't need OpenThread() any more, so mingw builds should
28450         be fully functional again.)
28451
28452         * verify.c:
28453         * object.h: Added thread ID to MonoThread
28454
28455 2002-09-03  Martin Baulig  <martin@gnome.org>
28456
28457         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28458
28459 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28460
28461         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28462
28463 2002-09-03  Martin Baulig  <martin@gnome.org>
28464
28465         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28466         argument to store the end address of the disassembled instruction.
28467
28468         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28469         here from debug-symfile.h.
28470         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28471         JIT into this struct.
28472         (MonoSymbolFile): Added `char *image_file' field.
28473         (MonoDebugGetMethodFunc): Removed.
28474         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28475         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28476         (mono_debug_find_method): New method.
28477
28478         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28479         create a full symbol file.
28480         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28481         and static symbol files.
28482         (mono_debug_find_method): The symbol file keeps an internal method hash,
28483         call this to get a MonoDebugMethodInfo from a MonoMethod.
28484
28485         * debug-symfile.[ch]: Removed.
28486
28487 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28488
28489         * image.c (do_mono_image_open): Remove linker version check.
28490
28491 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28492
28493         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28494         wrappers for instance methods.
28495         
28496 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28497
28498         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28499
28500 2002-08-28  Dick Porter  <dick@ximian.com>
28501
28502         * Makefile.am: Export HOST_CC for w32 builds
28503
28504 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28505
28506         * file-io.c process.c: MonoString are null terminated, no
28507         need for mono_string_to_utf16() anymore.
28508
28509 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28510
28511         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28512
28513 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28514
28515         * icall.c, reflection.h: speedup System.MonoType.
28516
28517 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28518
28519         * reflection.c: allow null as the value of a string argument in
28520         custom attributes constructors.
28521
28522 2002-08-27  Martin Baulig  <martin@gnome.org>
28523
28524         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28525         `trampoline_address' field.
28526
28527 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28528
28529         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28530         check (fixes bug #29486) 
28531
28532 2002-08-27  Martin Baulig  <martin@gnome.org>
28533
28534         * debug-mono-symfile.c: Changed the file format in a way that allows us
28535         open it read-only and to use a specially malloced area for all the
28536         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28537         debugging IL code and there is no MCS generated symbol file for it.
28538
28539 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28540
28541         * object.c: added a define for a good string and array
28542         creation speedup (not enabled by default because we need to deal with
28543         the synch stuff).
28544
28545 2002-08-26  Martin Baulig  <martin@gnome.org>
28546
28547         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28548         function to create a dynamic symbol file.  This is used by the
28549         debugger to create a symbol file for IL code on-the-fly.
28550
28551 2002-08-26  Martin Baulig  <martin@gnome.org>
28552
28553         * loader.c (mono_lookup_pinvoke_call): Include the error message
28554         from g_module_error() in the error message.
28555
28556 2002-08-24  Martin Baulig  <martin@gnome.org>
28557
28558         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28559         function to update the symbol file.  The symbol file is mmap()ed
28560         writable, but private.  This allows us to install the symbol file
28561         together with the assembly.
28562
28563 2002-08-24  Martin Baulig  <martin@gnome.org>
28564
28565         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
28566         but they can read the new symbol file format which mcs is now creating.
28567
28568         * debug-symfile.c (mono_debug_find_source_location): Moved to
28569         debug-mono-symfile.c; this is now operating on the new symbol file.
28570
28571 2002-08-23  Martin Baulig  <martin@gnome.org>
28572
28573         * debug-helpers.c (mono_method_desc_from_method): New function to get
28574         a MonoMethodDesc from a MonoMethod.
28575
28576 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28577
28578         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
28579         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
28580
28581 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
28582
28583         * string-icalls.[ch]: make helper methods static.
28584
28585 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28586
28587         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
28588         types to it and to SetValueInternal.
28589
28590         * object.c: Moved handle_enum label to its proper place. This was the
28591         f... bug! ;-)
28592
28593         This time i compiled mcs and gtk-sharp and they both work.
28594
28595 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28596
28597         * icall.c: reverted partially my previous patch until 
28598         object.c:set_value handles enums correcly.
28599
28600 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28601
28602         * icall.c:
28603         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
28604         (ves_icall_System_Environment_get_MachineName): removed warning when
28605         compiling under cygwin.
28606
28607 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28608
28609         * object.c: fixed field_get_value() for reference types.
28610
28611 2002-08-22  Dick Porter  <dick@ximian.com>
28612
28613         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
28614         Don't free a buffer while it's still needed.  Patch from Jonathan
28615         Liger <Jonathan.liger@wanadoo.fr>
28616
28617 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
28618
28619         * icall.c (ves_icall_System_Environment_get_Platform): Add new
28620         internal call.
28621
28622 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
28623
28624         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
28625         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
28626
28627         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
28628         we call unmanaged code which throws exceptions.
28629
28630 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28631
28632         * appdomain.h: added per-domain entry_assembly.
28633         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
28634         arguments.
28635         * icall.c: Assembly::GetEntryAssembly icall.
28636         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
28637         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
28638
28639 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28640
28641         * appdomain.h, gc.c: added mono_domain_finalize ().
28642
28643 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28644
28645         * object.c:
28646         (mono_print_unhandled_exception): changed g_warning by g_printerr
28647         because g_log has a 1024 characters limit (yeah, i got a big stack
28648         trace). Don't print exception name, that should be in ToString 
28649         returned string.
28650
28651 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28652
28653         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
28654         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
28655
28656 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28657
28658         * object.c:
28659         (mono_print_unhandled_exception): after previous commit, i realized
28660         that MS calls ToString on the exception. I changed this function to
28661         do that. This way we get stack_trace for free.
28662
28663 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28664
28665         * object.c:
28666         (mono_print_unhandled_exception): invoke Message property instead of
28667         getting 'message' field from Exception. Don't allocate memory for
28668         'trace' and 'message' if not needed.
28669
28670 2002-08-18  Dick Porter  <dick@ximian.com>
28671
28672         * unicode.c: Fix asserts to match Encoder.cs checks
28673
28674 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28675
28676         * marshal.c: fix unaligned store issue and a few wrong
28677         opcode argument types.
28678
28679 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28680
28681         * icall.c: added GetUninitializedObjectInternal internal call.
28682
28683 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
28684
28685         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
28686         to the right domain.
28687
28688 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
28689
28690         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
28691
28692         * class.c (class_compute_field_layout): set blittable to false for Strings
28693
28694         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
28695
28696 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28697
28698         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
28699         first chunk of code to create types at runtime. Code to
28700         handle ReflectedType/DeclaringType. Make reflection handles
28701         domain specific.
28702
28703 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
28704
28705         * class.c: set correct name in arrays.
28706
28707 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
28708
28709         * appdomain.c (mono_domain_transfer_object): make it work with
28710         valuetypes. bug fixes.
28711
28712 2002-08-12  Dick Porter  <dick@ximian.com>
28713
28714         * object.h: Rename some parameters to avoid c++ keywords (Patch
28715         from Joseph Wenninger <kde@jowenn.at>)
28716
28717 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
28718
28719         * icall.c: added icall to implement Assembly.GetFile*.
28720
28721 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28722
28723         * reflection.h, reflection.c: code to embed managed resources.
28724
28725 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28726
28727         * class.c: move all the type size stuff into
28728         class_compute_field_layout().
28729
28730 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28731
28732         * class.c: ensure enums have always the correct instance size.
28733         * unicode.c: remove wrong assert.
28734
28735 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28736
28737         * assembly.c: fix mem corruption issue.
28738         * image.h, image.c: added mono_image_get_resource () to access
28739         managed resources.
28740         * icall.c: implemented Assembly.EntryPoint property and some
28741         Managed Resources related internalcalls.
28742
28743
28744 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28745
28746         * image.c, image.h: impemented mono_image_get_entry_point ().
28747         * appdomain.c: use mono_image_get_entry_point.
28748
28749 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28750
28751         * reflection.c: support the object type argument when loading
28752         custom attributes.
28753
28754 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
28755
28756         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
28757         String as return type.
28758
28759 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
28760
28761         * reflection.c: fix encoding of named args for custom attrs to match
28762         the ms implementation. Read them back when instantiating custom
28763         attributes.
28764
28765 2002-08-02  Radek Doulik  <rodo@ximian.com>
28766
28767         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
28768         by Dietmar as quick fix
28769         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
28770         16 as stack size, used on more places as quick fix before Dietmar
28771         will fix it properly
28772
28773 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28774
28775         * object.h, object.c: added accessors for fields and properties.
28776
28777 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28778
28779         * class.c, class.h: made mono_class_get_field_from_name ()
28780         loop on parent types.
28781         Added mono_class_get_property_from_name ().
28782
28783 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28784
28785         * class.c, class.h: move the code to setup the type vtable in its own
28786         function so that it can be reused also for types created at runtime.
28787         Eliminate the "class" identifier from the header file.
28788         * reflection.c: setup the vtable for enums so that we can create
28789         objects for use in SetConstant ().
28790
28791 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
28792
28793         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
28794         instead of the delegate itself as this pointer (bug #28383)
28795
28796 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
28797
28798         * marshal.c (mono_marshal_get_managed_wrapper): added return type
28799         conversions.
28800
28801 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28802
28803         * loader.c: don't set the pinvoke bit on icalls.
28804
28805 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
28806
28807         * debug-helpers.c (mono_method_full_name): only print a number to
28808         indicate wrapper type (so that the output is more readable in traces).
28809
28810 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
28811
28812         * class.c (mono_class_init): include method override patch from Paolo
28813
28814 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
28815
28816         * icall.c: fixed GetTypeCode().
28817
28818 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
28819
28820         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
28821         use real delegate invoke function to make it work with multicast
28822         delegates (fix bug# 28291).
28823
28824 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
28825
28826         * object.c: load constant strings.
28827
28828 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28829
28830         * reflection.c: no magic numbers.
28831         * tabledefs.h: security action enum.
28832
28833 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28834
28835         * assembly.c: fix possible memory corruption.
28836
28837 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28838
28839         * reflection.h, reflection.c: added support for linking resources.
28840         * verify.c: check we have an updated corlib.
28841
28842 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
28843
28844         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
28845         string arrays.
28846         (mono_marshal_string_array): null terminate unmanaged string arrays.
28847         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
28848
28849 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
28850
28851         * icall.c: Type.GetType () can now return also types from the
28852         calling assembly.
28853
28854 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28855
28856         * loader.h, loader.c: stack walking support.
28857         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
28858         GetCallingAssembly.
28859
28860 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
28861
28862         * marshal.c: added optimisations for blittable types 
28863
28864         * class.c (mono_array_class_get): do not set blittable attribute on arrays
28865         (mono_class_setup_mono_type): set blittable attribute for single
28866         and double.
28867
28868         * marshal.c (mono_string_utf8_to_builder): impl.
28869         (mono_string_builder_to_utf8): impl.
28870         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
28871
28872 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
28873
28874         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
28875         (mono_marshal_get_managed_wrapper): impl. byref types
28876
28877 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28878
28879         * icall.c:
28880         (search_method): don't display debug message. 
28881
28882 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28883
28884         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
28885
28886 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28887
28888         * appdomain.c: set the missing filename when throwing exception.
28889
28890 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
28891
28892         * metadata.c (mono_type_size): code cleanup
28893         (mono_type_stack_size): removed some test code
28894
28895 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
28896
28897         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
28898         mono_get_exception_file_not_found now.
28899
28900         * exception.c (mono_exception_from_name_two_strings): New version
28901         that will call a constructor with two string arguments. 
28902         (mono_get_exception_file_not_found): New helper routine, used to
28903         report file-not-found errors.
28904
28905 2002-07-20  Dick Porter  <dick@ximian.com>
28906
28907         * process.h:
28908         * process.c: Pass file handles to CreateProcess
28909         
28910         * icall.c:
28911         * file-io.h:
28912         * file-io.c: Implemented CreatePipe
28913
28914 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28915
28916         * metadata.c (mono_get_param_info): set alignment for value types
28917
28918 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28919
28920         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
28921         Constify mono_domain_assembly_open().
28922         * loader.c: handle null namespace in icalls.
28923
28924 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
28925
28926         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
28927         (emit_str_to_ptr_conv): marshal object as structs
28928
28929         * metadata.c (mono_type_to_unmanaged): marshal object as structs
28930
28931         * marshal.c (mono_marshal_get_runtime_invoke): support value types
28932
28933 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
28934
28935         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
28936         (mono_marshal_get_native_wrapper): we an now return value types
28937
28938 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28939
28940         * verify.c: more checks implemented.
28941
28942 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
28943
28944         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
28945         (fix bug #27695)
28946         (mono_marshal_get_native_wrapper): allow byref arguments
28947         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
28948         impl. PtrToStringXXX methods
28949         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
28950         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
28951         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
28952         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
28953         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
28954
28955 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28956
28957         * reflection.c: fix buglet in parsing an assembly name.
28958
28959 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28960
28961         * marshal.c (emit_ptr_to_str_conv): first impl.
28962
28963 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
28964
28965         * object.c, class.h: cache the vtable in the class as suggested by
28966         vargaz@freemail.hu (Zoltan Varga).
28967
28968 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28969
28970         * class.h, loader.c: added mono_field_from_token().
28971         * verify.c: first cut of type checking code.
28972
28973 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
28974
28975         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
28976
28977 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
28978
28979         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
28980         (fix bug #27782)
28981         (mono_marshal_get_remoting_invoke): impl.
28982         (mono_delegate_begin_invoke): impl.
28983         (mono_mb_emit_save_args): impl.
28984         (mono_delegate_end_invoke): impl.
28985         (mono_marshal_get_delegate_begin_invoke):
28986         (mono_marshal_get_delegate_end_invoke):
28987         (mono_marshal_get_delegate_invoke): generate a special name for
28988         those methods (including the signature) and associate them whith
28989         the delegate class. 
28990
28991 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
28992
28993         * reflection.[ch]: 
28994         (mono_reflection_type_from_name): now it has a MonoImage parameter
28995         which is used as the default image to search the type in. If the image
28996         is NULL or getting the type from it fails, it defaults to corlib.
28997
28998         * icall.c: changed 1 call to mono_reflection_type_from_name to match
28999         new parameter.
29000
29001 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29002
29003         * reflection.c: update the parameter table index.
29004
29005 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29006
29007         * domain.c: don't include the mark byte in the string hash.
29008
29009 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29010
29011         * icall.cs: icall for Type.GetTypeCode ().
29012         * verify: a couple of fixes and disabled local initialization checks.
29013
29014 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
29015
29016         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
29017
29018         * debug-helpers.c (mono_method_full_name): print the type of the
29019         runtime wrapper
29020
29021         * metadata.c (mono_signature_hash): a hash function for signatures
29022         (mono_signature_hash): better hash algorithm
29023
29024         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
29025
29026         * debug-helpers.c (mono_method_full_name): this can now generate
29027         method names with signatures
29028
29029         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
29030         method dont have this pointers.
29031
29032 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29033
29034         * reflection.c: fixup typebuilder tokens.
29035         * image.c: fix buglet.
29036         * marshal.h: remove whitespace.
29037         * metadata.h, metadata.c: reinstate code that was removed.
29038         * verify.c: handle catch directives and fix another couple of bugs.
29039
29040 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
29041
29042         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
29043         (mono_marshal_get_native_wrapper): make it comp. with the old code
29044         (mono_marshal_get_native_wrapper): support boolean
29045         (mono_marshal_get_managed_wrapper): support more types
29046
29047 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
29048
29049         * class.c (class_compute_field_layout): compute class->blittable attribute.
29050
29051 2002-07-09  Dick Porter  <dick@ximian.com>
29052
29053         * threads.c: Make the thread cleaning up cope with threads that
29054         call ExitThread()
29055
29056 2002-07-08  Radek Doulik  <rodo@ximian.com>
29057
29058         * reflection.c (method_encode_code): use non-translated values to
29059         compute finally_start, this fixes exception handling on ppc, yay!
29060
29061         * decimal.h (struct signscale): fix endianess
29062
29063 2002-07-07  Radek Doulik  <rodo@ximian.com>
29064
29065         * reflection.c: swap box_val and not val
29066
29067 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29068
29069         * reflection.c, reflection.h: handle full assembly info in type name.
29070         Handle Type arguments when loading custom attributes.
29071         * icall.c: updated to use new mono_reflection_type_from_name () method.
29072
29073 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29074
29075         * loader.c:
29076         (method_from_memberref): also print assembly name when method not found.
29077
29078 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29079
29080         * icall.c:
29081         (ves_icall_TypeGetProperties): fixed bug #27473. 
29082
29083 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29084
29085         * reflection.c: display image name and token when cannot find the
29086         .ctor for an attribute.
29087
29088 2002-07-05  Martin Baulig  <martin@gnome.org>
29089
29090         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29091
29092 2002-07-04  Dick Porter  <dick@ximian.com>
29093
29094         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
29095         compile on mingw.  This will cause mingw builds to not wait for
29096         subthreads to terminate after the main thread does.  I've lodged a
29097         bug with the mingw developers for them to wrap OpenThread().
29098
29099 2002-07-03  Dick Porter  <dick@ximian.com>
29100
29101         * threads.c: Store thread IDs instead of handles, because
29102         GetCurrentThread() returns a pseudohandle and therefore stores
29103         useless values.  mono_thread_cleanup() continues checking the
29104         array of threads until it is empty, to cope with subthreads
29105         spawning new threads after the main thread has finished.
29106
29107         * profiler.h:
29108         * profiler.c:
29109         * profiler-private.h: Pass the thread ID to thread profiler
29110         functions, instead of a handle
29111
29112 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29113
29114         * verify.c: fixes to make it more usable.
29115         * pedump.c: added --verify code to verify IL code in an assembly.
29116
29117 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29118
29119         * reflection.c: turn errors into warnings to allow compiling corlib.
29120
29121 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29122
29123         * reflection.c: add special cases to compile corlib.
29124
29125 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29126
29127         * reflection.c: handle properties with only a set method.
29128
29129 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29130
29131         * opcodes.h: add enum with opcodes in opval order.
29132
29133 2002-07-01  Dick Porter  <dick@ximian.com>
29134         
29135         * object.h:
29136         * object.c (mono_runtime_run_main): Removed unneeded argument
29137
29138 2002-06-28  Martin Baulig  <martin@gnome.org>
29139
29140         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29141
29142 2002-06-27  Dick Porter  <dick@ximian.com>
29143
29144         * threads.c: Store the handle in both the parent thread and in the
29145         subthread, to minimise the time between starting a new thread and
29146         storing its ID.
29147
29148 2002-06-26  Dick Porter  <dick@ximian.com>
29149
29150         * appdomain.c (mono_runtime_cleanup): Close the socket library
29151         after all the threads have finished, not before
29152
29153 2002-06-26  Martin Baulig  <martin@gnome.org>
29154
29155         * debug-symfile.c (mono_debug_find_source_location): Added
29156         `guint32 *line_number' argument.  If it's not NULL, store the line number
29157         there and return the file name without the line number.
29158
29159 2002-06-25  Dick Porter  <dick@ximian.com>
29160
29161         * icall.c:
29162         * process.h:
29163         * process.c: Process forking and other support functions
29164
29165 2002-06-25  Dick Porter  <dick@ximian.com>
29166
29167         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
29168         things dont happen when the image is closed.
29169         (mono_image_lookup_resource): Walk the resource section looking
29170         for a particular entry
29171
29172         * cil-coff.h: PE resource section decoding
29173
29174 2002-06-25  Dick Porter  <dick@ximian.com>
29175         
29176         * assembly.h:
29177         * assembly.c: 
29178         (mono_assembly_foreach): Accessor functions to walk the list of
29179         loaded assemblies
29180         (mono_assembly_set_main):
29181         (mono_assembly_get_main): Process methods need to know which
29182         assembly is the "main" one
29183
29184         * object.c (mono_runtime_run_main): Record the main assembly
29185
29186         * debug-helpers.c: Fix typo
29187
29188 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
29189
29190         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
29191         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
29192
29193 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29194
29195         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
29196
29197 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
29198
29199         * image.c (do_mono_image_open): Initialize reference count,
29200         otherwise we leak the MonoImage.
29201
29202 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29203
29204         * reflection.c: small tweak to handle self-hosting.
29205
29206 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29207
29208         * reflection.c: fix type name parse code.
29209
29210 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29211
29212         * reflection.c: break out of the loop.
29213         * image.c: special case corlib.
29214
29215 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29216
29217         * reflection.c: add all the custom attrs at the end to ensure the
29218         ctors have been properly initialized when the attributes are defined
29219         in the current assembly.
29220
29221 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29222
29223         * reflection.c: handle correctly multiple-nested types.
29224
29225 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
29226
29227         * row-indexes.h: fix typos.
29228         * reflection.c: adjust for typos and fix method_def_or_ref
29229         encoding in MethodImpl table.
29230
29231 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29232
29233         * reflection.c: fix entry point patching (thanks Serge!).
29234
29235 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
29236
29237         * verify.c: add check for System.Exception
29238
29239 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29240
29241         * image.c, class.c: minifix for code just c&p'ed.
29242         * reflection.c: warning fix.
29243         * object.h, loader.h, domain.c: load also StringBuilder.
29244
29245 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29246
29247         * marshal.h, marshal.c: some support code to handle complex marshaling.
29248
29249 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29250
29251         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29252         Better signatures with vtable error dump.
29253
29254 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29255
29256         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29257
29258 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29259
29260         * icall.c (ves_icall_Type_GetField): impl.
29261
29262 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29263
29264         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29265         to retrieve a marshal description blob for a field or param.
29266
29267 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29268
29269         * reflection.h, reflection.c: change order of nested type emission
29270         to avoid table corruption. The NestedTypes table is sorted.
29271         * icall.c: change order of GetConstructor results to workaround mcs bug.
29272
29273 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29274
29275         * reflection.h, reflection.c: handle field and param marshal
29276         information.
29277
29278 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29279
29280         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29281
29282 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29283
29284         * reflection.c: fix call convention.
29285
29286 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29287
29288         * reflection.h, reflection.c: mono_image_get_memberref_token()
29289         takes a type instead of a class, now. Added
29290         mono_image_get_array_token() to create tokens for the special
29291         multi-dim array methods.
29292
29293 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29294
29295         * assembly.c: handle modules (no assembly table). Split
29296         loading references in its own function.
29297         * class.c: handle moduleref resolution scope.
29298         * image.c, image.h: cache module name in image.
29299
29300 2002-06-07  Martin Baulig  <martin@gnome.org>
29301
29302         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29303         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29304
29305 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29306
29307         * icall.c: more signature fixes that used uint instead of int.
29308
29309 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29310
29311         * reflection.c: fixed signature of field refs.
29312
29313 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29314
29315         * class.c, reflection.c: handle typerefs of nested types
29316         (both on read and when writing files).
29317
29318 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29319
29320         * icall.c: fix method signatures that tried to workaround the previous
29321         typo, d'oh!
29322
29323 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29324
29325         * debug-helpers.c: fix typo.
29326
29327 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29328
29329         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29330         rewrote the PE/COFF writing code (our programs are understood by the
29331         ms runtime, now).
29332
29333 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29334
29335         * gc.c, gc.h, icall.c: weakreference support.
29336
29337 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29338
29339         * Makefile.am, mono-config.c: use $(sysconfdir).
29340
29341 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29342
29343         * icall.c: changed default precision of Double.ToString() to 15.
29344         Fixed memory leak. Unified with Single.ToString.
29345
29346 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29347
29348         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29349
29350 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29351
29352         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29353         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29354         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29355         and myself.
29356
29357 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29358
29359         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29360
29361 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29362
29363         * reflection.c, socket-io.c: more compilation fixes.
29364
29365 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29366
29367         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29368         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29369         unicode.c: warning and compiler compatibility fixes.
29370
29371 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29372
29373         * class.h, metadata.c: fixed warnings/compilation errors.
29374
29375 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29376
29377         * Makefile.am, mono-config.c, mono-config.h: configuration file
29378         support routines.
29379         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29380         config file. Export methods to insert and lookup mappings.
29381
29382 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29383
29384         * reflection.c: handle types and boxed objects in custom attr
29385         constructors.
29386
29387 2002-05-30  Martin Baulig  <martin@gnome.org>
29388
29389         * debug-symfile.c
29390         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29391
29392 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29393
29394         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29395         to lookup the implmap row for a P/Invoke method.
29396         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29397         P/Invoke method from the runtime on an as needed basis.
29398
29399 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29400
29401         * metadata.c (mono_metadata_parse_signature): impl.
29402
29403 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29404
29405         * class.c: handle .pack directive.
29406
29407 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29408
29409         * object.c: initialize static fields with RVA data.
29410
29411 2002-05-25  Martin Baulig  <martin@gnome.org>
29412
29413         * debug-symfile.c
29414         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29415
29416 2002-05-24  Martin Baulig  <martin@gnome.org>
29417
29418         * debug-symfile.c
29419         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29420         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29421         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29422
29423 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29424
29425         * object.c: special case string ctros in invoke.
29426         * gc.c: silly whitespace changes.
29427
29428 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29429
29430         * threadpool.[ch]: impl. a threadpool that can
29431         be used by mint and mono.
29432
29433 2002-05-22  Martin Baulig  <martin@gnome.org>
29434
29435         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29436         The first argument is now a `MonoReflectionModuleBuilder *', the return
29437         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29438         `methods' field to get the method builder.  The `token' argument is the
29439         unfixed token.
29440
29441         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29442         invalid characters instead of g_assert_not_reached()ing.  This seems
29443         to be the behaviour of mscorlib.
29444
29445 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29446
29447         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29448         Hestilow to fix bug #25104
29449
29450 2002-05-21  Martin Baulig  <martin@gnome.org>
29451
29452         * debug-symfile.c (mono_debug_find_source_location): New function.
29453         Looks up an IL offset in the line number table and returns the source
29454         location as a string.
29455
29456 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29457
29458         * icall.c:
29459         (mono_double_ToStringImpl): changed %f by %g until we have something
29460         better.
29461
29462 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29463
29464         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29465         parameters first in C#.
29466
29467 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29468
29469         * icall.c, reflection.h: added icall to get info about an event.
29470
29471 2002-05-20  Radek Doulik  <rodo@ximian.com>
29472
29473         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29474         endian
29475         (mono_value_box): don't use memcpy for small sizes on
29476         architectures with unaligned access
29477
29478 2002-05-20  Martin Baulig  <martin@gnome.org>
29479
29480         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29481         if `tb->parent == NULL'.
29482         (mono_reflection_create_internal_class): New function.  This is
29483         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29484         for enum types.
29485
29486         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29487         New interncall.
29488
29489 2002-05-19  Martin Baulig  <martin@gnome.org>
29490
29491         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29492         argument to get the length, don't default to the array length.
29493
29494 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29495
29496         * assembly.c (mono_assembly_setrootdir): New function used to
29497         override the MONO_ASSEMBLIES directory.
29498
29499 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29500
29501         * icall.c: ValueType_GetHashCode() initialize local var.
29502
29503 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29504
29505         * reflection.c: sort custom attributes table.
29506
29507 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29508
29509         * reflection.c: support named args in custom attributes (write support).
29510
29511 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29512
29513         * reflection.c: fix finally position calculation.
29514
29515 2002-05-15  Radek Doulik  <rodo@ximian.com>
29516
29517         * reflection.c: fixed endianess at many places
29518
29519         * icall.c (ves_icall_InitializeArray): comment out debug msg
29520
29521 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29522
29523         * object.c (mono_unhandled_exception): new function to handle
29524         unhandled exceptions.
29525         (mono_unhandled_exception): call the UnhandledException event.
29526         (mono_runtime_delegate_invoke): impl.
29527
29528 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29529
29530         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29531         returns the RVA, not the direct pointer to the data. Handle the case
29532         when the class size is fixed.
29533
29534 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29535
29536         * reflection.c: fix some endianess issues.
29537
29538 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29539
29540         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29541
29542         * threads.c (mono_thread_init): added a callback which is invoked
29543         at thread start.
29544
29545 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29546         
29547         * icall.c: make GetHashCode return non-negative values.
29548
29549 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29550
29551         * object.c, icall.c, gc.c: revert to address-based hashcode.
29552
29553 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29554
29555         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29556
29557 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29558
29559         * icall.c, class.c: special case <Module>.
29560
29561 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29562
29563         * icall.c: fix bug in GetNow().
29564
29565 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
29566
29567         * object.c (mono_runtime_class_init): make sure that we call all
29568         static class constructors.
29569
29570 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29571
29572         * reflection.c: sort methodsemantics table.
29573
29574 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29575
29576         * reflection.h, reflection.c: honour init locals setting.
29577
29578 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
29579
29580         * icall.c: copied Double ToStringImpl for Single ToStringImpl
29581
29582 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29583
29584         * reflection.c: support ContructorBuilders in attribute blob creation.
29585
29586 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29587
29588         * reflection.c: some changes to build a binary that can be run
29589         directly in windows.
29590
29591 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29592
29593         * loader.c: print a big message when an icall can't be found.
29594
29595 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29596
29597         * string-icalls.c: fix bug 24248.
29598
29599 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29600
29601         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
29602         icall.c, reflection.h: separate assembly loading by pathname and by
29603         assembly name. Use the MONO_PATH env var to search for assemblies.
29604
29605 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29606
29607         * assembly.c, image.h: add some support for assemblies
29608         with multiple modules.
29609         * class.c, class.h: export mono_class_from_typeref().
29610         * loader.c: remove duplicated code and use mono_class_from_typeref(),
29611         instead.
29612
29613 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29614
29615         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
29616         documentation says (the ECMA one is correct).
29617
29618 2002-05-02  Dick Porter  <dick@ximian.com>
29619
29620         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
29621         Don't name the synchronisation mutex.
29622
29623 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
29624
29625         * rand.c
29626         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
29627         Make the prototypes match.
29628         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
29629         Same.
29630
29631         * icall.c
29632         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
29633         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
29634         all systems have tm.tm_zone, so use strftime() with %Z to print
29635         the timezone abreviation into a temp string.
29636
29637         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
29638         rather than mono_array_addr() on a MonoString on Big Endian
29639         machines.
29640
29641 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
29642
29643         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
29644         fix bug 24041
29645
29646 2002-04-30  Dick Porter  <dick@ximian.com>
29647
29648         * socket-io.c: Cope with SOCKET being an integer rather than a
29649         pointer now.
29650
29651         * threads.c: Added Thread_free_internal, to deal with thread
29652         handle cleanup.  Moved calls to handle_store() and handle_remove()
29653         to start_wrapper(), so each can only be called once.  Allocate
29654         synchronisation blocks with GC_malloc(), and use GC finalisation
29655         to close the handles.
29656
29657         * icall.c: added System.Threading.Thread::Thread_free_internal
29658
29659 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29660
29661         * icall.c: support Environment.Exit, CommandLineArgs().
29662
29663 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29664
29665         * object.c, object.h: added mono_runtime_run_main () and
29666         mono_runtime_get_main_args () for use in System.Environment.
29667
29668 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29669
29670         * gc.c: fix thinko, enable actual finalization since the jit is now
29671         fixed.
29672
29673 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29674
29675         * gc.c, object.c: take into account that an object may be offset wrt the address
29676         returned by GC_malloc().
29677
29678 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29679
29680         * image.c: handle files without entries in the assembly table (modules).
29681
29682 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
29683
29684         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
29685         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
29686         allowed to be null when it's System.Object class setup.
29687
29688 2002-04-27  Martin Baulig  <martin@gnome.org>
29689
29690         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
29691         if `tb->parent == NULL' rather than crashing.
29692
29693 2002-04-28  Nick Drochak  <ndrochak@gol.com>
29694
29695         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
29696         calling acos() where asin() should have been called.
29697
29698 2002-04-26  Martin Baulig  <martin@gnome.org>
29699
29700         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
29701         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
29702         there's a subdirectory called `System', but we don't want to read that
29703         subdirectory as an assembly.
29704
29705 2002-04-25  Martin Baulig  <martin@gnome.org>
29706
29707         * debug-symfile.c: Reflect latest MonoString changes.
29708
29709 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29710
29711         * rand.c, rand.h: instance method icalls need to have an explicit
29712         this pointer as first argument in the C implementation.
29713
29714 2002-04-25  Nick Drochak <ndrochak@gol.com>
29715
29716         * icall.c: Fix typo in map for GetNonZeroBytes
29717
29718 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29719
29720         * string-icalls.c : String does now passes unit tests without any 
29721         errors, the following changes has been made:
29722         
29723         Implemented replace methods.
29724         Renaming of methods to (try) follow the standard.
29725         Fixed compare ordinal
29726         Made all memory allocated directly to function instead of via icall function.
29727         Small performance fix in is_in_array function
29728                         
29729  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
29730
29731         c (mono_string_Internal_ctor_charp_int_int):
29732         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
29733         sindex < 0, throw ArgumentOutOfRangeException instead of
29734         ArgumentNullException.
29735
29736         Added new check for length == 0, however
29737         I need to make it return String.Empty from the C code.
29738         
29739         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
29740         that calculate the length for us here.
29741         
29742         (mono_string_Internal_ctor_sbytep_int_int): Replaced
29743         mono_string_new_utf16 with mono_string_new, since value is utf8.
29744
29745 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29746
29747         * object.c: register the object for finalization if needed.
29748         Allocate one more char in the string for the terminating 0 char.
29749
29750 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29751
29752         * class.c, class.h, image.c: check if a type implemenst a destructor.
29753         Use the proper key for array class lookups.
29754         * icall.c: register the icalls in the System.GC class.
29755         * gc.c, gc.h: GC-related functions and icalls.
29756
29757 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29758
29759         * icall.c:
29760         * socket-io.c:
29761         * unicode.c: free some strings gotten from mono_string_to_utf8 and
29762         changed a couple of free () by g_free ().
29763
29764         * decimal.c: one-liner in the comments for decimal2string ().
29765
29766 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29767
29768         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
29769
29770 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29771
29772         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
29773         * object.c (mono_runtime_invoke_array) : handle null in params
29774
29775 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29776
29777         * string-icalls.c: fixed bug in split (one off bug)
29778
29779 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29780
29781         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
29782         * icalls.c: added String::Equals as internal method
29783
29784 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29785
29786         * threads.c: fixed bug in the double interlocked functions
29787
29788 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
29789
29790         * threads.c: implemented all of the new interlocked icalls.
29791         * string-icalls.c: fix a bug in insert.
29792         * icalls.c: added the icalls for interlocked, removed old string functions.
29793         
29794 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29795
29796         * loader.c: fix off-by-one error when reading argument names.
29797
29798 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29799
29800         * profiler.c: win32 counter implementation (untested).
29801         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
29802         (the latter needs testing and more complete impl. from win32 folks).
29803
29804 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
29805
29806         * object.c: mono_array_new_full workaround mono_array_class_get
29807         problem.
29808
29809 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29810
29811         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
29812         * object.h (mono_string_chars): Changed casting type.
29813
29814 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29815
29816         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
29817                            method signatures to use gunichar2 instead of gint16.
29818
29819 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
29820
29821         * object.h, object.c: domain-specific versions of mono_object_new and
29822         mono_array_new.
29823
29824 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
29825
29826         * object.c: changed String layout
29827
29828         * string-icalls.c (mono_string_Internal_ctor_chara): added
29829         internal string constructors.
29830
29831 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
29832
29833         * threads.c: pass 'this' to the thread start routine.
29834
29835 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29836
29837         * string-icalls.c: fix IndexOf and LastIndexOf. Now
29838         InternalCompareStr don't call twice mono_string_cmp_char for the last
29839         character. Improved performance in mono_string_cmp_char.
29840
29841 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29842
29843         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
29844         code into its own library: libmonoruntime.
29845
29846 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
29847
29848         * object.h, object.c: changed array format so that szarrays do not
29849         require a bounds structure.
29850         * icall.c, appdomain.c: support for new szarray format.
29851
29852 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29853
29854         * metadata.c: compare also the retuns type when comparing signatures:
29855         we didn't do this as an optimization since really overloaded methods
29856         must differ also in the arguments, but this doesn't work with
29857         low-level IL code (or when using explicit conversion operators: see
29858         bug#23498 for an example).
29859
29860 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29861
29862         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
29863
29864 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29865
29866         * icall.c: make MonoType::GetElementType its own icall.
29867
29868 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29869
29870         * icall.c: remove MonoMethod_get_Name().
29871         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
29872         object.
29873
29874 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29875
29876         * string-icalls.c: optimized a few methods.
29877
29878 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29879
29880         * icall.c: added all new string internal calls
29881         * string-icalls.c: added, new string internal call implementation.
29882         * object.c: added mono_string_new_size for allocating a string a size
29883
29884 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
29885
29886         * object.c (mono_object_isinst): use the same code as in the
29887         optimized x86 version.
29888
29889 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29890
29891         * profiler.c: TSC-based timer code (faster and more accurate).
29892         Not hooked up in configure, yet (set USE_X86TSC to 1).
29893
29894 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
29895
29896         * profiler.c, profiler.h: track time spent compiling methods.
29897         * threads.c: track thread creation/destruction.
29898
29899 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
29900
29901         * profiler.c, profiler.h, profiler-private.h: profiling interface
29902         and sample implementation. Moved here so that it can be used also by
29903         the jit.
29904
29905 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
29906
29907         * reflection.c, reflection.h: keep types and other handles separate in
29908         the hash tables for referred tokens. Add guid for modules.
29909
29910 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29911
29912         * assembly.c: fix bugs found with valgrind.
29913         * metadata.h, metadata.c: added mono_metadata_guid_heap().
29914
29915 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
29916
29917         * threads: added icall support for getting current domain for
29918                    the thread.
29919  
29920 2002-04-13  Martin Baulig  <martin@gnome.org>
29921
29922         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
29923         (MonoDebugVarInfo): Added `index' field for register based addresses.
29924         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
29925         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
29926         `MonoDebugVarInfo *params' and `guint32 this_offset' with
29927         `MonoDebugVarInfo *this_var'.
29928
29929         * debug-symfile.c (relocate_variable): New static function to write
29930         a location description for a local variable or method parameter.
29931
29932 2002-04-12  Martin Baulig  <martin@gnome.org>
29933
29934         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
29935         stack offset and begin/end scope address of a local variable.
29936         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
29937         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
29938         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
29939
29940         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
29941         Added new relocation types for start/end scope of a local variable.
29942
29943 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29944
29945         * object.h: add mono_object_domain() macro.
29946         * reflection.c: handle typespecs.
29947         * icall.c: MonoMethod::get_Name() implementation.
29948
29949 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29950
29951         * icall.c: String::GetHashCode() icall implementation.
29952
29953 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29954
29955         * icall.c: String::IndexOfAny icall.
29956         * object.c, object.h: make array->max_length more useful.
29957         Intrduced mono_object_class() and mono_string_length() macros.
29958
29959 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29960
29961         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
29962         instead of g_unichar_isdigit.
29963
29964 2002-04-11  Nick Drochak  <ndrochak@gol.com>
29965
29966         * icall.c: Implement a simple Double.ToString().
29967
29968 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29969
29970         * appdomain.h: only io-layer.h is supposed to be included.
29971         * icall.c: explicitly import environ. Fix warning.
29972
29973 2002-04-10  Nick Drochak  <ndrochak@gol.com>
29974
29975         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
29976                 return true even if it's not Daylight Savings time.
29977                 Only return false for the case where the function isn't
29978                 implemented for a plaform (read Windows).
29979
29980 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29981
29982         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
29983         data with a mutex.
29984
29985 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
29986
29987         * mempool.c (mono_mempool_alloc): only use g_malloc when
29988         absolutely necessary.
29989
29990 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
29991
29992         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
29993
29994         * class.c (mono_class_vtable): use domain mempool to allocate vtable
29995         (mono_class_proxy_vtable): use domain mempool
29996
29997 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29998
29999         * appdomain.h, appdomain.c: split initialization that requires the
30000         execution engine support into mono_runtime_init().
30001
30002 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30003
30004         * class.c (mono_class_init): don't include vtable inside MonoClass
30005         to save some memory, gather some statistics.
30006         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
30007
30008 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30009
30010         * icall.c: internalcall implementation for ValueType.Equals().
30011
30012 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
30013
30014         * object.c (mono_message_init): moved 
30015         (mono_runtime_exec_main): new arch. independent impl.
30016         (mono_runtime_invoke_array): new method - like
30017         mono_runtime_invoke, but you can pass an array of objects.
30018         (mono_remoting_invoke): new arch. independent impl.
30019         (mono_message_invoke): new arch. independent impl.
30020         (mono_runtime_class_init): new arch. independent impl.
30021         (mono_runtime_object_init): new arch. independent impl.
30022
30023 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30024
30025         * metadata.c, object.c, reflection.c: documented the exported
30026         functions.
30027
30028 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
30029
30030         * icall.c: simpler code to pass the assembly builder data to corlib.
30031         Implement GetNestedTypes() internalcall.
30032
30033 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30034
30035         * class.c: warn if a type can't be loaded.
30036
30037 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
30038
30039         * image.h: typedef MonoImageOpenStatus
30040         * types.h: removed unused file
30041         
30042 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
30043
30044         * icall.c: Enum_ToObject accepts enum value arguments.
30045
30046 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30047
30048         * class.c: move initialization of properties, events and nested
30049         classes, so that they happen for interfaces, too.
30050
30051 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30052
30053         * icall.c: cleanup some ugly casts in Array_SetValue*.
30054
30055 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30056
30057         * icall.c: the values array fro enums is of the correct type, now.
30058         Implement (correctly) getFullName instead of assQualifiedName for
30059         MonoType.
30060         * reflection.h, reflection.c: added mono_type_get_name ().
30061
30062 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30063
30064         * assembly.c, image.h: for each MonoImage, record from wich assembly
30065         it was loaded.
30066         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
30067         Make Type.Assembly work.
30068
30069 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
30070
30071         * debug-symfile.h: use char* instead of gpointer to avoid
30072         unnecessary casts.
30073
30074         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
30075
30076         * icall.c (ves_icall_InternalExecute): impl. FielSetter
30077         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
30078
30079 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
30080
30081         * icall.c (mono_message_init): impl. (code cleanup)
30082         (ves_icall_InternalExecute): impl. FieldGetter
30083
30084         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
30085         defined we call all (non-static)methods through the vtable. 
30086
30087 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
30088
30089         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
30090         finalizer even though the memory is still referenced (and the chunk of
30091         memory is not freed).
30092
30093 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30094
30095         * assembly.c: fix brokeness.
30096
30097 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
30098
30099         * class.c: kill some warnings. Check explicit interface method
30100         implementation also without considering the namespace.
30101         Load also literal strings in static class data.
30102
30103 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
30104
30105         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
30106         (default_assembly_name_resolver): Make the resolver take the
30107         "base" directory where the assembly was originally defined, so we
30108         can load DLLs that are in the same directory as the assembly that
30109         is being referenced.
30110
30111 2002-03-28  Dick Porter  <dick@ximian.com>
30112
30113         * file-io.h: 
30114         * file-io.c:
30115         * socket-io.c: 
30116         * unicode.h: 
30117         * unicode.c: Warning cleanups
30118
30119 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
30120
30121         * object.h, reflection.h: use the correct type instead of MonoObject.
30122
30123 2002-03-28  Martin Baulig  <martin@gnome.org>
30124
30125         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
30126         (mono_debug_update_symbol_file): Initialize classes if necessary.
30127
30128 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30129
30130         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
30131         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
30132
30133 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
30134
30135         * assembly.h: fix function prototype.
30136         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
30137         * mono-endian.h: use const cast.
30138
30139 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30140
30141         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
30142
30143 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30144
30145         * loader.c: don't assert when a typeref can't be loaded, give
30146         a chance to the runtime to trow an exception instead.
30147         * loader.h: fix warning.
30148
30149 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30150
30151         * class.c (mono_class_proxy_vtable): added proxy support
30152
30153 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
30154
30155         * icall.c: removed last of PAL calls, added System.Environment
30156         * file-io.h, file-io.c: MonoIO implementation
30157         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
30158
30159 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30160
30161         * appdomain.c: do not use the byte marker in ldstr table lookup.
30162         * debug-helpers.c: allow two ':' to separate class and method name.
30163         * object.c: allocate arrays bounds with the GC, too.
30164         * verify: add a few more checks.
30165
30166 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
30167
30168         * reflection.c: output also literal strings. Allocate parameter data
30169         with GC_malloc() (thanks, Martin, for catching this!).
30170
30171 2002-03-26  Martin Baulig  <martin@gnome.org>
30172
30173         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
30174         include the `this' offset in the `param_offsets'.
30175
30176 2002-03-25  Martin Baulig  <martin@gnome.org>
30177
30178         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
30179         mono_debug_get_class() function to get the classes. Added new
30180         relocation types for arrays and strings.
30181         (mono_debug_get_class): New static function to search in all
30182         referenced assemblies for a metadata token.
30183
30184         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
30185
30186 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30187
30188         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
30189         hold gc-allocated objects. Make the string heap a stream like the
30190         others. Removed duplicated code when writing stream info.
30191         Added asserts to catch possible buffer overflows. Set the sorted map
30192         for tables that need sorting. Added some documentation.
30193
30194 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
30195
30196         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
30197         for interned strings and vtables.
30198
30199 2002-03-24  Martin Baulig  <martin@gnome.org>
30200
30201         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
30202         it in the array since it was created with g_slist_prepend().
30203
30204 2002-03-24  Martin Baulig  <martin@gnome.org>
30205
30206         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
30207         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
30208         (mono_debug_method_from_token): Renamed to
30209         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
30210         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
30211
30212         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
30213         relocation types.
30214
30215         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
30216
30217 2002-03-24  Martin Baulig  <martin@gnome.org>
30218
30219         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
30220         (mono_debug_method_from_token): New func.
30221
30222         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
30223         New interncall, calls mono_debug_local_type_from_signature().
30224         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
30225         calls mono_debug_method_from_token().
30226
30227 2002-03-23  Martin Baulig  <martin@gnome.org>
30228
30229         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
30230         specifies the number of bytes to be converted, not the array size.
30231         Return the number of chars, not the number of bytes.
30232         (ves_icall_iconv_get_chars): The `byteCount' argument
30233         specifies the number of bytes to be converted, not the array size.
30234
30235 2002-03-23  Martin Baulig  <martin@gnome.org>
30236
30237         * reflection.h (MonoReflectionSigHelper): New type.
30238
30239         * reflection.c (mono_reflection_sighelper_get_signature_local),
30240         (mono_reflection_sighelper_get_signature_local): New functions.
30241
30242         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
30243         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
30244         interncalls.
30245
30246 2002-03-23  Martin Baulig  <martin@gnome.org>
30247
30248         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
30249         is_writeable is set.
30250         (mono_raw_buffer_update): New function to write the modified map
30251         back to disk.
30252
30253         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30254
30255         * debug-symfile.c (mono_debug_update_symbol_file): Call
30256         mono_raw_buffer_update() when done writing.
30257
30258 2002-03-23  Martin Baulig  <martin@gnome.org>
30259
30260         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30261
30262         * debug-symfile.c: Added support for arguments and local variables.
30263
30264 2002-03-23  Dick Porter  <dick@ximian.com>
30265
30266         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30267         protected by ifdefs, hence breaking the w32 build.
30268
30269 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30270
30271         * object.c: implement is_interned() the right way.
30272
30273 2002-03-21  Martin Baulig  <martin@gnome.org>
30274
30275         * debug-symfile.[ch]: New files to handle debugging information
30276         files. There's also support to dynamically update these symbol
30277         files to include machine dependent information.
30278
30279 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30280
30281         * threads.c (mono_thread_create): new function to create thread
30282         from C
30283
30284 2002-03-20  Martin Baulig  <martin@gnome.org>
30285
30286         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30287         method is a constructor.
30288         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30289         points to ves_icall_InternalInvoke().
30290
30291 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30292
30293         * file-io.c: Flush shouldn't throw exceptions.
30294
30295 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30296
30297         * file-io.c: FileStream flush support; FileSetLength now
30298         restores file pointer.
30299
30300 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30301
30302         * class.c: set image for pointer classes.
30303
30304 2002/03/19  Nick Drochak <ndrochak@gol.com>
30305
30306         * sysmath.c: Forgot one.
30307
30308 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30309
30310         * sysmath.c: Avoid redefining existing names.
30311
30312 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30313
30314         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30315         handled by runtime as icall rather than dllimport from libm.so
30316         * file-io.c, file-io.h: fixed handle argument type.
30317
30318 2002-03-18  Dick Porter  <dick@ximian.com>
30319
30320         * reflection.c (mono_image_get_type_info): rename interface to
30321         iface, because of "#define interface struct" on windows.
30322
30323 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30324
30325         * class.c, class.h: rename and export mono_ptr_class_get().
30326         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30327         * reflection.c, reflection.h, icall.c: better/saner type name
30328         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30329         method signatures.
30330
30331 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30332
30333         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30334
30335         * icall.c (ves_icall_InternalInvoke): impl.
30336
30337 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30338
30339         * reflection.c: output the interface map table, too.
30340
30341 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30342
30343         * class.c (class_compute_field_layout): separate computation of 
30344         static field layout
30345
30346 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30347
30348         * icall.c: added System.Buffer support.
30349         * file-io.c: moved file icalls from PAL to FileStream.
30350
30351 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30352
30353         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30354
30355 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30356
30357         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30358
30359 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30360
30361         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30362
30363 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30364
30365         * debug-helpers.{c,h}: moved here from monograph some useful functions
30366         to locate a method by name/signature in a class or image. Included
30367         also a small and flexible IL disassembler.
30368
30369 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30370
30371         * reflection.c: fixup tokens in methods with small header size, too.
30372
30373 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30374
30375         * object.c (mono_string_to_utf8): remove assert(!error), instead
30376         print a warning. 
30377
30378 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30379
30380         * icall.c: update to the new mono_Array_class_get interface.
30381
30382 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30383
30384         * appdomain.c, object.c: Boehm-GC enable.
30385         * icall.c: make get_data_chunk() support split data requests.
30386         Ensure a class is initialized in more cases. Return only the first
30387         property found in GetProperties() or the compiler gets confused. 
30388         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30389         * reflection.h, reflection.c: add fixup mechanism for field and method
30390         tokens. Initialize assembly->typeref in a single place. Output
30391         properties after events. Support custom attributes for events, too.
30392         Typo fix for paramter custom attrs.
30393
30394 2002-03-07  Martin Baulig  <martin@gnome.org>
30395
30396         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30397
30398 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30399
30400         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30401
30402 2002-03-06  Martin Baulig  <martin@gnome.org>
30403
30404         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30405         non-zero lower bounds. See testcases #F10-#F13.
30406
30407 2002-03-05  Martin Baulig  <martin@gnome.org>
30408
30409         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30410
30411         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30412         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30413         here.
30414         (ves_icall_System_Array_SetValue): Likewise.
30415         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30416         as argument and does the actual work. This function is used when copying a
30417         multi-dimensional array.
30418         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30419         now do all the widening conversions of value types.
30420         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30421
30422 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30423
30424         * class.c: remove some magic numbers and use the smbolic names,
30425         instead. Added init_events() to load event info at class init time.
30426         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30427         and mono_metadata_methods_from_event().
30428         * reflection.h, reflection.c: added support for writing out the evnets
30429         related information.
30430
30431 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30432
30433         * reflection.h, icall.c: use a different method (GetInterfaces)
30434         to gather interface info and add isbyref, isprimitive and
30435         ispointer to the ves_icall_get_type_info() return value.
30436
30437 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30438
30439         * class.h: stared adding support for events.
30440         * icall.c: split find_members implementation. Added debug icall to get
30441         the address of an object.
30442         * reflection.c: handle TypeBuilders in mono_type_get_object().
30443
30444 2002-03-01  Martin Baulig  <martin@gnome.org>
30445
30446         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30447         ArgumentOutOfRangeException(), not an ArgumentException().
30448         (ves_icall_System_Array_GetLowerBound): Likewise.
30449         (ves_icall_System_Array_GetValue): Improved argument checking.
30450         (ves_icall_System_Array_SetValue): Improved argument checking.
30451
30452 2002-03-01  Martin Baulig  <martin@gnome.org>
30453
30454         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30455         called with invalid arguments rather than just dying with g_assert().
30456         (ves_icall_System_Array_SetValue): Likewise.
30457         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30458         raise a NotImplementedException instead.
30459         (ves_icall_System_Array_GetLength): Added argument checking.
30460         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30461
30462 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30463
30464         * object.h (mono_assert): new macros mono_assert and
30465         mono_assert_not_reached
30466
30467 2002-02-28  Martin Baulig  <martin@gnome.org>
30468
30469         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30470         and "System::String::IsInterned" to "System::String::_IsInterned".
30471
30472 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30473
30474         * icall.c: remove hacks for typebuilder. Added icall to create a
30475         modified type from a tybebuilder.
30476         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30477         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30478         to create a backing MonoClass for a TypeBuilder.
30479
30480 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30481
30482         * class.c, class.h: more refactoring of class init.
30483         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30484
30485 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30486
30487         * marshal.c, marshal.h: start of marshaling interface.
30488
30489 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30490
30491         * icall.c: fix order in assembly qualified name icall.
30492
30493 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30494
30495         * class.c: do not free str, since we store it in the hash table.
30496         * reflection.h: add label field to MonoILExceptionInfo.
30497         * reflection.c: handle references to more than one assembly. Handle
30498         case when there isn't a module created in the assembly.
30499
30500 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30501
30502         * class.c: Fix typo. Start refactoring of class init code.
30503
30504 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30505
30506         * appdomain.c: exit with 1 on error.
30507         * class.c: we already have the name in MonoClassField.
30508         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30509         MonoStreamHeader instead of an offset of image->raw_metadata.
30510
30511 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30512
30513         * appdomain.c (mono_init): Be even more descriptive about the error.
30514
30515 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30516
30517         * appdomain.c: give the user an informative message when corlib can't
30518         be loaded.
30519
30520 2002-02-26  Martin Baulig  <martin@gnome.org>
30521
30522         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30523         New icall to get the time zone data.
30524
30525 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30526
30527         * reflection.c: set virtual and raw size of section correctly.
30528         * threads.c: transfer domain information to newly created threads.
30529
30530 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30531
30532         * class.c: when instancing a class in a domain, load the default
30533         vaules for static fields from the constant table. Fix System.Enum to
30534         not be an enum.
30535         * icall.c: implement Object::GetType() internalcall. Implemented
30536         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30537         Fixed checking of binding flags in find_members().
30538         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30539         * reflection.c: handle enumerations when writing to the constant
30540         table. Use a different object cache for types.
30541
30542
30543 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30544
30545         * object.c (mono_object_isinst): fix for arrays
30546
30547         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30548
30549 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30550
30551         * object.c: don't use mprotect ()  and fix intern pool hash table
30552         lookup for big endian systems.
30553
30554 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30555
30556         * icall.c: change type_is_subtype_of () signature.
30557
30558 2002-02-21  Mark Crichton  <crichton@gimp.org>
30559
30560         * rand.c, rand.h: Added random number generator for
30561         System.Security.Cryptography classes.
30562
30563         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30564
30565         * icall.c: Added System.Security.Cryptography calls.
30566
30567 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30568
30569         * class.c, icall.c, metadata.c: better support for pointer types.
30570         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
30571         * reflection.c: Add support for getting custom attrs for properties
30572         and simplify some code.
30573
30574 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30575
30576         * icall.c: change getToken () and add custom attribute GetBlob()helper
30577         method.
30578         * reflection.h: add custom attrs array to the reflection builder structures.
30579         * reflection.c: encode and emit custom attributes for all the relevant
30580         reflection objects. Cache fieldref and methodref tokens. Change
30581         mono_image_create_token() interface to take a MonoDynamicAssembly.
30582         More complete custom attributes decoder. Load custom attributes for
30583         Assembly, Field, Method and Constructor objects, too. Make the
30584         returned array an Attribute[] one, not object[]. Added
30585         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
30586         custom attribute constructor.
30587
30588 2002-02-20  Dick Porter  <dick@ximian.com>
30589
30590         * icall.c:
30591         * rawbuffer.c:
30592         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
30593         problem code out for now).
30594
30595 2002-02-19  Radek Doulik  <rodo@ximian.com>
30596
30597         * object.c (mono_ldstr): use hash table to avoid multiple swapping
30598
30599 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
30600
30601         * icall.c: register the GetCustomAttributes method.
30602         * object.c, object.h: add mono_string_new_len ().
30603         * reflection.h, reflection.c: added mono_runtime_invoke(),
30604         mono_install_runtime_invoke(). Added
30605         mono_reflection_get_custom_attrs () to load custom attributes and
30606         create the attribute objects.
30607
30608 2002-02-19  Dick Porter  <dick@ximian.com>
30609         * threads-dummy-types.c:
30610         * threads-dummy-types.h:
30611         * threads-dummy.c:
30612         * threads-dummy.h:
30613         * threads-pthread-types.c:
30614         * threads-pthread-types.h:
30615         * threads-pthread.c:
30616         * threads-pthread.h:  Deleted obsolete files
30617
30618 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
30619
30620         * class.c (mono_class_vtable): runtime init the class when we
30621         allocate static class data.
30622
30623         * icall.c (ves_icall_System_Array_SetValue): check for null values.
30624
30625         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
30626         and String - but we will need generic marshalling support in the
30627         future. 
30628         (mono_init): set the domain name in a ms compatible way
30629
30630         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
30631         String[].
30632
30633 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
30634
30635         * object.c (mono_array_clone): use alloca() instead of g_malloc  
30636         for sizes
30637
30638         * appdomain.c (mono_domain_unload): impl.
30639
30640 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30641
30642         * appdomain.c, object.c: fix intern pool implementation.
30643         * class.c: fix alignment code.
30644
30645 2002-02-16  Radek Doulik  <rodo@ximian.com>
30646
30647         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
30648         and s2 > s1, just copy lower bytes to be compatible with little
30649         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
30650         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
30651
30652         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
30653         force big_endian to be 1 for big endian machines 
30654         (ves_icall_iconv_new_decoder): ditto
30655
30656 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
30657
30658         * socket-io.c (convert_sockopt_level_and_name): If the system
30659         doesn't define SOL_IP or SOL_TCP, get them by hand using
30660         getprotobyname() and caching the values (because this could be a
30661         slow operation).
30662         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
30663         Use the appropriate struct when the system does support it. Ie,
30664         not all systems have struct ip_mreqn so use struct ip_mreq when
30665         appropriate.
30666
30667 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
30668
30669         * reflection.c: handle finally clauses.
30670
30671 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
30672
30673         * socket-io.c: use g_snprintf() instead of snprintf.
30674
30675 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30676
30677         * reflection.c (mono_param_get_objects): Cast second argument to
30678         mono_method_get_param_names to a const char** to silence the
30679         compiler warning.
30680
30681         * appdomain.c (mono_domain_assembly_open): Put parens around the
30682         truth statement in the for-loop.
30683
30684         * unicode.c (iconv_convert): Got rid of a compiler warning about
30685         int i being unused when the system has a new iconv.
30686         (iconv_get_length): Same.
30687
30688         * image.c (load_class_names): Cast the second argument to
30689         g_hash_table_insert() to char* to hush compiler warnings about the
30690         arg being a const.
30691         (mono_image_open): Same here.
30692
30693         * socket-io.c: Don't conditionally include sys/filio.h or
30694         sys/sockio.h here anymore since we now get them from
30695         io-layer/io-layer.h
30696         (inet_pton): If the system doesn't support inet_aton, implement
30697         using inet_addr and also #define INADDR_NONE if it isn't defined
30698         by the system.
30699
30700 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30701
30702         * metadata.c, metadata.h: added function to get packing and size info
30703         of a typedef.
30704         * reflection.h, reflection.c: handle field RVA data. Save info about
30705         the table layout if needed. Assign typedef indexes to all the types
30706         before dumping the info about them to avoid forward reference problems.
30707
30708 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
30709
30710         * socket-io.c (convert_sockopt_level_and_name): ifdef
30711         SO_ACCEPTCONN because it is not defined on my system (old debian)
30712
30713 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30714
30715         * opcode.c: use stddef.h to get NULL.
30716
30717 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30718
30719         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
30720         for FIONBIO, FIONREAD and SIOCATMARK.
30721         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
30722         define INADDR_NONE and besides, inet_addr() is deprecated and
30723         should not be used. Use inet_pton() instead - it also has the
30724         added bonus that it can easily handle IPv6 addresses as well.
30725         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
30726
30727 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30728
30729         * decimal.c: remove _MSC_VER conditional.
30730
30731 2002-02-13  Dick Porter  <dick@ximian.com>
30732
30733         * socket-io.c: 
30734         * icall.c: Internal calls for Blocking, Select, Shutdown,
30735         GetSocketOption and SetSocketOption
30736
30737 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30738
30739         * assembly.cs: better resolver: use it instead of some kludgy
30740         code.
30741
30742 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
30743
30744         * reflection.c: the best way to speed-up the compiler is to avoid
30745         infinite loops.
30746
30747 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
30748
30749         * class.c (mono_class_vtable): changed the object layout
30750         (obj->vtable->class). 
30751         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
30752
30753 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30754
30755         * assembly.c: look for assemblies in the assembly dir, too.
30756
30757 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30758
30759         * class.c: fix thinko in mono_class_from_type().
30760
30761 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30762
30763         * exception.h, exception.c: added TypeLoadException.
30764         * object.h, object.c: added mono_array_clone ().
30765         * icall.c: handle throwOnError in AssemblyGetType().
30766         Added Array.Clone().
30767         * opcode.h, opcode.c: use a single value for the opcode val.
30768         Compile fix for non-gcc compilers.
30769
30770 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
30771
30772         * opcodes.c, opcodes.h: export interesting info about opcodes.
30773
30774 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
30775
30776         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
30777         icalls. 
30778
30779         * class.c (class_compute_field_layout): set element_class for enums
30780         (mono_class_create_from_typedef): set element_class for normal classes
30781
30782         * icall.c (ves_icall_System_Enum_get_value): impl.
30783
30784         * class.c (mono_class_create_from_typedef): do not set valuetype
30785         flag for System.ValueType and System.Enum
30786
30787 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
30788
30789         * unicode.c (iconv_convert): fix big endian problem.
30790
30791 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30792
30793         * class.c: add asserts if we are ever going to scribble over memory.
30794         * socket-io.c: not all systems have AF_IRDA defined.
30795
30796 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
30797
30798         * class.c (class_compute_field_layout): do not consider static
30799         fields to compute alignment
30800
30801 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
30802
30803         * appdomain.c (mono_appdomain_get): impl.
30804         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
30805
30806 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30807
30808         * icall.c: ignore "file://" prefix when loading an assembly.
30809
30810 2002-01-23  Dick Porter  <dick@ximian.com>
30811
30812         * socket-io.c:
30813         * icall.c:
30814         * Makefile.am: Added socket support
30815
30816 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30817
30818         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
30819         code back.  This should return the assemblies that are loaded by
30820         the runtime on behalf of an application domain. 
30821
30822         The current implementation is still broken, it just returns every
30823         assembly loaded, but until we get real applications domain this
30824         will do.
30825
30826 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
30827
30828         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
30829         AppDomain object.
30830
30831 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30832
30833         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
30834         the mono_class_from_name lookup.
30835         (ves_icall_get_parameter_info): ditto.
30836         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
30837         method.
30838         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
30839
30840 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
30841
30842         * class.c: load also nested classes on class init.
30843         System.ValueType instance methods gets passed boxed
30844         values, unless methods in derived classed that get a pointer to the
30845         data.
30846         * icall.c: use better name parsing code in GetType().
30847         * image.c, image.h: add mono_image_loaded ().
30848         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
30849         * reflection.c, reflection.h: added mono_reflection_parse_type().
30850
30851 2002-01-22  Veronica De Santis <veron78@interfree.it>
30852
30853         * icall.c : Added mapping of internal calls for Manual and Auto reset events
30854         * threads.c : Added the implementation of internal calls for events
30855         * threads.h : Added prototypes of internal calls for events
30856         
30857 2002-01-21  Radek Doulik  <rodo@ximian.com>
30858
30859         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
30860
30861 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
30862
30863         * class.c (mono_class_init): set min_align to 1 (instead of 0)
30864         (mono_class_value_size): use min_align
30865
30866 2002-01-20  Dick Porter  <dick@ximian.com>
30867
30868         * threads.h:
30869         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
30870         so it compiles on w32.
30871
30872 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
30873
30874         * metadata.c (mono_type_stack_size): impl.
30875
30876         * class.c (mono_class_get_field): impl. memberref token
30877
30878 2002-01-16 Veronica De Santis <veron78@@interfree.it>
30879
30880         * icall.h : Added the internal calls mapping for CreateMutex_internal
30881                     and ReleaseMutex_internal.
30882         * threads.h : Added the prototype of mutexes internal calls.
30883         * threads.c : Added the implementations of mutexes internal calls.
30884
30885 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30886
30887         * metaparse.h: removed unused file.
30888         * reflection.c, reflection.h: added stream_data_align () function 
30889         to align data in streams and keep stream aligned. Add support for
30890         exception support in method headers.
30891
30892 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
30893
30894         * unicode.c: make iconv_convert () return the number of bytess written
30895         in the output buffer.
30896
30897 2002-01-15  Dick Porter  <dick@ximian.com>
30898         * threads.c: Make the runtime's idea of infinite timeouts coincide
30899         with the class library's
30900
30901         Fix a particularly egregious bug in mono_thread_cleanup(). That
30902         code was so utterly bogus it must have been written on a Monday.
30903
30904 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30905
30906         * reflection.h: add subtypes field to TypeBuilder.
30907         * reflection.c: encode constants for literal fields.
30908         Handle subtypes. Fix user string token (and add a zero byte)
30909         at the end.
30910         
30911 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
30912
30913         * class.c (mono_class_init): bug fix: assign slot numbers for
30914         abstract methods.
30915
30916 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30917
30918         * reflection.c: don't try to output a code RVA for abstract methods.
30919         Small fixes for method header format. Output parameter info to the
30920         ParamDef table. Save method overriding info to MethodImpl table.
30921         Fix property support. Allow typedef.extends to be a type in the
30922         building assembly.
30923         * verify.c: fix off-by-one error.
30924
30925 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
30926
30927         * class.c: fix mono_class_from_mono_type () for szarray types.
30928         Remove unused cache check in mono_class_from_type_spec().
30929         * icall.c: *type_from_name () functions handle simple arrays and byref.
30930         * reflection.c: handle byref and szarray types. Handle methods without
30931         body (gets P/Invoke compilation working). Handle types and fields in
30932         get_token ().
30933         * reflection.h: add rank to MonoTypeInfo.
30934
30935 2002-01-10  Dick Porter  <dick@ximian.com>
30936
30937         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
30938         internal calls
30939
30940 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30941
30942         * icall.c: initialize class in type_from_handle ().
30943         Loop also in parent classes for get_method ().
30944         * reflection.c: properly encode class and valuetype types.
30945         Start on encoding TypeBuilder types. Handle fieldrefs.
30946         Use correct length when registering a user string.
30947         Handle ConstructorBuilder and MonoMethod in get_token ().
30948         Make mono_type_get_object () aware of cached types.
30949         * object.c: back out change to mono_string_new ().
30950
30951 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
30952         * object.c: mono_string_new should return a NULL when the string 
30953         passed in is NULL -- not try to deference it.
30954         
30955 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30956
30957         * icall.c: hack to make IsSubType work for TypeBuilders.
30958         * reflection.c: emit constructors before methods.
30959         Retrieve param names in mono_param_get_objects().
30960
30961 2002/01/05  Nick Drochak  <ndrochak@gol.com>
30962
30963         * Makefile.am: fix list of headers and sources so automake 1.5
30964         doesn't complain. Removed \# at end of list.
30965
30966 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30967
30968         * reflection.c: get token for a method ref. Set return type of
30969         constructor to void.
30970         * loader.c: debug message.
30971         * class.c: typo fix.
30972
30973 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
30974
30975         * icall.c: fix array init with rank > 1. FindMembers
30976         loops in parent class as well.
30977         * image.c: do not insert nested types in name cache.
30978         * reflection.c: warning fix.
30979         * reflection.h: add override method (for interface impl).
30980
30981 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
30982
30983         * metadata.c: fix customattr decoding.
30984
30985 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
30986
30987         * rawbuffer.cs: Added native Win32 implementation, avoids using
30988         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
30989
30990 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
30991
30992         * class.c: make the low-level routines handle the cache.
30993
30994 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
30995
30996         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
30997
30998 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
30999
31000         * class.c: fix mono_array_element_size() for objects.
31001         * class.h, class.c: add properties to MonoClass and load them
31002         at init time.
31003         * icall.c: check with isinst() when assigning a value to an array
31004         instead of requiring the classes to match exactly.
31005         Implemented icall for System.Type::GetType().
31006         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
31007         enums. Handle bindingflags when looking for methods and fields.
31008         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
31009         and mono_metadata_methods_from_property().
31010         * reflection.h, reflection.c: added structures for propreties,
31011         parameters and enums. Implemented mono_property_get_object() and
31012         mono_param_get_objects().
31013
31014 2001-12-18  Dick Porter  <dick@ximian.com>
31015
31016         * file-io.c: Use mono_string_to_utf16() instead of
31017         mono_string_chars()
31018
31019         * object.c: Added mono_string_to_utf16(), which copies the non
31020         NULL-terminated MonoString into a new double-null-terminated
31021         buffer.
31022
31023 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
31024
31025         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
31026
31027 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
31028
31029         * file-io.c: raise exceptions if handle is invalid.
31030
31031 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
31032
31033         * assembly.c: yet another check for mscorlib.
31034         * class.c, class.h: load nesting info for classes.
31035         * icall.c: many new functions to support the Reflection classes.
31036         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
31037         * reflection.h, reflection.c: mono_image_create_token(),
31038         mono_assembly_get_object(), mono_type_get_object(),
31039         mono_method_get_object(), mono_field_get_object(): methods to return
31040         objects that parallel the C representation of assemblies, types,
31041         methods, fields.
31042
31043 2001-12-11  Dick Porter  <dick@ximian.com>
31044
31045         * icall.c:
31046         * file-io.c: Internal calls for file IO.
31047
31048 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
31049
31050         * tabledefs.h: missing FileAttributes.
31051         * verify.h, verify.c: use is_valid_string () to simplify and check for
31052         valid strings more correctly. Fix warnings and speeling.
31053         Check more tables: Filed, File, ModuleRef, StandAloneSig.
31054         Check code: branches, maxstack, method calls.
31055
31056 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
31057
31058         * object.c (mono_object_allocate): removed static, so that the jit
31059         can allocate value types.
31060
31061         * icall.c (ves_icall_System_DateTime_GetNow): impl.
31062
31063 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31064
31065         * class.c: init enum types right away and register the
31066         token->MonoClass map in mono_class_create_from_typedef ().
31067         * verify.h, verify.c: first cut of the verifier.
31068         * pedump.c: add --verify switch to verify metadata tables.
31069         * tabledefs.h: add some missing enums.
31070
31071 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
31072
31073         * class.c (mono_install_runtime_class_init): impl.
31074         (mono_class_init): renamed mono_class_metadata_init to
31075         mono_class_init, also removed the metadata_inited flag
31076
31077         * object.c (mono_object_isinst): use faster algorithm
31078
31079 2001-11-30  Radek Doulik  <rodo@ximian.com>
31080
31081         * mono-endian.h: reverted last change
31082         added function prototypes
31083
31084         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
31085         add mono-endian.c back
31086
31087         * mono-endian.c: returned back, as Paolo pointed out, it's needed
31088         for unaligned access, I've mistaked it with endianess. I am
31089         sorry.
31090         (mono_read16): fix reverted endianess
31091         (mono_read64): ditto
31092         (mono_read32): ditto
31093
31094 2001-11-30  Dick Porter  <dick@ximian.com>
31095
31096         * exception.c: Implement mono_exception_from_name()
31097
31098 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31099
31100         * metadata.h, metadata.c: remove params_size and locals_size and their
31101         calculation from the metadata code: they are only usefult to the
31102         interp.
31103
31104 2001-11-29  Radek Doulik  <rodo@ximian.com>
31105
31106         * object.c (mono_ldstr): swap bytes here, it's probably not the
31107         best place, but works for me now, I'll redo it once I know mono
31108         better, also note that I add PROT_WRITE and don't reset back, also
31109         note that it's only affects big endians, so x86 should be OK
31110
31111         * mono-endian.h (read16): use just glib macros for both endians
31112
31113         * mono-endian.c: removed as glib macros are used in in
31114         mono-endian.h so we don't need to care about endianess for read
31115         macros as glib does that for us already
31116
31117 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
31118
31119         * class.h, class.h: take minimum alignment into consideration so
31120         that the fields of a class remain aligned also when in an array.
31121
31122 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31123
31124         * loader.h, loader.c: add mono_method_get_param_names().
31125         * class.c: 0-init class fields.
31126
31127 2001-11-26  Dick Porter  <dick@ximian.com>
31128
31129         * icall.c:
31130         * threads-types.h:
31131         * threads.c: New file that handles System.Threading on all platforms
31132
31133         * object.c: 
31134         * object.h: Remove the synchronisation struct from MonoObject,
31135         replace it with a pointer that gets initialised on demand
31136
31137         * Makefile.am: Replace all the system-specific threading code with
31138         a single file that uses the new wrapper library
31139
31140 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
31141
31142         * class.c, class.h: add mono_install_trampoline() so that the runtime
31143         can register a function to create a trampoline: removes the ugly
31144         requirement that a runtime needed to export arch_create_jit_trampoline.
31145         * object.h, object.c: added mono_install_handler() so that the runtime
31146         can install an handler for exceptions generated in C code (with
31147         mono_raise_exception()). Added C struct for System.Delegate.
31148         * pedump.c: removed arch_create_jit_trampoline.
31149         * reflection.c: some cleanups to allow registering user strings and
31150         later getting a token for methodrefs and fieldrefs before the assembly
31151         is built.
31152         * row-indexes.h: updates and fixes from the new ECMA specs.
31153
31154 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
31155
31156         * class.h, class.c: add enum_basetype field to MonoClass.
31157         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
31158         to get index in the constant table reated to a field, param or
31159         property.
31160         * reflection.h, reflection.c: handle constructors. Set public-key and
31161         version number of the built assembly to 0.
31162         * row-indexes.h: update from new ECMA spec.
31163
31164 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31165
31166         * class.h, class.c: add a max_interface_id to MonoClass.
31167         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
31168         since it's used to do that. Added mono_type_type_from_obj().
31169         Make GetType() return NULL instead of segfaulting if the type was not
31170         found. Handle simple arrays in assQualifiedName.
31171         * object.h: add a struct to represent an Exception.
31172         * reflection.c: output call convention in method signature.
31173         Add code to support P/Invoke methods and fixed offsets for fields.
31174
31175 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
31176
31177         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
31178         the value.
31179         * icall.c: use mono_array_addr instead of array->vector: fixes the
31180         reflection image writing.
31181         * reflection.c: init call convention byte to 0 in method signature.
31182         Encode the property signature. Don't output property-related methods
31183         twice. Really process the properties for a type (don't cast a field to
31184         a property, my mom always told me that).
31185         Fix 64 bit issues in pointer alignment in a different and more
31186         readable way.
31187
31188 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
31189
31190         * loader.h: Removed type class from MonoDefaults, added monotype
31191
31192         * loader.c: Loaded MonoType, removed loading of Type
31193
31194         * icall.c (my_mono_new_object): Now returns a System.MonoType,
31195         and fills in System.Type._impl with a RuntimeTypeHandle rather
31196         than the actual MonoClass *
31197
31198         (ves_icall_type_from_handle): change from type_class to
31199         monotype_class
31200
31201         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
31202         implemented
31203
31204         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
31205         implemented
31206
31207         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
31208
31209         (ves_icall_System_Reflection_Assembly_GetType): implemented
31210
31211         (ves_icall_System_MonoType_assQualifiedName): implemented
31212
31213         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
31214
31215 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
31216
31217         * assembly.c (mono_assembly_open): Implement a cache for the
31218         assemblies. 
31219
31220         (mono_assembly_close): only destroy the assembly when the last
31221         reference is gone.
31222         
31223 2001-11-09  Dick Porter  <dick@ximian.com>
31224
31225         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
31226
31227 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
31228
31229         * class.c (mono_class_metadata_init): bug fix: compute the right slot
31230
31231 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31232
31233         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
31234         from Martin Weindel.
31235         * object.h: add mono_string_chars ().
31236
31237 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
31238
31239         * reflection.c (build_compressed_metadata): Eliminates warnings
31240         and uses 64-bit clean code.
31241
31242         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
31243         (mono_type_equal): Change signature to eliminate warnings.
31244
31245 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31246
31247         * icall.c, loader.c: remove the internalcall array constructors.
31248         Changes to match the new MonoArray structure.
31249         * object.h, object.c: an array object doesn't allocate an extra
31250         vector. Add mono_array_new_full () to create jagged arrays easily.
31251
31252 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31253
31254         * metadata.h, metadata.c: add mono_metadata_field_info () to
31255         retreive all the info about a field from vairous tables.
31256         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31257         * class.h, class.c: augment MonoClassField with more info.
31258         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31259         policy and load a field's RVA if needed.
31260
31261 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31262
31263         * class.c (mono_class_metadata_init): create a trampoline for all
31264         virtual functions instead of actually compiling them.
31265
31266 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31267
31268         * class.h, class.c: include name in MonoClassField.
31269         * class.c: fix fundamental type of System.Object and System.String.
31270         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31271         tokens in ldtoken.
31272         * icall.c: remove internalcalls for the Reflection stuff that is now
31273         done in C# code.
31274         * loader.c: mono_field_from_memberref () implementation.
31275         * mono-endian.c: thinko (s/struct/union/g).
31276         * object.c, object.h: make the mono_string_* prototypes actually use
31277         MonoString instead of MonoObject.
31278         * reflection.c, reflection.h: updates for changes in the reflection
31279         code in corlib: we use C structures that map to the actual C# classes.
31280         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31281         fat method header if needed and use the info from the ILGenerator for
31282         methods. Handle fields in types. Misc fixes.
31283
31284 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31285
31286         * class.c (mono_class_metadata_init): bug fix: always allocate
31287         space for static class data
31288
31289 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31290
31291         * class.c (mono_compute_relative_numbering): use relative
31292         numbering to support fast runtime type checks.
31293
31294 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31295
31296         * class.c (mono_class_create_from_typeref): added debugging output
31297         to print class name when MonoDummy is returned instead of real class
31298
31299 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31300
31301         * class.c (mono_class_metadata_init): interface offset table now
31302         contains pointers into the vtable - this is more efficient for the jit
31303
31304 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31305
31306         * class.c (mono_class_metadata_init): use a temporary vtable (the
31307         old algorithm only worked for the interpreter, but not for the jit)
31308
31309 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31310
31311         * loader.c (method_from_memberref): use mono_class_get to get the
31312         class of an array instead of using System.Array directly.
31313         (mono_get_method): also add MEMBERREF methods to the method cache
31314         which usefull for arrays.
31315
31316 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31317
31318         * pedump.c (arch_compile_method): added to compute vtable entry
31319
31320         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31321         number of interfaces.
31322         
31323         * class.h: merged MonoArrayClass into MonoClass
31324
31325         * class.c (mono_class_create_from_typedef): compute the vtable size and
31326         allocate space to include the vtable inside MonoClass
31327         (mono_class_metadata_init): initialize the vtable
31328
31329 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31330
31331         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31332         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31333         * image.c: endian fixes by Laurent Rioux.
31334         * object.h, object.c: rename MonoStringObject to MonoString and
31335         MonoArrayObject to MonoArray. Change some function names to conform to
31336         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31337         guint16* as first argument, so don't use char*.
31338         Provide macros to do the interesting things on arrays in a portable way.
31339         * threads-pthread.c: updates for the API changes and #include <sched.h>
31340         (required for sched_yield()).
31341         * icall.c: updates for the API changes above.
31342         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31343         platforms that need them.
31344
31345 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31346
31347         * class.c: set the correct type for all the fundamental
31348         type when loading the class.
31349
31350 2001-10-05  Dick Porter  <dick@ximian.com>
31351
31352         * threads-pthread.c (pthread_mutex_timedlock): Simple
31353         compatibility version for C libraries that lack this call.
31354
31355 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31356
31357         * class.c: MonoTypes stored in MonoClass are stored as
31358         fundamental MonoTypes when the class represents a
31359         fundamental type (System.Int32, ...).
31360         The TypeHandle return by ldtoken is a MonoType*.
31361         * icall.c: ves_icall_get_data_chunk () write out all the
31362         PE/COFF stuff. Implement ves_icall_define_method (),
31363         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31364         * image.c: properly skip unknown streams.
31365         * loader.h, loader.c: add type_class to mono_defaults.
31366         * metadata.c, metadata.h: export compute_size () as
31367         mono_metadata_compute_size () with a better interface.
31368         Typo and C&P fixes.
31369         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31370         * reflection.c, reflection.h: many cleanups, fixes, output method
31371         signatures and headers, typedef and typeref info, compress the metadata
31372         tables, output all the heap streams, cli header etc.
31373         * row-indexes.h: typo fixes.
31374
31375 2001-10-04  Dick Porter  <dick@ximian.com>
31376
31377         * object.h: Add a synchronisation mutex struct to MonoObject
31378
31379         * object.c (mono_new_object): Initialise the object
31380         synchronisation mutexes
31381
31382         * icall.c: System.Threading.Monitor internal calls
31383         
31384         * threads-pthread.h:
31385         * threads-pthread.c: System.Threading.Monitor internal calls
31386
31387         * threads-types.h: New file, includes the system-specific thread
31388         structures
31389         
31390         * threads-pthread-types.h:
31391         * threads-pthread-types.c: New files, handle pthread-specific
31392         synchronisation types
31393
31394         * threads-dummy-types.h: 
31395         * threads-dummy-types.c: New files of dummy support for
31396         thread-specific types
31397
31398         * metadata.c:
31399         * image.c:
31400         * pedump.c: include mono-endian.h not endian.h
31401         
31402         * Makefile.am: More threads files.
31403         Name mono-endian.h not endian.h
31404
31405 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31406
31407         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31408         stuff and implement a few more bits.
31409         * icall.c: a field needs to be dereferenced twice. Do not use the same
31410         name for two variables in the same scope.
31411         * image.c, image.h: cleanups.
31412
31413 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31414
31415         * class.c (mono_class_metadata_init): bug fix: compute the right size
31416
31417 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31418
31419         * icall.c: implemented some of the Reflection internalcalls.
31420         * image.c, image.h: start writing out the PE/COFF image.
31421         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31422         that does the reverse than decode_blob_size ().
31423         * object.c: use mono_metadata_encode_value (). Move here
31424         temporary implementation of mono_string_to_utf8 ().
31425         * rawbuffer.c: make malloc_map static.
31426
31427 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31428
31429         * metadata.c: fix type comparison for arrays.
31430         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31431         Added a couple of new classes to monodefaults.
31432         * icall.c: added a couple of Reflection-related internalcalls.
31433         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31434         Added a byval_arg MonoType to MonoClass.
31435
31436 2001-09-28  Dick Porter  <dick@ximian.com>
31437
31438         * icall.c:
31439         * threads-pthread.h: 
31440         * threads-pthread.c: Implemented internal calls for
31441         LocalDataStoreSlot operations.  Applied mutexes around all shared
31442         data.  Reworked the thread creation and Start() operations to
31443         avoid a race condition.
31444         
31445         * threads-dummy.h:
31446         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31447
31448 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31449
31450         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31451
31452 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31453
31454         * class.c, loader.c: warn and return NULL instead of erroring out.
31455         * icall.c: added System.AppDomain::getCurDomain().
31456         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31457
31458 2001-09-25  Dick Porter  <dick@ximian.com>
31459
31460         * threads-pthread.h:
31461         * threads-pthread.c: Implemented timed thread joining and added
31462         System.Threading.Thread::Join_internal internal call
31463
31464         * icall.c: Added System.Threading.Thread::Join_internal internal call
31465
31466         * threads-dummy.h:
31467         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31468
31469 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31470
31471         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31472         mono_string_intern () to implement the semantics of the ldstr opcode
31473         and the interning of System.Strings.
31474         * icall.c: provide hooks to make String::IsIntern and String::Intern
31475         internalcalls.
31476
31477 2001-09-23  Dick Porter  <dick@ximian.com>
31478
31479         * threads-dummy.c: 
31480         * threads-dummy.h: New files of dummy threading routines
31481
31482         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31483         support code based on system specifics
31484
31485         Rename PTHREAD_LIBS to THREAD_LIBS
31486         
31487 2001-09-23  Dick Porter  <dick@ximian.com>
31488
31489         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31490         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31491         internal calls.
31492         (mono_thread_init): Set up a Thread object instance to return when
31493         the main thread calls Thread.CurrentThread
31494         (mono_thread_cleanup): Wait for all subthreads to exit
31495
31496         * icall.c: New internal calls for System.Threading.Thread::Sleep
31497         (including Schedule) and CurrentThread
31498
31499         * threads.h: New file, to insulate thread-specific stuff from the
31500         rest of the code
31501
31502 2001-09-21  Dick Porter  <dick@ximian.com>
31503
31504         * threads-pthread.h: 
31505         * threads-pthread.c: New file, for handling pthreads-style
31506         threading support.  Start() now starts a new thread and executes
31507         the ThreadStart delegate instance.
31508
31509         * icall.c: Added the internalcall for
31510         System.Threading.Thread::Start_internal
31511
31512         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31513
31514 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31515
31516         * loader.c: work around the different signatures for delegates
31517         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31518
31519 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31520
31521         * class.h, class.c: add mono_class_get_field_from_name ().
31522         * *: Fix C comments and other ANSI C issues.
31523
31524 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31525
31526         * endian.h, assembly.c: fix some endianness issues.
31527
31528 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31529
31530         * loader.h, load.c: add delegate_class to mono_defaults.
31531         Handle runtime provided methods in mono_get_method ().
31532
31533 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31534
31535         * loader.c (mono_get_method): use pinvoke for internal call
31536
31537         * icall.c: use pinvoke for internal call
31538
31539         * loader.c (method_from_memberref): set the method name
31540
31541 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31542
31543         * metadata.c: help the compiler generate better code for
31544         mono_class_from_mono_type ().
31545
31546 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31547
31548         * class.c (mono_class_metadata_init): delayed computing of the
31549         class size to mono_class_metadata_init ()
31550
31551 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31552
31553         * class.c, class.h: add an interfaces member to MonoClass.
31554         * image.c, image.h: add assembly_name field to MonoImage
31555         from the assembly table.
31556         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31557
31558 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31559
31560         * class.c: Handle Array in mono_class_from_mono_type ().
31561         * metadata.c, pedump.c: some endian fixes.
31562
31563 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31564
31565         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
31566         * metadata.c: fix small problem introduced with the latest commit.
31567
31568 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
31569
31570         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
31571         We don't need a MonoMetadata pointer anymore to compare signatures in
31572         mono_metadata_signature_equal (), update callers.
31573         Reduced memory usage an number of allocations for MonoMethodHeader and
31574         MonoMethodSignature.
31575
31576 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
31577
31578         * metadata.c: added compare for szarray.
31579
31580 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
31581
31582         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
31583         and add a couple more types to it and mono_defaults. Give an hint on
31584         classes that need implementing in our corlib and are referenced
31585         in mscorlib.
31586
31587 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
31588
31589         * class.h, class.c: keep track if a class is also an Enum.
31590         * loader.c: Implement a couple more types for use in libffi
31591         marshalling. Gives better diagnostics when failing to dlopen
31592         a library. Set method->klass for P/Invoke methods, too.
31593
31594 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
31595
31596         * class.c, class.h: add a MonoType this_arg to MonoClass that
31597         represents a pointer to an object of the class' type that
31598         can be used by the interpreter and later the type cache.
31599         Add best guess alignment info for valuetype objects.
31600
31601 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
31602
31603         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
31604         into MonoType: one less level of indirection and allocation and
31605         simplifies quite a bit of code. Added cache for MonoTypes that are
31606         used frequently, so that we don't need to allocate them all the time.
31607
31608 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
31609
31610         * class.c (mono_class_create_from_typedef): System.Enum is also a
31611         value type, although it does not derive from System.ValueType
31612         (maybe a bug in the ms compiler?)
31613
31614         * metadata.c (mono_type_size): return the right size for value types
31615
31616         * loader.c (mono_get_method): only initialize method header if not abstract
31617
31618         * class.c (mono_class_from_mono_type): use mono_default values. 
31619
31620 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
31621
31622         * *: use MonoClass pointers instead of <type_tokens>
31623         
31624         * class.h: new flag: metadata_inited.
31625
31626         * class.c (mono_class_metadata_init): impl.
31627         (mono_class_instance_size): impl.
31628         (mono_class_data_size): impl.
31629
31630 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31631
31632         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
31633         MonoClass now has the name and name_space fields. 
31634         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
31635         mono_get_method () takes and optional MonoClass as argument.
31636         Removed mono_typedef_from_name() and added mono_class_token_from_name()
31637         instead that takes advantage of a map from class names to typedef
31638         tokens in MonoImage.
31639
31640 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
31641
31642         * metadata.c: zero is not a valid alignment boundary.
31643         Merge MONO_TYPE_VOID in default decoding code.
31644
31645 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
31646
31647         * image.h: merged MonoMetadata into MonoImage
31648
31649         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
31650         identify the type of elements.
31651
31652 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
31653
31654         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
31655         * cil-coff.h: split MonoMSDOSHeader and add size info.
31656         * image.c: add some consistency checks.
31657         * metadata.c: fix row size computation: one programmer
31658         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
31659         add explanation for the locator routine.
31660         Fix decoding of size in method header.
31661         
31662 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
31663
31664         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
31665         (g_concat_dir_and_file): Bring g_concat_dir_and_file
31666         function from gnome-libs.  This uses the right path separator
31667         based on the OS, and also works around a bug in some systems where
31668         a double slash is not allowed. 
31669         (default_assembly_name_resolver): Use g_concat_dir_and_file
31670         (mono_assembly_open): ditto.
31671
31672 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
31673
31674         * metadata.c (mono_metadata_signature_equal): impl.
31675
31676         * *: void is now a realy MonoType (instead of using NULL)
31677         
31678         * metadata.c (do_mono_metadata_parse_type): use
31679         mono_metadata_parse_type to parse void value.
31680
31681 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
31682
31683         * metadata.c, metadata.h: in the signature and method header store
31684         only the space required for holding the loca vars and incoming arguments.
31685
31686 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
31687
31688         * metadata.c (do_mono_metadata_parse_type): treat void like any
31689         other type (instead of assigning NULL);
31690
31691 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
31692
31693         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
31694
31695 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
31696
31697         * image.c (do_mono_image_open): added a cache for arrays.
31698
31699 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31700
31701         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
31702         decode a single column from a row in a metadata table and changes
31703         to take advantage of it in the typedef locator (gives a nice speed up).
31704         Store offset info for function params.
31705
31706 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
31707
31708         * image.h (MONO_IMAGE_IS_CORLIB): removed 
31709
31710 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
31711
31712         * assembly.c: how could mono_assembly_close () had ever worked?
31713         * metadata.c, metadata.h: provide offset info for local vars.
31714         Implement mono_type_size () to take care of alignment as well
31715         as size (it was mono_field_type_size in cli/class.c before).
31716
31717 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
31718
31719         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
31720
31721         * assembly.h (CORLIB_NAME): set to corlib.dll
31722
31723         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
31724
31725 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31726
31727         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
31728         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
31729         tokentype.h: massive namespace cleanup.
31730
31731 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31732
31733         * metadata.h, metadata.c: decode exception clauses when parsing method header.
31734
31735 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
31736
31737         * metadata.c (mono_metadata_free_type): added check for type !=
31738         NULL (void) before calling mono_metadata_free_type()
31739
31740 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
31741
31742         * metadata.h, row_indexes.h: added header with enumerations to use
31743         to index in the columns from tables in metadata and to decode coded
31744         tokens: we should start using this instead of embedding magic numbers
31745         all over the code.
31746
31747 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
31748
31749         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
31750         Move metadata_t info from cli_image_info_t to MonoImage, where
31751         it's easily accessible. Changed all the uses accordingly.
31752         Added the method and class caches to MonoImage.
31753         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
31754         and mono_metadata_decode_value () signature to be more consistent
31755         with the other parse functions (and simplify code). Taken advantage
31756         of zero-length array allocation with GCC. Removed reduntant (and
31757         wrong) MonoFieldType struct and use MonoParam instead. Changed
31758         mono_metadata_parse_field_type () to use common code for parsing.
31759         Added mono_metadata_typedef_from_field () and
31760         mono_metadata_typedef_from_method () to lookup a typedef index from a
31761         field or method token.
31762         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
31763
31764 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
31765
31766         * metadata.c (mono_metadata_parse_field_type): Implement. 
31767         (do_mono_metadata_parse_type): Split engine from
31768         mono_metadata_parse_type, so that we can create smaller structures
31769         for things that just have one pointer to the MonoType (look at
31770         the MonoFieldType)
31771
31772 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
31773
31774         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
31775         as Jan Gray found out, it is incorrect. 
31776
31777 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
31778
31779         * assembly.c: Implement asssembly loading.  This loads an image
31780         and loads all the referenced assemblies.  Come to think of it, we
31781         could always do lazy loading of the assemblies. 
31782
31783         * image.c (mono_image_open): Keep loaded images in a hashtable.
31784
31785         * image.h (MonoImage): Add reference count.
31786
31787 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
31788
31789         * assembly.c (mono_assembly_open): Keep track of the file name in
31790         case the assembly has no ASSEMBLY table.
31791
31792         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
31793         from get.c here.
31794
31795 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
31796
31797         * metadata.c, metadata.h: decode local vars in method header
31798         parse function. Change callers accordingly.
31799
31800 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
31801
31802         * metadata.h, cil-coff.h: protect against multiple inclusion.
31803         Added some new structures to hold information decoded from metadata:
31804         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
31805         and relevant decoding/free functions.
31806         * metadata.c: implement decoding functions. Add warning for out of bounds
31807         index in mono_metadata_locate(). Implement mono_get_method () to retreive
31808         all the info about a method signature and invocation. Remove check on
31809         uninitialized local var in parse_mh() and fix memory leak.
31810
31811 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
31812
31813         * metadata.h: More macros.
31814
31815         * tokentype.h: New file.
31816
31817 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
31818
31819         * assembly.c: added a consistency check and initialize
31820         some structures with g_new0().
31821         * metadata.c: fixed a couple more bugs in table size computation
31822         and add other checks for out-of bound access to metadata.
31823
31824 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
31825
31826         * metatada.c: fix bugs computing table sizes. Spew a
31827         warning when index in string heap is out of bounds.
31828
31829 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
31830
31831         * metadata.h: Add a couple of macros to manipulate tokens. 
31832
31833 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31834
31835         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
31836         cli_section_tables).
31837
31838 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
31839
31840         * metadata.c (mono_metadata_user_string): New function, provides
31841         access to the UserString heap. 
31842
31843 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
31844
31845         * metadata.c: Add inline documentation.
31846
31847 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
31848
31849         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
31850         files. 
31851
31852 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
31853
31854         * typeattr.h: New file, TypeAttribute flags. 
31855
31856 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
31857
31858         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
31859         mono_assembly_ensure_section): Section loading code.
31860         (load_section_tables): Load the sections.
31861
31862         * mono/metadata/metadata.c (mono_metadata_locate_token,
31863         mono_metadata_locate): Functions to locate the information
31864         definition given a token or a table and an index.
31865         (mono_metadata_compute_table_bases): New.
31866         (compute_size): New function to compute the sizes of the various
31867         tables.
31868
31869         * mono/metadata/metadata.h: Finish listing the different index
31870         types. 
31871
31872         * mono/metadata/pedump.c: Improve to dump new information.
31873
31874 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
31875
31876         * mono/metadata/metadata.c: Entered all the tables matching
31877         Beta2. 
31878
31879         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
31880
31881
31882
31883