2009-05-28 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
2
3         * object-internals.h (MonoRuntimeCallbacks): New structure containing
4         callbacks supplied by the runtime.
5
6         * object.c (mono_install_callbacks): New internal function to install
7         the callbacks.
8
9         * object.c (mono_create_ftnptr): Move the implementation of this to
10         mini/.
11
12         * object.c (mono_get_addr_from_ftnptr): Ditto.  
13
14 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
15
16         * metadata-verify.c (parse_return_type): Proper byref check.
17         * metadata-verify.c (is_valid_method_signature): Check for zero arity
18         generic signatures and method params.
19
20 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
21
22         * metadata-verify.c (decode_signature_header): Fix bounds check.
23
24         * metadata-verify.c (parse_custom_mods): Check custom mods.
25
26         * metadata-verify.c (parse_type): Do initial basic verification
27         of valid values.
28         
29         * metadata-verify.c (is_valid_method_signature): Parse the generic
30         param count.
31
32 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
33
34         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
35         discarded based on their most specific definition so we set the method_slots
36         array before checking if the method is acceptable or not.
37
38         Fixes #506757.
39
40 2009-05-26  Mark Probst  <mark.probst@gmail.com>
41
42         * icall.c: Free the old array when resizing a mono_ptr_array.
43
44 2009-05-26  Mark Probst  <mark.probst@gmail.com>
45
46         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
47         for the hashes whose keys are managed objects.
48
49 2009-05-26  Mark Probst  <mark.probst@gmail.com>
50
51         * object-internals.h, threads.c: Set the execution context on
52         thread start here, not in corlib.
53
54         * appdomain.c: Bump corlib version.
55
56 2009-05-27  Martin Baulig  <martin@ximian.com>
57
58         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
59         if `_mono_debug_using_mono_debugger' is set to make things work
60         properly when embedding Mono.
61
62 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
63
64         * class.c (mono_class_setup_fields): Don't mark simd types as having
65         16 bytes alignment as the whole runtime doesn't support.
66
67 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
68
69         * metadata-verify.c (safe_read): Use endian safe read macros.
70
71 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
72
73         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
74         it is read-only when using full aot.
75
76 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
77
78         * metadata-verify.c (is_valid_method_signature): Verify parts
79         of the return type. Provide an error message in case of failure.
80
81 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
82
83         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
84
85 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
86
87         * metadata-verify.c: Include the size prefix in the bounds check.
88
89 2009-05-22  Miguel de Icaza  <miguel@novell.com>
90
91         * icall.c: Remove warnings.
92
93         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
94         prevent auto-detection based on GCC defines.
95
96         Add PS3
97
98         * metadata-verify.c: Do not include signal.h
99
100         * generic-sharing.c, marshal.c: Add returns to avoid some warning
101         messages.  Not sure why the g_assert_not_reached is not enough to
102         quiet the compiler.
103         
104
105         * appdomain.c: Remove code that is not used when
106         DISABLE_SHADOW_COPY is set.
107
108         * image.c: use g_getenv
109
110 2009-05-21  Miguel de Icaza  <miguel@novell.com>
111
112         * reflection.c: Remove code that it not used with
113         DISABLE_REFLECTION_EMIT is defined.
114
115 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
116
117         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
118         invoke wrappers.
119
120 2009-05-20  Miguel de Icaza  <miguel@novell.com>
121
122         * socket-io.c
123         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
124         the ifdef here and instead put that on io-layer
125
126 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
127
128         * metadata-verify.c: Verify the generic param constraint table.
129
130 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
131
132         * metadata-verify.c (verify_generic_param_table): Fix
133         thinko on the valid flags bits for generic params.
134
135 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
136
137         * metadata-verify.c: Verify the methodspec table.
138
139 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
140
141         * metadata-verify.c: Verify the generic param table.
142
143 2009-05-19  Mark Probst  <mark.probst@gmail.com>
144
145         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
146
147 2009-05-19  Mark Probst  <mark.probst@gmail.com>
148
149         * sgen-gc.c: Use generation enum more consistently and use the
150         correct generation in mono_gc_register_for_finalization().
151
152 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
153
154         * metadata-verify.c: Verify the nested class table.
155
156 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
157
158         * metadata-verify.c: Verify the manifest resource table.
159
160 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
161
162         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
163
164 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
165
166         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
167         wrappers, this is now done in the JIT.
168         
169         * class.c (mono_set_generic_sharing_supported): New internal function.
170         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
171
172 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
173
174         * metadata-verify.c: Verify the exported type table.
175
176 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
177
178         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
179
180 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
181
182         * metadata-verify.c: Verify the file table.
183
184 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
185
186         * metadata-verify.c (verify_assembly_table): Fix an error message.
187
188         * metadata-verify.c: Verify the assemblyref table.
189
190 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
191
192         * metadata-verify.c (verify_assembly_table): Fix the valid
193         bits mask for flags.
194
195 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
196
197         * debug-helpers.c (mono_method_full_name): Print generic parameters of
198         generic methods as well.
199
200 2009-05-15  Geoff Norton  <gnorton@novell.com>
201
202         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
203         use-case and is significantly more performant than the wapi layer.
204
205 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
206
207         * metadata-verify.c: Verify the assembly table.
208
209 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
210
211         * metadata-verify.c: Fix rows limit check.
212
213 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
214
215         * metadata-verify.c: Verify the fieldrva table.
216
217 2009-05-13  Mark Probst  <mark.probst@gmail.com>
218
219         * sgen.c: Speed up weak links and finalizers by grouping them by
220         generation.
221
222 2009-05-13  Mark Probst  <mark.probst@gmail.com>
223
224         * marshal.c (delegate_hash_table_add): When overwriting an entry,
225         free the old GCHandle (only applies to SGen).
226
227 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
228
229         * loader.c (mono_get_method_from_token): Avoid the expensive call to
230         mono_metadata_load_generic_params () for non-generic methods.
231
232 2009-05-12  Mark Probst  <mark.probst@gmail.com>
233
234         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
235         New function for returning a monitor's weak link if it has one.
236
237         * sgen-gc.c: Remove an object's monitor's weak link (if it has
238         one) when clearing a domain.  These can still be around because
239         the object might not have been collected.
240
241 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
242
243         * gc.c: Fix a warning.
244
245 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
246
247         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
248         prevous wait that resulted in a deadlock on Windows when initializing
249         the runtime form DllMain. Also results in improved startup time.
250         (finalizer_thread): Get rid of thread_started_event.
251         * threads.c, threads-types.h (mono_thread_create_internal): Return the
252         resulting MonoThread.
253
254         Contributed under MIT/X11 license.
255
256 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
257
258         * metadata-verify.c: Verify the implmap table.
259         Don't require that #US and #Strings be present.
260
261 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
262
263         * security-core-clr.c: Delegate checks are done at creation time,
264         not a invocation time. Fix exception for Telerik Silverlight demo
265
266 2009-05-11  Mark Probst  <mark.probst@gmail.com>
267
268         * sgen-gc.c (need_remove_object_for_domain): Remove the special
269         case for the Thread class.
270
271         * threads.c: Do clean-up of abort exception/state in
272         thread_cleanup() instead of Thread.free_internal().  Also clean up
273         current_appcontext.  The reason we have to do that is because
274         those references might point into another domain and if that
275         domain is unloaded before the thread is finalized, they point to
276         invalid data.
277
278 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
279
280         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
281         stub signatures.
282         
283         Contributed unter MIT/X11 license.
284
285 2009-05-09  Miguel de Icaza  <miguel@novell.com>
286
287         * verify.c, metadata-verifier.c: Add support for disabling the
288         verifier in some builds.
289
290         [ Sorry, my previous commit accidentally commited some work in
291         progress ]
292
293 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
294
295         * class.c (mono_class_setup_fields): Set class->field.first for
296         generic instances.
297
298 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
299
300         * metadata-verify.c: Verify the typespec table.
301
302 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
303
304         * metadata-verify.c: Verify the module table.
305
306 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
307
308         * metadata-verify.c: Verify the methodimpl table.
309
310 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
311
312         * metadata-verify.c: Verify the property table.
313
314 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
315
316         * debug-helpers.c (mono_method_desc_match): Add support for generic
317         glob patterns.
318
319 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
320
321         * metadata-verify.c: Verify the propertymap table.
322
323 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
324
325         * metadata-verify.c: Verify the event table.
326
327         * metadata-verify.c (search_sorted_table): Fix offset
328         calculation.
329
330 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
331
332         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
333
334 2009-05-01  Mark Probst  <mark.probst@gmail.com>
335
336         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
337         because mono_delegate_free_ftnptr() needs it.
338
339 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
340
341         * metadata-verify.c: Verify the eventmap table.
342
343 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
344
345         * metadata-verify.c: Verify the standalonesig table.
346
347 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
348
349         * metadata-verify.c: Verify the field layout table.
350
351 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
352
353         * class.c (mono_type_get_name_recurse): Don't crash
354         for ownerless generic params.
355
356         * debug-helpers.c (mono_type_get_desc): Correct the format
357         for ownerless generic params.
358
359 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
360
361         * metadata-verify.c: Verify the class layout table.
362
363 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
364
365         * metadata-verify.c: Verify the decl security table.
366
367 2009-04-30  Mark Probst  <mark.probst@gmail.com>
368
369         * domain.c (mono_domain_set_internal_with_options): Don't do
370         anything if the old domain is the same as the old one.  Fixes
371         #499326.
372
373 2009-04-30  Mark Probst  <mark.probst@gmail.com>
374
375         * appdomain.c: Deregister the reflection_info roots when unloading
376         a domain.
377
378         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
379         memory allocated by a domain and frees its disappearing links.
380
381         * boehm-gc.c, null-gc.c: Empty implementation of
382         mono_gc_clear_domain().
383
384 2009-04-30  Mark Probst  <mark.probst@gmail.com>
385
386         * appdomain.c (clear_cached_vtable): Free the static fields memory
387         block.
388
389 2009-04-30  Mark Probst  <mark.probst@gmail.com>
390
391         * gc.c: Set the correct domain when invoking finalizers.
392
393         * appdomain.c: Set the correct domain when creating threads.
394
395 2009-04-30  Mark Probst  <mark.probst@gmail.com>
396
397         * sgen-gc.c: Fix skip size for vectors.
398
399 2009-05-03  Martin Baulig  <martin@ximian.com>
400
401         * mono-debug-debugger.c
402         (mono_debugger_check_breakpoints): Check class init handlers even
403         if we don't have any method load handers.
404
405 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
406
407         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
408         returning refonly assemblies if refonly is FALSE. Fixes #499013.
409
410 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
411
412         * metadata-verify.c: Verify the field marshal table.
413
414 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
415
416         * metadata-verify.c: Verify the custom attribute table.
417
418 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
419
420         * metadata-verify.c: Verify the constant table.
421
422 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
423
424         * metadata-verify.c: Verify the memberef table.
425
426 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
427
428         * metadata-verify.c (get_coded_index_token): Remove
429         dead argument.
430
431 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
432
433         * metadata-verify.c: Verify the interfaceimpl table.
434
435 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
436
437         * verify.c: Improve error message.
438
439         * debug-helpers.c (mono_type_get_desc): Harden the code that
440         deals with VAR and MVAR.
441
442 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
443
444         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
445         part of #498692.
446
447 2009-04-23 Tom Hindle <tom_hindle@sil.org>
448
449         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
450         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
451
452 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
453
454         * security-core-clr.c: Avoid redundant checks for platform code, 
455         e.g. check for method and for class (very common) and check
456         for class and outer class (less common)...
457
458 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
459
460         * reflection.c: Avoid returning random cattrs for synthetic methods.
461         Fixes #498545.
462
463 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
464
465         * assembly.c: assemblies in the GAC should never be shadow-copied.
466
467 2009-04-26  Mark Probst  <mark.probst@gmail.com>
468
469         * domain.c, domain-internals.h: Disable
470         track_resurrection_{objects,handles}_hash in MonoDomain if using
471         SGen.
472
473 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
474
475         * metadata-verify.c: Verify the param table.
476
477 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
478
479         * metadata-verify.c (verify_typedef_table): Range check FieldList and
480         MethodList.
481
482         * metadata-verify.c (verify_method_table): Proper check the ParamList
483         field.
484
485 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
486
487         * metadata-verify.c (verify_method_table): Check for runtime
488         implemented functions such as delegate .ctors. Remove spurious
489         printf.
490         
491 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
492
493         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
494
495 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
496
497         Don't allocate MonoGenericInfo for ownerless generic params.
498         * class-internals.h (MonoGenericParam::info): Move field to ...
499         (MonoGenericParamFull): ... this.  New struct.
500         (MonoGenericContainer::type_params): Change type to
501         MonoGenericParamFull.
502         (MonoGenericParam, MonoGenericContainer): Update accessors.
503         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
504         'info' field for ownerless generic param.
505         (mono_metadata_load_generic_params): Update to changes.
506         * reflection.c (mono_reflection_create_generic_class): Likewise.
507         (reflection_methodbuilder_to_mono_method): Likewise.
508         (mono_reflection_initialize_generic_parameter): Likewise.
509
510 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
511
512         Don't use MonoGenericParamInfo for ownerless generic params.
513         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
514         use ParamInfo class at all.
515         (mono_class_from_generic_parameter): Use them.
516         (make_generic_param_class): Fix a couple of instances where 'pinfo
517         == NULL' wasn't handle.
518
519 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
520
521         * class.c (make_generic_param_class): Carve out of ...
522         (mono_class_from_generic_parameter): ... here.
523
524 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
525
526         Simplify mono_class_from_generic_parameter
527         * class-internals.h (MonoGenericParamInfo::token): New field.
528         * metadata.c (mono_metadata_load_generic_params): Initialize it
529         from metadata.
530         * class.c (mono_class_from_generic_parameter): Use it instead of
531         searching through metadata.
532
533 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
534
535         * metadata-verify.c: Add verification of the method table.
536
537 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
538
539         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
540         Delegate::Invoke optimization.
541
542 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
543
544         * appdomain.c (mono_domain_create_appdomain_internal): Free the
545         string returned by get_shadow_assembly_location_base.
546
547         * appdomain.c (get_shadow_assembly_location_base): Add a comment
548         about caller's ownership.
549
550 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
551
552         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
553         reflection memory on domain unload.
554
555         * domain.c (mono_domain_free): Don't free refobject_hash, let the
556         reflection cleanup code do it.
557
558         * domain-internals.h: Add mono_reflection_cleanup_domain.
559
560         This fixes a memory leak for managed mirrors of reflection objects
561         on domain unload. 
562
563 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
564
565         * metadata-verify.c: Implement more verification of the field table.
566
567 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
568
569         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
570         doesn't try to parse the input assembly, which can be broken.
571
572 2009-04-23  Mark Probst  <mark.probst@gmail.com>
573
574         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
575         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
576         by using the lowest bit in the link to store whether the link is
577         tracked.  Move the track_resurrection hashes into boehm-gc.c.
578
579 2009-04-22  Miguel de Icaza  <miguel@novell.com>
580
581         * Makefile.am: Split the console support in platform specific code
582         and put together a framework for making this easy in the future so
583         that we can start splitting code instead of having a mess of PLATFORM_WIN32
584
585 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
586
587         * pedump.c: Fix a warning.
588
589 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
590
591         * verify.c (mono_delegate_type_equal): Compare valuetypes using
592         mono_class_from_mono_type to avoid bad interactions with the dual representation
593         of the generic type definition.
594
595 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
596
597         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
598         get the MonoClass for the call context type as it might be a generic
599         instance.
600
601         Fixes #491483.
602
603 2009-04-21  Mark Probst  <mark.probst@gmail.com>
604
605         * object-internals.h: The Thread object has no execution_context
606         member anymore.
607
608         * threads.c, threadpool.c, threads-types.h: Accessor functions for
609         the execution context.
610
611         * appdomain.c: Bump corlib version.
612
613 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
614
615         * verify.c (do_newobj): Improve error message.
616
617 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
618
619         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
620         is nested in the filter block.
621
622         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
623         block is not fully nested.
624
625         Fixes #495656.
626
627 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
628
629         * verify.c (verify_type_compatibility_full): Compare MonoClass and
630         not MonoType to check for equality of valuetypes as the generic type
631         definition allows for two different encodings: the generic type definition
632         class or a generic instance over the GTD arguments.
633
634         Fixes #496175.
635
636 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
637
638         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
639
640         * verify.c (do_initobj): Improve error message.
641
642 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
643
644         * metadata-verify.c: Enable pe verification as the issue with #496453
645         is that the authenticode data directory have a different unspecified
646         format. Ignore it for now.
647
648         * pedump.c: Run the metadata verifier together with the IL verifier.
649
650         Fixes ##496453.
651
652 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
653
654         * metadata-verify.c: Temporarily disable pe verification due to #496453.
655
656 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
657
658         * class.c (can_access_type): Check visibility against
659         the element type for pointers and arrays.
660
661         Fixes #496150.
662
663 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
664
665         * metadata-verify.c: Fix cli and table verification to use information
666         from the MonoImage. A lot of duplicated code got killed.
667
668 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
669
670
671         This patch starts to integrate the metadata verifier with the runtime code.
672
673         This patch causes major regression in functionality for the metadata verifier
674         as cli and table verification are disabled since they require to be ported to
675         use MonoImage information.
676
677         * image.c (do_mono_image_load): Split the code in this function
678         into mono_image_load_pe_data and mono_image_load_cli_data.
679         Add     care_about_pecoff parameter to not load pecoff data.
680         Call into the metadata verifier for pecoff and cli verification.
681
682         * image.c (mono_image_open_raw): New function that doesn't perform
683         any parsing of the image contents.
684         
685         The reason for the 3 new functions is to give pedump better control
686         into the interaction with the verifier.
687
688         * metadata-internals.h: Add new functions from image.c as part of the
689         internal mono API.
690
691         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
692         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
693         to make those functions work together with the runtime.
694
695         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
696         true if the image needs to be verified.
697
698         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
699
700         * pedump.c: Use new metadata verifier API.
701
702 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
703
704         * object.c (mono_install_vtable_trampoline): Make this receive a
705         trampoline creation function instead of trampoline, allowing the JIT
706         to use a different trampoline for each vtable.
707
708 2009-04-18  Mark Probst  <mark.probst@gmail.com>
709
710         * object.c (mono_raise_exception): Don't reset the thread abort
711         exception state here.
712
713 2009-04-18  Mark Probst  <mark.probst@gmail.com>
714
715         * icall-def.h: New icall for getting the thread abort exception
716         state for a thread.
717
718         * object.c, thread.c, object-internals.h: A thread's abort
719         exception state is now a GC handle.  To get the object it stands
720         for, we must move it into the current app domain, if it's
721         different than the one where it originated from.
722
723         * appdomain.c: Bump corlib version.
724
725         * domain.c, domain-internals.h: New function for setting the
726         domain and migrate the thread abort exception or not.
727
728 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
729
730         * metadata-verify.c: Add initial verification of the
731         field table.
732
733 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
734
735         * metadata-verify.c: Add a macro to conditionally enable
736         dumping of verification information. Add  make_coded_token
737         and search_sorted_table to enable search sorted tables
738         by a given coded token.
739
740 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
741
742         * metadata-verify.c: Add array mapping from table index
743         to description offset. Add get_col_offset and get_col_size
744         functions.
745
746 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
747
748         * metadata-verify.c: Add remaining table descriptions offsets.
749         Add remaining coded index descriptions.
750
751 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
752
753         * metadata-verify.c: Fixed constant table description.
754         Fixed calculation of HasCustomAttribute coded index size.
755         Fixed calculation of size for many table indexes. 
756
757 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
758
759         * pedump.c (dump_metadata): Dump table offset instead
760         of useless pointer in memory.
761
762 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
763
764         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
765
766 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
767
768         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
769         a missing of for interface types.
770
771 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
772
773         * metadata-verify.c (verify_pe_optional_header): Add comment of why
774         the code is commented.
775
776         * metadata-verify.c (verify_resources_table): Remove spurious printf
777         and don't fail if there are unmanaged resources. Gmcs generates a useless
778         one     for all assemblies - I bet it's some MS compatibility junk.
779
780 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
781
782         * metadata-verify.c (verify_typedef_table): Verify the extends field.
783
784         * metadata-verify.c (mono_image_verify): Add a is_corlib.
785
786         * verify-internals.h: Same.
787
788         * pedump.c: Fix for mono_image_verify new signature.
789
790 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
791
792         * metadata-verify.c (verify_typedef_table): Verify for some invalid
793         flags combinations.
794
795 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
796
797         * metadata-verify.c (verify_module_table): Ignore the generation field.
798
799 2009-04-15  Martin Baulig  <martin@ximian.com>
800
801         * debug-mono-symfile.c
802         (mono_debug_symfile_lookup_location): Don't print a warning for
803         unknown extended opcodes if they're within 0x40 and 0x7f.
804
805 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
806
807         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
808         invoke signatures returning an enum. Fixes #494847.
809
810 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
811
812         * metadata-verify.c: Initial code to verify the typedef table.
813
814 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
815
816         * verify.c (mono_method_verify): Don't fail if an unconditional branch
817         with non empty stack happens before the beginning of a try block.
818
819         Fixes #494812.
820
821 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
822
823         * metadata-verify.c: Verify typename and typenamespace fields of
824         the typeref table.
825
826 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
827
828         * metadata-verify.c: Initial code to verify the typeref table.
829
830 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
831
832         * verify.c (verify_delegate_compatibility): Fix error message.
833
834 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
835
836         * security-core-clr.c: Fix typo
837
838 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
839
840         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
841         a MonoGHashTable to keep its values alive.
842         (emit_marshal_boolean): Fix a warning.
843
844 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
845
846         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
847         not have any interface configured for IPv4/IPv6.
848
849 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
850
851         * assembly.c: fix typo in error message.
852
853 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
854
855         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
856         allocating the location holding the this argument to prevent
857         'too many root sets' errors.
858
859         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
860         to mark fields as special static.
861         (mono_field_static_get_value): Handle special static fields.
862         (mono_field_static_set_value): Ditto.
863
864         * class-internals.h (struct _MonoClassField): Document this.
865
866 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
867
868         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
869           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
870           case.  This will handle when managed code returns null to native code.
871
872         Code is contributed under MIT/X11 license.
873
874 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
875
876         * object.c (build_imt_slots): Changing a free to a g_free to match
877           the g_malloc0 in add_imt_builder_entry that allocated this memory.
878
879         Code is contributed under MIT/X11 license.
880
881 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
882
883         * marshal.c (emit_marshal_boolean): Adding code to ensure that
884           the correct TRUE value is passed through the marshaling layer.
885
886         Code is contributed under MIT/X11 license.
887
888 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
889
890         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
891         correctly. Fixes #492330.
892         
893         * marshal.c: Fix the embedding of object pointers into JITted code in
894         the native-to-managed wrappers by allocating some GC tracked memory, and
895         embedding the address of that.
896
897 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
898
899         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
900         pointers into the vtable.
901
902 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
903
904         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
905
906         * verify.c (verify_ldftn_delegate): Improve error message.
907
908 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
909
910         * reflection.c (my_mono_class_from_mono_type): Remove.
911
912 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
913
914         Prepare to reduce memory usage of owner-less generic parameters (1/n)
915         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
916         and constraints fields into ...
917         (MonoGenericParamInfo): ... this.
918         (mono_generic_param_info, mono_generic_container_get_param_info):
919         New accessors.
920         * class.c, debug-helpers.c, icall.c: Update to changes.
921         * metadata.c, reflection.c, verify.c: Likewise.
922
923 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
924
925         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
926
927         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
928         
929         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
930         booleans with sbytes.
931
932 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
933
934         * class.c (can_access_instantiation): Verify accesibility of element types
935         for arrays and pointers.
936
937         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
938
939         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
940
941         Fixes #493068.
942
943 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
944
945         * verify.c (do_invoke_method): Improve error messages.
946
947 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
948
949         * verify.c:  Fixing the MSVC build.
950
951         Code is contributed under MIT/X11 license.
952
953 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
954
955         * security-core-clr.c: Simplify get_reflection_caller not to call
956         mono_method_get_last_managed (another stack walk) and adjust the
957         callers to handle a (should not happen) NULL return value.
958
959 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
960
961         Add accessors to some MonoGenericParam fields
962         * class-internals.h (mono_generic_param_owner): New accessor.
963         (mono_generic_param_num): Likewise.
964         (mono_type_get_generic_param_owner): New helper.
965         (mono_type_get_generic_param_num): New helper.
966         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
967
968 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
969
970         * class-internals.h (mono_generic_container_get_param): New wrapper.
971         * class.c, icall.c, metadata.c, verify.c: Use it.
972
973 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
974
975         Fix gtest-252.cs
976         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
977         the standard case/loop.  In particular, don't complain about
978         references to generic type definitions.
979
980 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
981
982         * debug-helpers.c (dis_one): Decode string arguments.
983
984 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
985
986         * pedump.c (dump_verify_info): Dump type name correctly.
987
988 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
989
990         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
991         are larger than code size.
992
993         This can happen in valid code if the try/catch block is not followed by any instruction
994         and do a backward branch on the leave instruction.
995
996         Fixes #492494.
997
998 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
999
1000         * security-core-clr.c: Fix typo while comparing second method names
1001         in can_avoid_corlib_reflection_delegate_optimization
1002
1003 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1004
1005         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
1006
1007         Fixes #487738.
1008
1009 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1010
1011         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
1012         a MVAR using a class context.
1013
1014         Fixes #490335.
1015
1016 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
1019
1020         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
1021
1022         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
1023         functions supplied by the JIT for the SGEN GC.
1024
1025         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
1026         
1027 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
1028
1029         monitor.c (mono_monitor_try_enter_internal):
1030         Added calls to profile monitor contentions.
1031         Also duplicated a small piece of code (the "get the monitor" logic)
1032         from the fast path to the slow path, and changed the relevant goto
1033         statements, so that monitor acquisition events can be emitted from the
1034         slow path (this is by Paolo Molaro).
1035
1036 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
1037
1038         * profiler.c, profiler.h, profiler-private.h:
1039         Added support for profiling monitor contentions.
1040
1041 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
1042
1043         * metadata-verify.c: Verify the modules table.
1044
1045 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
1046
1047         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
1048         using the context of the method been verifier and not of the method been called.
1049
1050         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
1051         safely inflate generic types. 
1052
1053 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
1054
1055         * security-core-clr.c: Change the strategy for checking the 
1056         "reflection using delegates optimization" to avoid unneeded 
1057         attributes in multiple class libraries.
1058
1059 2009-04-02  Mark Probst  <mark.probst@gmail.com>
1060
1061         * sgen-gc.c: Remove object element in the disappearing link struct
1062         by storing the object pointer in the link.
1063
1064 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1065
1066         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
1067
1068 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
1071
1072         * verify.c (mono_method_verify): Do proper bounds checking of exception
1073         clause ranges.
1074
1075 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1076
1077         * loader.c (mono_field_from_token): Don't crash if the field parent could
1078         not be decoded.
1079
1080 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1081
1082         * sgen-gc.c: Execute critical finalizers after ordinary
1083         finalizers.
1084
1085         * class-internals.h, domain.c: Add CriticalFinalizerObject to
1086         mono_defaults.
1087
1088 2009-03-31 Jb Evain <jbevain@novell.com>
1089
1090         * verify.c (do_ldstr): don't check if a string is in the user strings
1091         heap if the current image is dynamic.
1092
1093 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1094
1095         * sgen-gc.c: Wait until the last finalizer has executed when
1096         returning from WaitForPendingFinalizers.
1097
1098 2009-03-31  Martin Baulig  <martin@ximian.com>
1099
1100         * mono-debug-debugger.h (MonoDebuggerEvent): Add
1101         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
1102         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
1103         (mono_debugger_event_create_appdomain): New function.
1104         (mono_debugger_event_unload_appdomain): New function.
1105
1106         * appdomain.c (mono_domain_create_appdomain_internal): Call
1107         mono_debugger_event_create_appdomain().
1108
1109 2009-03-31  Martin Baulig  <martin@ximian.com>
1110
1111         * mono-debug-debugger.c
1112         (mono_debugger_register_class_init_callback): Also register the
1113         class init callback if the class is already initialized to make
1114         things work with shadow copied assemblies.
1115
1116 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
1117
1118         * security-core-clr.c
1119         (mono_security_core_clr_ensure_reflection_access_field): Let 
1120         critical code access the field (just like we do for methods). Use
1121         check_field_access helper.
1122         (mono_security_core_clr_ensure_reflection_access_method): Use 
1123         check_field_access helper.
1124
1125 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1126
1127         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
1128         call the run-finalize function directly.
1129
1130         * gc.c, gc-internal.h: Make run_finalize() non-static.
1131
1132 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1133
1134         * sgen-gc.c: Use a separate struct for disappearing links.
1135
1136 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
1137
1138         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
1139         * MaxIOVectorLength enabled, just ignore them.
1140         Fixes bug #349688.
1141
1142 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1143
1144         * metadata-verify.c: Fix eglib build.
1145
1146 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1147
1148         * threads-types.h: Fix the win32 build.
1149
1150 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
1151
1152         * class.c: move coreclr inheritance/override checks to 
1153         security-core.clr.c
1154         * security-core.clr.c|h: add code from class.c with additional
1155         documentation. Fix override check when the method is not critical.
1156
1157 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1158
1159         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
1160         (match_class): Ditto.
1161
1162 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1163
1164         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
1165
1166         * metadata-verify.c: Implement table layout row size calculation. Verify
1167         the total size of the tables.
1168
1169 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1170
1171         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
1172
1173 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1174
1175         * appdomain.c:
1176         * console-io.[ch]: added new mono_console_init() to make sure that
1177         file descriptors 0, 1 and 2 are opened.
1178         Bug #489019 fixed.
1179
1180 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
1181
1182         * appdomain.h: Export a new callback type and a new function to
1183         set this callback. This allow a mono host to provide it's own
1184         definition for "platform code".
1185         * metadata-internals.h: Add a core_clr_platform_code flag on 
1186         _MonoImage to (cache and) know if it is representing platform 
1187         code.
1188         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
1189         on platform code images.
1190         * security-core-clr.c|h 
1191         (mono_security_set_core_clr_platform_callback): Allow the host
1192         to provide it's own platform check definition.
1193         (mono_security_core_clr_determine_platform_image): Detect if an 
1194         image is platform code (using the specified callback).
1195         (mono_security_core_clr_is_platform_image): Return cached value 
1196         for platform code.
1197
1198 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1199
1200         * threads.c (mono_create_thread): New helper function to wrap CreateThread
1201         which has different parameter types for the 'tid' argument in windows and
1202         the io-layer.
1203
1204         * appdomain.c attach.c threads.c: Use the new helper.
1205
1206 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1207
1208         * metadata-verify.c: Verify valid table bits.
1209
1210 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1211
1212         * metadata-verify.c (verify_metadata_header): Store size in the size field.
1213
1214         * metadata-verify.c: Add initial table schema verification.
1215
1216 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1217
1218         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
1219         obtain the refclass argument needed by mono_param_get_objects (). Fixes
1220         #488383.
1221
1222         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
1223
1224         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
1225
1226 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
1227
1228         * security-core-clr.c: Add/update documentation
1229
1230 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * marshal.c (emit_marshal_object): Generate code to throw an exception
1233         instead of throwing it. Fixes #488670.
1234
1235 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
1236
1237         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
1238         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
1239         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
1240         and add a call to mono_security_core_clr_ensure_delegate_creation
1241         to do the extra checks required by CoreCLR.
1242         * security-core-clr.c|h: Add function to check delegate creation,
1243         both in the binding and accessibility, under CoreCLR.
1244
1245 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
1246
1247         * reflection.c (mono_reflection_create_dynamic_method): when 
1248         coreclr is enabled make sure that every resolved object are
1249         checked (e.g. field and method access).
1250         * security-core-clr.c|h: Add function to check objects resolved
1251         when a dynamic method is created.
1252
1253 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1254
1255         * metadata-verify.c: Cache directory rva translations.
1256
1257         * metadata-verify.c: Add cli-header and streams verification.
1258
1259 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1260
1261         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
1262         the wrong offset (8 instead of 6).
1263
1264 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
1267         methods, return the native function address itself. Fixes
1268         #487758.
1269
1270 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1271
1272         * console-io.c: some of the values for control characters might not be
1273         present.
1274
1275 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
1276
1277         * exception.c|h: Add helpers to create [Field|Method]AccessException
1278         * icall.c: Add required coreclr check calls for field reflection.
1279         Move the existing (method) check logic into security-core-clr.c
1280         * security-core-clr.c: Add functions to check if the access of a
1281         field or method is allowed when reflecting under coreclr. This is
1282         mostly done using a stack walk to find the "real" caller: i.e. the
1283         code that is calling the reflection
1284
1285 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * gc-internal.h: Change location of gc_wrapper.h
1288
1289 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
1290
1291         * class.c: Simplification to coreclr checks for overrides that
1292         makes it easier to set breakpoints.
1293
1294 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
1295
1296         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
1297         mono_security_core_clr_method_level): Avoid potential 
1298         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
1299         user/application code) and make it easier to set breakpoints
1300
1301 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1302
1303         * metadata-verify.c: Reject cli header tables that mono don't handle.
1304
1305 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1306
1307         * pedump.c: Fix CLI header dumping.
1308
1309 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1310
1311         * metadata-verify.c: More CLI header verification.
1312
1313 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1314
1315         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
1316
1317 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1318
1319         * metadata-verify.c: Initial verification of the CLI header.
1320
1321 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1322
1323         * metadata-verify.c (verify_resources_table): Fix verification of zero
1324         sized resource section and id entries count.
1325
1326 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * icall.c: Handle user types in many Type icalls. Fixes #486303.
1329
1330 2009-03-17  Jb Evain  <jbevain@novell.com>
1331
1332         * profiler.c: call mono_gc_base_init from mono_profiler_load.
1333
1334 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
1337         (mono_gc_make_descr_for_array): Ditto.
1338
1339 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1340
1341         * verify.c (mono_verifier_is_class_full_trust): Add support for
1342         CoreCLR security mode where trusted assemblies are defined as
1343         "platform code".
1344
1345 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1346
1347         * metadata-verify.c: Add minimal PECOFF resource verification.
1348
1349 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1350
1351         * metadata-verify.c: Be less restrictive with some coff fields.
1352
1353 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1354
1355         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
1356         params as boxed values on stack. Fixes #485706.
1357
1358 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1359
1360         * console-io.c: the termios values may vary in different flavors of unix.
1361
1362 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1363
1364         * console-io.[ch]: return the entire set of control characters when
1365         initializing the terminal.
1366         * appdomain.c: bump corlib version.
1367
1368 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
1369
1370         * mono-perfcounters.c: added support for in-process custom
1371         performance counters.
1372
1373 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1374
1375         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
1376
1377 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1378
1379         * metadata-verify.c: Verify the data pointed by the import table. 
1380
1381 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1382
1383         * metadata-verify.c (load_data_directories): Store data
1384         directory contents.
1385
1386         * metadata-verify.c: Verify the import table. 
1387
1388 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1389
1390         * metadata-verify.c: Verify data directories.
1391
1392 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1393
1394         * metadata-verify.c: Check section header flags.
1395
1396 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
1397
1398         * appdomain.c: if the assembly name is a shadow-copied file, return
1399         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
1400         in mono_make_shadow_copy.
1401         * icall.c: if the assembly name is a shadow-copied file, replace it
1402         with the original assembly path.
1403
1404         Bug #484244 fixed. NUnit tests for corlib can be run without
1405         --noshadow now.
1406
1407 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
1410         entries when the table is reallocated.
1411
1412         * icall.c: Allocate the memory used by the mono_ptr_array macros using
1413         mono_gc_alloc_fixed () since it contains GC refs.
1414
1415 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1416
1417         * reflection.c (ensure_complete_type): New helper function to call
1418         type resolve handlers for unfinished dynamic types.
1419         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1420
1421 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1422
1423         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1424         #483247.
1425
1426 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1427
1428         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1429
1430 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1431
1432         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1433         between GCHandles of type WeakTrackResurrection and the objects they
1434         point to.
1435
1436         * gc.c: Partly implement the sematics of GCHandles of type 
1437         WeakTrackResurrection: these handles should only be cleared after the
1438         finalizer of the object they are pointing to has ran.
1439
1440 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1441
1442         * icall.c: Partially revert r126631 because using the jump
1443         trampolines for generic shared methods makes it superfluous.
1444
1445 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1446
1447         * threads.c (handle_store): Create the 'threads' hash table with the proper
1448         MONO_HASH_VALUE_GC type.
1449
1450 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1453         FIRST_GC_TRACKED.
1454
1455         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1456         and LAST_GC_TRACKED as a GC root.
1457
1458         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1459
1460         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1461         the static data even if it consists of 1 reference.
1462
1463         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1464         if there is a GC descriptor.
1465
1466         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1467         instead of through the GC since they contain no object references.
1468
1469 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1470
1471         * generic-sharing.c (instantiate_other_info): Always return a jump
1472         trampoline for method code.
1473
1474 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1475
1476         * culture-info-tables.h: generated to include the en-tt culture.
1477
1478 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1479
1480         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1481         capture the thread context.
1482
1483         * object.c (mono_async_result_new): Cache the invoke wrappers to
1484         ExecutionContext::Capture.
1485
1486 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1487
1488         * marshal.h: Add a prototype for what mono_compile_method returns
1489         for invoke wrappers.
1490
1491         * gc.c: Use the new prototype declaration.
1492
1493 2009-03-04  Geoff Norton  <gnorton@novell.com>
1494
1495         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1496         * gc-internal.h:
1497         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1498
1499 2009-03-04  Martin Baulig  <martin@ximian.com>
1500
1501         * mono-debug.h
1502         (mono_debugger_runtime_invoke): Removed.
1503
1504         * mono-debug-debugger.c
1505         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1506
1507 2009-03-02  Martin Baulig  <martin@ximian.com>
1508
1509         * mono-debug.h
1510         (mono_debugger_unhandled_exception): Removed.
1511         (mono_debugger_handle_exception): Removed.
1512         (mono_debugger_throw_exception): Removed.
1513
1514         * mono-debug.c
1515         (mono_debug_debugger_version): Bump to 5.
1516
1517         * mono-debug-debugger.c: Moved the exception handling code to
1518         ../mini/debug-mini.c
1519
1520 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1523         finalize_objects_hash.
1524
1525         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1526         
1527         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1528         field.
1529
1530         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1531         cache.
1532
1533         * image.c (mono_image_close): Free it.
1534         
1535         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1536         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1537         on the this argument.
1538
1539         * gc.c (run_finalize): Optimize the calling of the finalizers.
1540
1541 2009-03-03  Martin Baulig  <martin@ximian.com>
1542
1543         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1544         of the `MonoGenericInst' changes.
1545
1546 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1547
1548         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1549         mono_array_class_get_cached to reduce locking contention. Extract
1550         a domain var.
1551
1552         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1553         intermediary managed arrays. Use caching version of mono_array_new
1554         to allocate the result array.
1555
1556         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1557
1558         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1559
1560         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1561         to reduce locking contention.
1562
1563 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1564                 
1565         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1566         thunk builder code for the non-interface case.
1567
1568 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1569
1570         * object.c (get_generic_virtual_entries): New helper function to collect
1571         the virtual generic method instances which need to be added to an IMT
1572         thunk.
1573         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1574         Instead of creating a new IMT thunk, reset the vtable slot to the
1575         trampoline, the thunk will be created the next time the trampoline is called.
1576         (build_imt_slots): Add support for virtual generic methods in interfaces by
1577         adding to the IMT thunk all the methods registered using 
1578         mono_method_add_generic_virtual_invocation ().
1579
1580         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1581         (struct _MonoIMTCheckItem): Ditto.
1582
1583         * object.c (mono_method_add_generic_virtual_invocation): Take a
1584         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1585         the IMT thunk to include all items.
1586         
1587         * object.c (mono_class_create_runtime_vtable): Add a missing
1588         mono_loader_unlock ().
1589
1590 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1593
1594         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1595
1596 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1597
1598         * object-internals.h: Rename _MonoReflectionEvent to
1599         MonoReflectionMonoEvent so it reflects the right managed type.
1600         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1601
1602         * icall.c:
1603         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1604         type.
1605
1606 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1607
1608         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1609         intermediary managed arrays. Use caching version of mono_array_new
1610         to allocate the result array.
1611
1612 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1613
1614         * reflection.c: Use cached version of mono_array_new alongside
1615         the mono_reflection_get_custom_attrs_by_type call path.
1616
1617 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1618
1619         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1620         intermediary managed arrays. Use caching version of mono_array_new
1621         to allocate the result array.
1622
1623         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1624
1625 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1626
1627         * icall.c: Add small implementation of a growable stack bound array.
1628
1629         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1630
1631         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1632         intermediary managed arrays. Use caching version of mono_array_new
1633         to allocate the result array.
1634
1635 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1636
1637         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1638         helps Enum::CompareTo to be implemented without reboxing all enums
1639         to their underlying type.
1640 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1641
1642         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1643         since it acquires a global lock leading to scalability problems.
1644
1645         * profiler.c: Make the stat profiler work with multiple appdomains, this
1646         currently only works when no appdomains are unloaded.
1647
1648 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1649
1650         * appdomain.c: make the check to avoid copying when the assembly is
1651         already shadow copied actually work.
1652
1653 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1654
1655         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1656
1657         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1658         changes to the managed side.
1659
1660 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1661
1662         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1663         classes + a separate lock for it, as it is used frequently at runtime, not
1664         just during metadata loading/JIT compilation.
1665
1666         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1667         for szarrays.
1668         
1669         * object-internals.h (mono_class_from_name_cached): New macro to cache
1670         the results of the lookup locally without having to declare a static
1671         variable to hold it.
1672         (mono_class_get_field_from_name_cached): Ditto.
1673         (mono_array_class_get_cached): Ditto.
1674
1675         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1676         the new macros.
1677         
1678         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1679         slower search in metadata.
1680
1681         * pedump.c: Fix a warning.
1682
1683 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * reflection.c (encode_locals): Add checks for user types.
1686         (method_encode_clauses): Ditto.
1687         (method_encode_code): Ditto.
1688         (mono_image_create_token): Ditto.
1689
1690         * object-internals.h: Change the type of more fields from MonoReflectionType*
1691         to MonoObject*.
1692
1693 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1694
1695         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1696         the a thread does not suspend within 100ms.
1697
1698         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1699         in addition to StopRequested as well.
1700
1701         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1702
1703         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1704         search the method_hash before inserting a new entry, to avoid crashes when
1705         the same method is inserted multiple times, causing the old 
1706         MonoDebugMethodInfo structure to be freed by the value dtor function.
1707
1708 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1709
1710         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1711         SO_EXLUSIVEADDRUSE where available.
1712
1713 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1714
1715         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1716         runtime invoke wrappers, this time it is string ctor wrappers, which
1717         pass a dummy string as 'this' instead of their obj argument. Fixes
1718         #478473.
1719
1720 2009-02-21  Jb Evain  <jbevain@novell.com>
1721
1722         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1723         only get create_culture once.
1724
1725 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1728         check before the locking.
1729         
1730         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1731         (mono_reflection_create_runtime_class): Ditto.
1732         (mono_reflection_sighelper_get_signature_local): Ditto.
1733         (mono_reflection_sighelper_get_signature_field): Ditto.
1734
1735         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
1736         is a System.MonoType object or similar.
1737         (monotype_cast): New helper function to cast a MonoObject to a 
1738         MonoReflectionType object.
1739
1740         * object-internals.h: Change MonoReflectionType* members in structures to
1741         MonoObject* members to force the usage of the monotype_cast () function.
1742
1743         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
1744         structures/arrays. This causes us to assert instead of crashing when 
1745         instances of user defined subclasses of System.Type are encountered.
1746
1747 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1748
1749         * cil-coff.h:
1750         * icall-def.h:
1751         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
1752         win32 resource loaded from a PE file.
1753
1754         * image.c: fix mono_image_lookup_resource.
1755
1756 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1757
1758         * icall-def.h:
1759         * threads-types.h:
1760         * threads.c: added internal call for WaitHandle.SignalAndWait.
1761
1762 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
1763
1764         * cominterop.c : Adding cominterop_type_from_handle and 
1765           registering it as an icall.  Replacing all references
1766           to type_from_handle.
1767
1768         Code is contributed under MIT/X11 license.
1769
1770 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1771
1772         * Makefile.am: Add lock-tracer.h and lock-trace.c.
1773
1774         * appdomain.c: Call the tracer init function.
1775
1776         * domain-internals.h: Enable the tracer for the domain locks.
1777
1778         * image.c: Enable the tracer for image locks.
1779
1780         * loader.c: Enable the trace for the loader lock.
1781
1782         * lock-tracer.h:
1783         * lock-tracer.c: Initial implementation of the lock trace utility.
1784         The tracer requires a compile time define to be enabled and a env var
1785         to be enabled at runtime.
1786
1787 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1788
1789         * domain.c (mono_domain_code_foreach): Improve documentation.
1790
1791 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1792
1793         * appdomain.c:
1794         * generic-sharing.c:
1795         * object.c:
1796         * reflection.c:  Adjust locking order to the new semantics where the loader lock
1797         comes first.
1798
1799 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1800
1801         * domain.c: Add mono_domain_code_* functions that perform locking
1802         around the domain codeman.
1803
1804         * domain-internals.h: Export those functions.
1805
1806         * object.c: Use new functions instead of acquiring the domain lock.
1807
1808 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
1811         delegate. Fixes #477396.
1812
1813 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * reflection.c (create_custom_attr): Get rid of alloca.
1816
1817 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
1818
1819         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
1820           Adding exception handling for all CCW calls.
1821
1822         Code is contributed under MIT/X11 license.
1823
1824 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1825
1826         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
1827
1828         * marshal.c (emit_marshal_boolean): Add null checks to the new 
1829         native->managed marshalling code. Fixes #476247.
1830
1831 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1832
1833         * class.c (mono_class_get_vtable_entry): Move the addition of
1834         static rgctx invoke wrappers for vtable methods here, this simplifies
1835         a lot of code and causes fewer rgctx wrappers to be created.
1836
1837         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
1838         name of the statistics to begin with an uppercase.
1839
1840 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1841
1842         * reflection.c: Revert previous change as it breaks the build.
1843         
1844 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1845
1846         * verify.c: Properly handle SZARRAY element type.
1847
1848         Fixes #474271.
1849
1850 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1851
1852         * reflection.c (mono_image_create_method_token): Correctly encode
1853         MethodDef MemberRefParent token.
1854
1855         Fixes #472845.
1856
1857 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * image.c (mono_image_close): Delete the critical section before
1860         freeing the memory holding it.
1861
1862 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
1865         Fixes #476257.
1866
1867 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1868
1869         * pedump.c (main): Call mono_marshal_init so pedump
1870         doesn't crash.
1871
1872 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1873
1874         * loader.c (method_from_memberref): Properly fix #474271 and
1875         don't break the runtime bad.
1876
1877 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
1880         (mono_domain_alloc0): Ditto.
1881
1882 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1883
1884         * loader.c (method_from_memberref): Don't abort if the array
1885         method is not found. A regular loader failure is more informative
1886         and correct.
1887
1888         Fixes #474271.
1889
1890 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1891
1892         *loader.c: Guard MonoImage::method_cache/methodref_cache
1893         using the image lock instead of the loader lock.
1894
1895         * metadata.h: Add comments about which fields are protected by
1896         the image lock.
1897
1898 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1899
1900         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
1901
1902         * generic-sharing.c (mono_method_construct_object_context): Remove the
1903         wrapper_type == NONE assert, it is not needed.
1904
1905 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * reflection.c (clear_cached_object): New helper function.
1908         (mono_method_clear_object): New function to clear the cached reflection
1909         objects for a dynamic method.
1910
1911         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
1912         Partly fixes # 463323.
1913         
1914 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1915
1916         * class.c:
1917         * loader.c:
1918         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
1919
1920 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1921
1922         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
1923         take the image lock instead of the loader lock.
1924
1925         * metadata-internals.h: Export new functions.
1926
1927 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1928
1929         * domain.c (app_config_parse): Remove another use of stat that is
1930         not necessary as g_file_get_contents already does the presence
1931         check. 
1932
1933 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1934
1935         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
1936
1937         * marshal.c: Move the bstr handling code to cominterop.c.
1938
1939         * marshal.c: Remove some COM interop code missed previously.
1940
1941 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1942
1943         More Paolo patches from the Wii port:
1944         
1945         * security.c: Remove ves_icall_System_Environment_get_UserName
1946         from here.
1947
1948         * icall.c: And put ves_icall_System_Environment_get_UserName
1949         here. 
1950
1951         * appdomain.c (mono_set_private_bin_path_from_config): Remove
1952         redundant call to stat that was only used to test for the file
1953         existence.   Patch from Paolo.
1954
1955         * gc.c (run_finalize): If COM is disabled, do not link in
1956         mono_marshal_free_ccw.
1957
1958         * generic-sharing.c: Use alloca.h here as well.
1959
1960 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
1961
1962         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
1963
1964 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * cominterop.c cominterop.h: New files.
1967
1968         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
1969         function/typedefs which are needed by cominterop.c global.
1970
1971 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1972
1973         * generic-sharing.c: Don't take the loader lock to guard image
1974         mempool allocs.
1975
1976 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1977
1978         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
1979         called without the loader lock which is required to guard MonoImage:tokens.
1980
1981 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1982
1983         * class.c:
1984         * metadata.c:
1985         * method-builder.c:
1986         * marshal.c:
1987         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
1988
1989 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1990
1991         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1992         Rework the code to use regular mono_image_alloc/0.
1993
1994         * loader.c: Rework the code to use regular mono_image_alloc/0.
1995
1996         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1997
1998 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
1999
2000         * object-internals.h : Fixing a typo in the 
2001           MonoReflectionComVisibleAttribute struct.
2002
2003         * marshal.c (cominterop_com_visible): Check the implemented 
2004           interfaces for ComImport.
2005
2006         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
2007           assume that bools should be treated as VARIANTBOOLs.
2008
2009         * marshal.c (emit_marshal_boolean): Adding cases for 
2010           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
2011
2012         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
2013           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
2014
2015         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
2016           should be treated as VARIANTBOOLs.    
2017
2018         Code is contributed under MIT/X11 license.
2019
2020 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2021
2022         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
2023         allocation with the image lock.
2024
2025 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2026
2027         This patch is the last of a series to remove explicit reference of MonoImage::mempool
2028         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
2029
2030         * object.c: Add mono_string_to_utf8_image.
2031
2032         * object-internals.h: Export mono_string_to_utf8_image.
2033
2034         * reflection.c: Rework all explicit references to the the image mempool to go thought
2035         the mono_image_alloc set of functions.
2036
2037 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2038
2039         This patch is the third of a series to remove explicit reference of MonoImage::mempool
2040         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
2041         and generics-sharing.c.
2042
2043         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
2044         as first argument. Note that this function remains broken as it doesn't perform locking around the
2045         mempool allocation.
2046
2047         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
2048
2049         * image.c: Add g_slist_append_image.
2050
2051         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
2052         the supplied image for allocation. Move code into mono_metadata_field_info_full.
2053
2054         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
2055         Fix all related code to do the same.
2056
2057         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
2058
2059         * metadata-internals.h: Fix the signatures.
2060
2061 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2062
2063         This patch is the second of a series to remove explicit reference of MonoImage::mempool
2064         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
2065         and similar to work using MonoImage.
2066
2067         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
2068         MonoMemPool.
2069
2070         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
2071
2072         * class.c (mono_metadata_signature_deep_dup): Same.
2073
2074         * class.c (inflate_generic_type): Same.
2075
2076         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
2077
2078         * metadata.c (mono_metadata_signature_dup_full): Same.
2079
2080         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
2081         mono_metadata_signature_dup_full.
2082
2083         * metadata.c (mono_metadata_type_dup): Same.
2084
2085         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
2086
2087         * reflection.c: Same.
2088
2089         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
2090
2091         * metadata-internals.h: Fix the signatures.
2092
2093         * class-internals.h: Same.
2094
2095 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2096
2097         This patch is the first of a series to remove explicit reference of MonoImage::mempool
2098         and use mono_image_alloc set of functions instead. 
2099
2100         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
2101         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
2102         of a MonoMemPool.
2103
2104         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
2105
2106         * class.c (g_list_prepend_mempool): Removed.
2107
2108         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
2109
2110         * image.c: Add g_list_prepend_image.
2111
2112         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
2113
2114         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
2115
2116
2117 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2118
2119         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
2120         mono_image_unlock.
2121
2122         * image.c (mono_image_init): Init the lock field.
2123  
2124         * image.c (mono_image_init): Cleanup the lock field.
2125
2126         * image.c: Add mono_image_(un)lock functions.
2127
2128 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2129
2130         * class.c, class-internals.h: mono_method_get_context_general()
2131         combines the functionality of mono_method_get_context() and
2132         mini_method_get_context().
2133
2134         * generic-sharing.c, domain-internals.h:
2135         mono_method_construct_object_context() and
2136         mono_domain_lookup_shared_generic() moved from mini.
2137
2138         * icall.c (ves_icall_InternalInvoke): Handle the case where the
2139         method doesn't have the correct instantiation because it's shared
2140         generic code.  Fixes #473999.
2141
2142 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
2145
2146         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
2147         
2148 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2149
2150         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
2151
2152         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
2153
2154         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
2155         and recheck the cache for dups after it.
2156
2157         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
2158
2159         Fixes one of the deadlocks found in #473150.
2160
2161 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
2162
2163         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
2164           For Win32, add additional break conditions for accept.
2165
2166         Code is contributed under MIT/X11 license.
2167
2168 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2169
2170         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
2171         lazily initialize the native wrapper cache.
2172         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
2173         cache, since they are different from the normal wrappers.
2174
2175         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
2176
2177         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
2178         AOT compiled native wrappers.
2179
2180 2009-02-09  Geoff Norton  <gnorton@novell.com>
2181
2182         * appdomain.h:
2183         * security-core-clr.c: Allow enabling core-clr from the embedding
2184         API.
2185
2186 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2187
2188         * socket-io.c: when requesting all the local ips, if there are no
2189         interfaces up and running, MS returns 127.0.0.1.
2190
2191 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2192
2193         * mono-perfcounters-def.h: processor time is an inverse time.
2194         Fixes bug #468625.
2195
2196 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2197
2198         * socket-io.c: an empty host name returns the list of local IPs.
2199         Fixes bug #386637 part 1/2.
2200
2201 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2202
2203         * verify.c (mono_class_interface_implements_interface): Call
2204         mono_class_setup_interfaces ().
2205         (merge_stacks): Ditto.
2206
2207 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2208
2209         * class.c (mono_class_setup_interfaces): New function to lazily initalize
2210         klass->interfaces.
2211         (mono_generic_class_get_class): Don't initalize klass->interfaces.
2212         (mono_generic_class_get_class): Ditto.
2213
2214 2009-02-06  U-QUACK\miguel  <miguel@quack>
2215
2216         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
2217         they live in security.c
2218
2219         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
2220         another bit from Paolo's code.
2221
2222 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2223
2224         * object.c (build_imt_slots): Add a small optimization to avoid inflating
2225         methods which will be discarded by add_imt_builder_entry ().
2226
2227         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
2228         need to be boxed.
2229
2230         * loader.c: Add a statistics for the size of the memberref signature cache.
2231         
2232         * loader.c (find_cached_memberref_sig): New helper function.
2233         (cache_memberref_sig): Ditto.
2234
2235         * loader.c: Cache the result of parsing memberref signatures, since otherwise
2236         they will be parsed again for every generic instantiation, leading to unbounded
2237         memory growth.
2238
2239 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2240
2241         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
2242         parameters of generic methods.
2243
2244         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
2245         after the original method is copied to the inflated method.
2246         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
2247
2248         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
2249         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
2250
2251         * class.c metadata.c: Update after the changes above.
2252
2253 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2254
2255         * metadata-verify.c: Simplified error handling and added
2256         section table validation.
2257
2258 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * class-internals.h (MonoClassExt): New structure containing rarely used
2261         fields of MonoClass.
2262         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
2263         through a new 'ext' field.
2264
2265         * class.c (mono_class_alloc_ext): New helper function to allocate 
2266         class->ext.
2267
2268         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
2269
2270 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2271
2272         * object.c (mono_object_get_virtual_method): Properly inflate
2273         generic methods.  Fixes #472692.
2274
2275 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2276
2277         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
2278         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
2279         for the parent type, the created type must be ready to be used on a generic
2280         instantiation.
2281         We fill this_arg/byval_arg if the parent is a generic instance to make sure
2282         we won't have duplicated entries in generic_inst_cache.
2283
2284         Fixes #469553.
2285
2286 2009-02-05  Miguel De Icaza  <miguel@novell.com>
2287
2288         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
2289         replace with plain BSD per the comments on the bug MONO77637.
2290
2291 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2292
2293         * class.c (mono_class_get_generic_class): New accessor function.
2294         (mono_class_get_generic_container): Ditto.
2295
2296         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
2297         fields, similar to the ones in MonoMethod.
2298
2299         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
2300         (mono_class_create_from_typedef): Set klass->is_generic if needed.
2301
2302         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
2303         
2304         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
2305         the same information as element_class->byval_arg.
2306
2307         * class.c reflection.c: Remove references to class->byval_arg.
2308
2309         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
2310         klass->enum_basetype directly.
2311
2312         * verify.c metadata.c object.c icall.c reflection.c: Use 
2313         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
2314         directly.
2315
2316 2009-02-04  Miguel de Icaza  <miguel@novell.com>
2317
2318         * icall-def.h: Remove internal calls for sockets when
2319         DISABLE_SOCKET is defined, file system writing features when the
2320         OS only support reading and not writing data and Policy support if
2321         the Policy is disabled.
2322         
2323         * image.c (do_mono_image_open): Apply Paolo's patches for using
2324         mono_file_map_ APIs here.
2325
2326         * assembly.c: Add support for platforms to avoid prefix
2327         auto-detection. 
2328
2329 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2330
2331         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
2332         warning.
2333
2334         * class.c (mono_class_inflate_generic_class): New helper function.
2335
2336         * class.c: Use mono_class_inflate_generic_class in a few places. Add
2337         statistics for inflated methods/classes.
2338
2339         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
2340
2341         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
2342         the call is made from Delegate.CreateDelegate () for the invoke method of
2343         a delegate.
2344
2345         * loader.c: Add a statistics for the memory occupied by inflated signatures.
2346
2347         * metadata.c (mono_metadata_signature_size): New helper function.
2348
2349         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
2350         generic instances.
2351
2352         * metadata.c (inflated_method_in_image): Avoid calling 
2353         mono_method_signature () if the method does not already have a signature.
2354
2355 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2356
2357         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
2358         valuetype is compatible with target type, check by inheritance as a
2359         VT is not really compatible with System.ValueType, for example.
2360
2361         * verify.c (do_invoke_method): Improve error message.
2362
2363         * verify.c (do_box_value): If boxing a nullable, use the type argument
2364         on stack instead.
2365
2366         * verify.c (do_newobj): Improve error message.  
2367
2368         Fixes #469549.
2369
2370 2009-02-03  Miguel de Icaza  <miguel@novell.com>
2371
2372         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
2373
2374 2009-02-03  Mark Probst  <mark.probst@gmail.com>
2375
2376         * generic-sharing.c: Don't hold domain lock when calling
2377         instantiate_other_info().  Fixes #471958.
2378
2379         * domain-internals.h, loader.c: Describe locking policy of domain
2380         lock vs loader lock.
2381
2382 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2383
2384         * verify.c (mono_delegate_signature_equal): Make it possible to check
2385         first-arg-bound delegates to static method.
2386
2387         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
2388         static methods with the first arg bound.
2389
2390         Fixes #469529.
2391
2392 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2393
2394         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
2395         errors.
2396
2397         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
2398         under strict mode. Any type, when boxed can be seen as a reference type.
2399
2400         Fixes #469528.
2401
2402 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2403
2404         * object.h: The lower bound of an array is a signed integer value.
2405         Introduce mono_array_lower_bound_t typedef. It should be used instead of
2406         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
2407
2408         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
2409         calculate the upper bound.
2410         
2411         Fixes #471252.
2412
2413 2009-02-02  Miguel de Icaza  <miguel@novell.com>
2414
2415         From Paolo's work, refactored, cleared up:
2416         
2417         * threadpool.c, icall.c: ifdef code that requires a working socket
2418         stack.
2419
2420         * metadata.c (mono_metadata_field_info): Do not attempt to return
2421         a value from a function declared as void.
2422
2423         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2424         from the console stack.
2425
2426         * assembly.c: use strrchr instead of rindex.
2427
2428         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2429         alloca.h on systems that have it.
2430
2431         * environment.c: Avoid code that uses stuff from
2432         HAVE_SYS_UTSNAME_H
2433         
2434         * appdomain.c: Include sys/time.h.
2435
2436         * console-io.c: include sys/ioctl.h if it is available.
2437
2438 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2439
2440         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2441
2442         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2443         the method builder.
2444
2445         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2446         after it was created and cached, as the later is not thread safe.
2447         
2448 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2449
2450         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2451         called while the debugging module is not initialized. Fixes #471669.
2452
2453 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2454
2455         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2456
2457         Fixes #471255.
2458
2459 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2460
2461         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2462         loader lock is not taken while the templates lock is held.  Fixes
2463         #471089.
2464
2465 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2466
2467         * metadata.c (type_in_image): Added a check to fix a monodis
2468         crash.
2469
2470 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2471
2472         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2473         nullable arguments.
2474
2475         * object.c (mono_runtime_invoke_array): Ditto.
2476         
2477         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2478         freeing wrappers of dynamic methods.
2479
2480         * loader.c (mono_free_method): Call it. Fixes #463323.
2481         
2482         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2483         methods taking vtype/byref arguments, to fix yet another bug caused by
2484         the sharing of runtime invoke wrappers. Partly fixes #471259.
2485
2486 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2487
2488         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2489         <first file in file table>:1 when the IL offset does not have an associated
2490         line number.
2491
2492 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2493
2494         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2495         variable info for a method.
2496
2497         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2498         
2499 2009-01-30  Jb Evain  <jbevain@novell.com>
2500
2501         * pedump.c: reuse code from monodis to make sure pedump honors
2502         MONO_PATH, which is needed to verify net_2_1 assemblies.
2503
2504 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2505
2506         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2507         there is no line number info.
2508
2509 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2510
2511         Avoid some MonoType allocations
2512         * reflection.c (mono_reflection_initialize_generic_parameter):
2513         Reuse MonoType from param->pklass rather than allocating one.
2514         (mono_dynamic_image_free): Update to changes.
2515
2516 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2517
2518         Rearrange some code to improve consistency
2519         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2520         (mono_reflection_initialize_generic_parameter): ... here.
2521
2522 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2525         with type constraints as an experiment.
2526
2527         * boehm-gc.c (on_gc_notification): Update mono_stats.
2528
2529 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2530
2531         Avoid some allocations
2532         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2533         pointer to tail array to avoid extra allocation.
2534         * metadata.c (free_generic_inst): Update to changes.
2535         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2536         on-stack struct.
2537
2538 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2541         return TRUE if the two type objects are the same.
2542
2543 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2546         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2547         klass->min_align, since klass->min_align contains the managed alignment,
2548         while the native alignment can be different, like for longs on x86.
2549         Fixes #469135.
2550
2551         * class-internals.h (MonoMarshalType): Add a min_align field.
2552
2553 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2554
2555         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2556         the 1.0 format.
2557
2558 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2559
2560         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2561         some comments about the usage of the used_regs field.
2562
2563         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2564         Fixes #469217.
2565
2566 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2567
2568         * appdomain.c: return NULL instead of throwing FileNotFoundException
2569         when LoadAssembly() fails.
2570
2571 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2572
2573         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2574         image if the owner is NULL.  Fixes the AOT failures.
2575
2576 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2577
2578         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2579         MonoGenericParam structure using memset so the image field is initialized
2580         as well.
2581
2582 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2583
2584         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2585         a plain store.
2586
2587 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2588
2589         * class.c (mono_class_setup_vtable_general): In the generic instance
2590         optimization, set method->slot for abstract virtual methods. Fixes part of
2591         #467834.
2592
2593 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2594
2595         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2596         which signals that the unloading has started but all appdomain services must
2597         remain operational.
2598
2599         * appdomain.c (mono_domain_unload): The initial state for unloading now
2600         is unloading_start and we switch to unloading after the managed call to
2601         AppDomain::DomainUnload has finished.
2602
2603         The new unloading state has to be created because managed code in the
2604         DomainUnload event can depend on things like the threadpool still working.
2605         The domain must remain fully functional while the event executes.
2606
2607         This shown as an issue due to Process::WaitForExit, which waits for
2608         async reads of stdout and stderr to complete. Since those are processed
2609         in the threadpool the code deadlocks because the DomainUnload callback 
2610         waits for the async read finished event, which should have been set by a
2611         threadpool job but has been discarded due to the domain been in unload
2612         state.
2613
2614 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2615
2616         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2617         image must match.
2618
2619 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2620
2621         * reflection.c (resolve_object): For fields, inflate the class and
2622         then get the field in the inflated class.
2623
2624 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2625
2626         * object-internals.h (struct _MonoException): Added a comment
2627         explaining the new use of trace_ips.
2628
2629 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2630
2631         * generic-sharing.c (inflate_other_data): Inflate array methods
2632         correctly.
2633
2634         * loader.c, class-internals.h: Rename search_in_array_class() to
2635         mono_method_search_in_array_class() and make it non-static.
2636
2637 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2638
2639         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2640         Hopefully fixes #458168.
2641
2642 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2643
2644         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2645         as it is performed elsewhere.
2646
2647         Code is contributed under MIT/X11 license
2648
2649 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2650
2651         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2652         requests queued.
2653         * object.c (mono_raise_exception): Increment the exceptions total
2654         counter when an exception is thrown.
2655         * class-internals.h: Add a location for storing the total number of
2656         asp.net requests served.
2657         * mono-perfcounters.c: Implement update support for asp.net counters
2658         from the class libraries. Implement read support for asp.net counters
2659         and exceptions total counter.
2660
2661 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2664         accessing klass->methods. Fixes #467385.
2665
2666 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2667
2668         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2669         for byval arguments without an [Out] attribute. Fixes #467212.
2670
2671         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2672         Fix compilation under android.
2673         
2674         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2675         processed, scan them directly after they are copied, to achieve better locality
2676         and cache usage.
2677
2678         * socket-io.c: Applied patch from Koushik Dutta
2679         (koush@koushikdutta.com). Disable IPV6 when running under android.
2680
2681 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * icall.c (ves_icall_InternalExecute): Add write barriers.
2684
2685         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2686         the GC code.
2687
2688         * sgen-gc.c: Implement write barriers in IL code.
2689
2690 2009-01-17  Geoff Norton  <gnorton@novell.com>
2691
2692         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2693
2694 2009-01-17  Geoff Norton  <gnorton@novell.com>
2695
2696         * image.c: When unloading the image->references table, there can be gaps
2697         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2698         when unloading an appdomain.
2699
2700 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2701
2702         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2703         speed up ptr-in-nursery checks.
2704
2705         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2706         threads_lock () to prevent deadlocks.
2707
2708         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2709         does not need to be scanned during minor collections, since writes to it
2710         must use write barriers.
2711
2712 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2713
2714         * metadata-verify.c: Add pe nt header verification.
2715         
2716 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2717
2718         * gc.c: Fix a few warnings when using SGEN.
2719
2720 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2721
2722         * metadata-verify.c: Add pe optional header verification.
2723
2724 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2725
2726         * sgen-gc.c: Add support for user defined marker functions, used by
2727         MonoGHashTable to avoid registering a GC root for every hash node.
2728
2729 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2730
2731         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
2732         non-pinned roots into separate hashes to avoid having to traverse them
2733         in functions which are only interested in one kind.
2734
2735 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2736
2737         * metadata-verify.c: Add pe header machine field verification.
2738         
2739 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2740
2741         * metadata-verify.c: Add pe header size verification.
2742
2743 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
2746         using the GC, they don't contain references.
2747
2748         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
2749
2750 2009-01-13  Geoff Norton  <gnorton@novell.com>
2751
2752         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
2753         AppDomains created on the native side can be cleaned up on the native side.
2754
2755 2009-01-13  Geoff Norton  <gnorton@novell.com>
2756
2757         * appdomain.c: Ensure that we call mono_context_init for the embedding api
2758         as well as the managed api.
2759
2760 2009-01-13  Geoff Norton  <gnorton@novell.com>
2761
2762         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
2763         with a MonoAppDomain initialized against it.
2764
2765 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2766
2767         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
2768         
2769         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
2770
2771         * marshal.c: Avoid setting the exception clauses after a method has been entered 
2772         into the wrapper caches. Fixes #465700.
2773
2774         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
2775         method builder.
2776         (mono_mb_create_method): Set the clauses from the method builder.
2777
2778 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2779
2780         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
2781         Patch from Makoto Kishimoto.
2782
2783 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2784
2785         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
2786         encoding them as ROOT_DESC_COMPLEX.
2787         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
2788
2789 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
2792         no longer point to the nursery.
2793
2794         * sgen-gc.c: Add a few comments/FIXMEs.
2795         
2796         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
2797
2798         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
2799         initialization of the various _method variables thread safe. Fixes
2800         #465377.
2801
2802 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2803
2804         * domain.c, domain-internals.h: Remove the shared_generics_hash
2805         and its lookup functions.
2806
2807 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
2808
2809         * socket-io.c:  Fixing the MSVC build. 
2810
2811         Code is contributed under MIT/X11 license.
2812
2813 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
2814
2815         * metadata-verify.c: Add pe header watermark verification.
2816
2817 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2818
2819         * metadata-verify.c: Add lfanew verification.
2820
2821 2009-01-12  Jb Evain  <jbevain@novell.com>
2822
2823         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
2824         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
2825
2826 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * socket-io.c: Fix the build.
2829
2830         * environment.c: Fix an #ifdef.
2831
2832 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2833
2834         * threadpool.c (async_invoke_thread): Handle the wait function returning
2835         WAIT_IO_COMPLETION as well.
2836         (async_invoke_io_thread): Ditto.
2837
2838 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
2839
2840         * threads.c: Fixing the Windows build.
2841
2842         Code is contributed under MIT/X11 license.
2843
2844 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2845  
2846         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
2847         interrupt a wait.
2848         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
2849         the thread to wait again.
2850
2851 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2852
2853         * metadata-verify.c: Initial skeleton of the metadata verifier.
2854
2855         * pedump.c: Add support for the metadata verifier.
2856
2857         * verify-internal.h: Export the whole assembly metadata verifier function.
2858
2859 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2860
2861         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
2862
2863 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2864
2865         * Makefile.am: Upgrade dtrace-prelink.sh location.
2866
2867 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2868
2869         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
2870         well. Otherwise the shutdown deadlock that happens on unix will can happen
2871         as well.
2872         If the main thread code finishes too fast it's possible that the finalizer
2873         thread won't have executed yet, won't record itself as the finalizer thread
2874         and the shutdown sequence will wait on it forever.
2875
2876 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2877
2878         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
2879         with MSVC.
2880
2881 2009-01-08  Miguel de Icaza  <miguel@novell.com>
2882
2883         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
2884         Robert Jordan for pointing this out.
2885
2886 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
2887
2888         * icall.c
2889         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
2890         ves_icall_System_IO_DriveInfo_GetDriveType.
2891
2892 2009-01-07  Miguel de Icaza  <miguel@novell.com>
2893
2894         * icall.c: Wrap calls to mono_strtod in CriticalSection
2895         invocations when using eglib, to work around #464316.
2896
2897 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2898
2899         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
2900         return value of GetCurrentDirectory to never access unitialized memory.
2901
2902 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2903
2904         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
2905         return value of GetCurrentDirectory and expand the buffer if needed.
2906
2907         Fixes #459094.
2908
2909 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
2910
2911         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
2912           Adding a call to mono_init_com_types.
2913
2914         Code is contributed under MIT/X11 license.
2915
2916 2009-01-07  Geoff Norton  <gnorton@novell.com>
2917
2918         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
2919         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
2920         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
2921         be the value of the ip buffer.
2922
2923 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2924
2925         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
2926         interfaces_packed here.
2927
2928         Fixes part of #463294.
2929
2930 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2931
2932         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
2933
2934         Fixes part of #463294.
2935
2936 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2937
2938         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
2939         is a boxed complex as well.
2940
2941         Fixes part of #463294.
2942
2943 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2944
2945         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
2946         control if a methodspec should be created for the generic method definition from external assemblies.
2947         Caching of methodspec is done using the handleref hash table.
2948
2949         Fixes #462592.
2950
2951 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
2952
2953         * loader.c (find_method): When searching the interfaces of a class
2954         check the transitive closure of implemented interfaces.
2955
2956         Fixes #463303.
2957
2958 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2959
2960         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
2961         
2962 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2963
2964         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
2965         interfaces calculation to fill_valuetype_array_derived_types.
2966
2967         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
2968         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
2969         for example.
2970
2971         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
2972         interfaces for valuetypes if needed.    
2973
2974         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
2975         for their basetype as well. Types are array expanded if rank is > 0.
2976
2977         Fixes #400716.
2978
2979 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
2980
2981         * socket-io.h : Changing the signature of
2982           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
2983           the blocking state.
2984
2985         * icall-def.h :  Changing the signature of
2986           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
2987
2988         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
2989           For Windows only.  Avoid blocking when calling accept by
2990           querying for a connection via select.  The loop also queries
2991           the thread state every 1000 micro seconds for the thread
2992           stop state.  This will avoid the process hanging on shutdown
2993           when using a TcpChannel that is never connected to.
2994
2995         Code is contributed under MIT/X11 license.
2996
2997 2008-12-30  Marek Safar  <marek.safar@gmail.com>
2998
2999         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
3000
3001 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
3002
3003         * class.c (get_implicit_generic_array_interfaces): Extract common
3004         code to a helper function making it a lot easier on the eyes.
3005
3006 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
3007
3008         * class.c (get_implicit_generic_array_interfaces): If the internal
3009         enumerator is an interface inflate System.Object instead of itself.
3010
3011         Fixes #461261.
3012
3013 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
3014
3015         * object.c (mono_runtime_invoke_array): Don't assert with
3016         byref nullable types.
3017
3018         * marshal.c (mono_marshal_get_runtime_invoke): To handle
3019         byref nullables we unbox the object and store it on the
3020         stack. 
3021         We can't use the boxed object since it is the T of Nullable<T>
3022         and the boxed representation of a nullable it's underlying type
3023         or null.
3024         We could cheat and create a boxed nullable and use the same
3025         machinery of other byref VTs but this feels like a hack and
3026         using the stack has the bonus of reducing heap pressure.
3027
3028         Fixes #461941.
3029
3030 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
3031
3032         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
3033         return value.
3034
3035         Fixes #461867.
3036
3037 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
3038
3039         * icall-def.h : Adding an internal call definition for 
3040           System.Environment.internalBroadcastSettingChange.
3041
3042         * icall.c : Adding a Windows only implementation to broadcast a 
3043           WM_SETTINGCHANGE when an environment variable has changed.
3044
3045         Code is contributed under MIT/X11 license.
3046
3047 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3048
3049         * class.c, class-internals.h: Made
3050         mono_class_has_parent_and_ignore_generics() non-static.
3051
3052 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
3053
3054         * image.c: deal with the mmap failing when loading an image.
3055
3056 2008-12-17  Geoff Norton  <gnorton@novell.com>
3057
3058         * threadpool.c: Ensure that the io_queue_lock is initialized
3059         in all circumstances, as we always attempt to cleanup against it.
3060
3061 2008-12-17  Miguel de Icaza  <miguel@novell.com>
3062
3063         * icall.c (ves_icall_System_Environment_get_Platform): For
3064         compatibility reasons for existing client code we will keep
3065         returning 4 for a while.   
3066
3067         For how long will depend on the documentation being updated, and
3068         for us to give client code a chance to be updated.
3069
3070         This reverts the original decison on #433108 since we did not
3071         catch roughly 33 instances of the broken code in our own source
3072         code base, we did not catch failures on the buildbots, and QA did
3073         not bring this as a problem.
3074
3075         Only today I found some customer's code breaking due to our own
3076         class libraries not being fully updated and tracked it down to
3077         this change.  I am reverting it because if we could not even get
3078         our story straight in our own code base, how can we hope that our
3079         end user code be fixed?
3080
3081         As of this morning, our Wiki page that documents how to detect
3082         Unix had not been fixed.    
3083
3084 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
3085
3086         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
3087
3088         * class.c (mono_class_get_fields): Handle loading errors.
3089
3090 2008-12-12 Mark Mason <mmason@upwardaccess.com>
3091
3092         * 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.
3093         
3094 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
3095
3096         * mono-perfcounters.c: avoid warning.
3097
3098 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3099
3100         * reflection.c (ensure_runtime_vtable): Work on generic instances and
3101         make sure all interfaces have MonoClass::interface_id set.
3102
3103         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
3104         method table is property set.
3105
3106 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3107
3108         * class.c: New function mono_class_setup_interface_id that setup
3109         MonoClass::interface_id if needed.
3110
3111         * class-internals.h: Export new function.
3112
3113 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3114
3115         * class.c: Add code to sanity check the vtable after setup_vtable_general
3116         has done it's work.
3117
3118 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3119
3120         * icall.c: make Assembly.GetExecutingAssembly work properly when
3121         reflection is used to invoke the method.
3122         Bug #321781 fixed.
3123
3124 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3125
3126         * metadata/generic-sharing.c: Look for constraints in all type
3127         arguments, not just the first one.
3128
3129 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3130
3131         * appdomain.c: return the correct CodeBase for an Assembly instance
3132         that was loaded from the shadow-copy directories.
3133         Bug #458190 fixed.
3134
3135 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
3138
3139         * sgen-gc.c (check_object): New debugging helper function.
3140
3141         * object.c: Fix calls to mono_value_copy_array ().
3142
3143 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3144
3145         * class.c (mono_class_setup_fields): If working on an inflated class
3146         first check if the generic definition did init with success.
3147
3148         Fixes #445361.
3149
3150 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3151
3152         pedump.c (main): Fix a warning.
3153
3154 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
3155
3156         * object-internals.h : Adding a definition for 
3157           MonoReflectionComVisibleAttribute.
3158
3159         * marshal.c (cominterop_com_visible) :  Method added to check the 
3160           ComVisible attribute of a class.
3161
3162         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
3163           cominterop_raise_hr_exception added to consolidate common code 
3164           to raise hr exceptions.
3165
3166         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
3167           if a managed class should support IDispatch.
3168
3169         * marshal.c 
3170           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
3171           Added additional checks for managed object when getting 
3172           an IDispatch interface.
3173
3174         Code is contributed under MIT/X11 license.
3175
3176 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3177
3178         pedump.c (main): Handle mono_get_method () returning NULL. 
3179
3180 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * marshal.h: Fix a warning.
3183
3184 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3185
3186         * marshal.c : Adding cominterop_release_all_rcws to release all
3187           runtime callable wrappers held by the runtime.
3188
3189         * marshal.h : Adding declaration for cominterop_release_all_rcws.
3190           
3191         Code is contributed under MIT/X11 license.
3192
3193 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3194
3195         * metadata.c (mono_image_alloc_lock): New helper function.
3196         (mono_image_alloc0_lock): Ditto.
3197
3198         * metadata.c: Use the alloc_lock () helper functions for allocating
3199         memory from the image mempool.
3200
3201 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
3202
3203         * class.c (mono_class_from_generic_parameter): Document it's
3204         locking behavior. Fix double checked locking here, we stored in
3205         param->pklass a partially initialized MonoClass and no membar was used.
3206
3207 2008-12-05  Marek Habersack  <mhabersack@novell.com>
3208
3209         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
3210         (3) functions are present in the C library use them to do the
3211         job. If they are absent, make sure that the sum of int_part and
3212         dec_part is rounded before returning. This is necessary due to the
3213         division of dec_part by the power of 10 before the final addition
3214         is performed - if the result is not rounded in some cases it will
3215         yield invalid results.
3216
3217 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3218
3219         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
3220         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
3221         instruction instead of a pointer constant.
3222
3223 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3224
3225         * loader.c (mono_method_get_header): Do most of the work outside the
3226         loader lock, to avoid assembly load hook deadlocks.
3227
3228         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
3229         (mono_metadata_parse_type_full): Ditto.
3230
3231 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
3232
3233         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
3234         Make the stack depth fixed. Ensure proper argument passing to the backtrace
3235         funtions. Finally, use a lock to produce well ordered output.
3236
3237         The lock looks silly, as all calls to the corlib mempool should be guarded
3238         with the loader lock, but for some reason this fact doesn't help. 
3239
3240         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
3241
3242 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3243
3244         * socket-io.c: 64 bit big-endian fixes.
3245
3246 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3247
3248         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
3249         targets that require strict compatibility between the types.
3250
3251         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
3252         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
3253         Kill the strict argument and create a new one valuetype_must_be_boxed.
3254
3255         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
3256         state that all valuetypes must be boxed.
3257
3258         Fixes #448560.
3259
3260 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
3261
3262         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
3263         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
3264
3265         Contributed under MIT/X11 license.
3266
3267 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
3268
3269         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
3270         the inflate_generic_type machinery should handle it.
3271
3272         This avoids a crash when the field's flags is zero and it's type is
3273         a primitive.
3274         What happens is that mono_metadata_parse_type_full will see that opt_attrs
3275         is zero and will return one of the cached built-in primitive types. Since
3276         those types live in read-only memory, the code that copies it crashes.  
3277
3278 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3279
3280         * object.c: Don't put function descriptors into generalized IMT
3281         thunks.
3282
3283 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3284
3285         * class.c: Enable generic code sharing on PPC64.
3286
3287 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3288
3289         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
3290         from mini/mini.c.
3291
3292         * generic-sharing.c: Allocate the method template slists from the
3293         image mempool so it doesn't leak.
3294
3295 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
3296
3297         * class.c (generic_array_methods): Release the linked list.
3298
3299 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3300
3301         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
3302         invocation to g_utf16_to_utf8().
3303
3304 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3305
3306         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
3307         arguments on big endian archs.
3308
3309 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3310
3311         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
3312         the type name (test added in corlib).
3313
3314 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3315
3316         * pedump.c: initialize perf. counters. Fixes a segv.
3317
3318 2008-11-25  Martin Baulig  <martin@ximian.com>
3319
3320         * mono-debug-debugger.c
3321         (mono_debugger_runtime_invoke): Return the exception object if an
3322         exception was thrown.  Visual Studio displays the exception object
3323         in the locals window.
3324
3325 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3326
3327         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
3328         ftnptr.
3329
3330 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3331
3332         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
3333         MONO_TYPE_U are sizeof (gpointer), too.
3334
3335 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3336
3337         * marshal.c (mono_type_native_stack_size): Fixed size and
3338         alignment for reference types.
3339
3340 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3341
3342         * class.c (mono_class_generic_sharing_enabled): Disable generic
3343         code sharing for PPC64.
3344
3345 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
3346
3347         * icall.c (mono_method_get_equivalent_method): Make sure
3348         method->klass->methods is inited before looping over it.
3349
3350 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3351
3352         * object.c: when calling ExecuteAssembly in a newly created domain,
3353         the configuration file and application base are already set up.
3354         Bug #446353 take 2 fixed.
3355
3356 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
3357
3358         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
3359         Fixes #444715. Fix a warning.
3360
3361 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
3362
3363         * appdomain.c: write the full path of the assembly to the .ini file
3364         created when "shadow-copying"
3365         Bug #446353 fixed.
3366
3367 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3368
3369         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
3370         if signature==FALSE.
3371
3372 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3373
3374         * marshal.h : Fix the cygwin build.
3375            marshal.c:12442: undefined reference to `_IID_IMarshal'
3376           
3377         Code is contributed under MIT/X11 license.
3378
3379 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3380
3381         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
3382           free threaded marshaler when QueryInterface is called on a COM callable
3383           wrapper requesting the IMarshal interface.
3384           
3385         Code is contributed under MIT/X11 license.
3386
3387 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3388
3389         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
3390
3391         * reflection.c (mono_type_get_object): Special case the very common
3392         void type.
3393
3394         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
3395         hold typeof(void).
3396
3397 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
3398
3399         * process.h : Adding method declaration for
3400           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3401           
3402         * process.c : Adding implementation for
3403           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3404           
3405         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
3406           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3407
3408         Code is contributed under MIT/X11 license.
3409
3410 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
3411
3412         * appdomain.c (unload_thread_main): Clean up threadpool by
3413         calling mono_thread_pool_remove_domain_jobs.
3414
3415         * domain-internals.h (struct _MonoDomain): Add new fields to
3416         help coordinate the cleanup of the threadpool.
3417
3418         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3419         that cleans up the threadpool of all jobs associated with an appdomain.
3420         It does that by cleaning up the queues and making sure all active
3421         threads are accounted.
3422
3423         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3424         unloaded or in the process of. Take this is such way that there is
3425         no race condition between another thread starting the unload and the
3426         current thread acknowledging it.
3427
3428         * threadpool.c (async_invoke_thread): Same.
3429
3430         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3431         firing the new thread.
3432
3433         * threadpool.c (start_tpthread): Same.
3434
3435         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3436
3437         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3438
3439 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3440
3441         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3442         Add support for DuplicateHandle.
3443         
3444         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3445         Add support for DuplicateHandle.
3446         
3447         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3448         Add support for DuplicateHandle.
3449
3450         Code is contributed under MIT/X11 license.
3451
3452 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3453
3454         * class-internals.h: Make min_align into a whole byte.
3455
3456         * class.c: Set min_align for SIMD types to 16.
3457
3458 2008-11-05  Geoff Norton  <gnorton@novell.com>
3459
3460         * attach.c: Default the attacher to enabled for all cases including
3461         embedded.
3462
3463 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3464
3465         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3466         change r117650.
3467
3468 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3469
3470         * monitor.c, monitor.h: New function for querying offsets of
3471         members of MonoThreadsSync.
3472
3473 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3474
3475         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3476         to speed up this function and to avoid the boundless memory growth caused by
3477         the signature_dup () calls.
3478
3479 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3480
3481         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3482         wrapper.
3483
3484         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3485         by 1 bit.
3486
3487         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3488
3489 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3490
3491         * appdomain.c:
3492         * domain-internals.h: made mono_set_private_bin_path_from_config()
3493         "internal".
3494         * object.c: call the above function after setting the configuration
3495         file path for the root domain.
3496         Fixes bug #314478.
3497
3498 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3499
3500         * assembly.c: when the assembly is loaded from an absolute path, end
3501         basedir with a directory separator.
3502         Bug #440781 fixed.
3503
3504 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3505
3506         * monitor.c (mono_monitor_get_fast_enter_method): If
3507         CompareExchange is not available, don't create the fastpath
3508         instead of asserting.  (The method is missing in the 1.1 profile.)
3509
3510 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3511
3512         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3513
3514         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3515         Monitor.Exit IL fastpaths.
3516
3517 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3518
3519         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3520
3521 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3522
3523         * class.c (mono_class_create_from_typedef): Added Vector2l.
3524
3525 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3526
3527         * class.c (mono_class_create_from_typedef): Added Vector2d.
3528
3529 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3530
3531         * appdomain.c: translate \ into / for cache_path.
3532         * domain-internals.h: new mono_is_shadow_copy_enabled().
3533         * icall.c: (fill_reflection_assembly_name) do the same path
3534         manipulations that get_code_base does.
3535         (get_code_base) use mono_is_shadow_copy_enabled.
3536
3537 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3538
3539         * appdomain.c: shadow-copied assemblies go to CachePath +
3540         ApplicationName when both are set. DynamicBase has nothing to do with
3541         shadow copies.
3542         Bug #406877 fixed.
3543
3544 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3545
3546         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3547         STANDALONESIG table.
3548
3549         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3550         standalone signatures.
3551
3552         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3553         comparison code: instead of comparing the signatures using a custom
3554         equals function, transform them to a common signature and compare that. This
3555         works better with AOT.
3556
3557 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3558
3559         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3560
3561         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3562         call for generic instances.
3563         (mono_class_setup_properties): Call setup_properties () before accessing
3564         gklass->properties.
3565
3566         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3567         over the virtual methods of a class using metadata if possible, avoiding the
3568         creation of MonoMethod's for non-virtual methods.
3569         
3570         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3571         get_virtual_methods () to iterate over the virtual methods of classes.
3572
3573 2008-10-25  Martin Baulig  <martin@ximian.com>
3574
3575         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3576
3577 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3578
3579         * class.c (mono_class_create_from_typedef): Added Vector4i.
3580
3581 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3582
3583         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3584         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3585         special-casing applies to eliminate the call completely.
3586
3587 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3588
3589         * class.c (mono_class_create_from_typedef): Added Vector8s.
3590
3591 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3592
3593         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3594
3595 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3596
3597         * icall.c: get rid of annoying warning.
3598
3599 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3600
3601         * threadpool.c: in 1.x, if you change the background status of the
3602         threadpool thread, it's not reset.
3603         Remove unnecessary calls to SetState.
3604
3605 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3606
3607         * threadpool.c: asynchronously create a set of idle threads upon first
3608         use of the threadpool. SetMinThreads will now start the appropriate
3609         number of idle threads if they are not already running. The default is
3610         1 threadpool thread per CPU. Increased the maximum number of threads
3611         per CPU to 10.
3612
3613 2008-10-22  Martin Baulig  <martin@ximian.com>
3614
3615         Revert r116521 from Zoltan, it breaks the debugger:
3616
3617         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3618         over the virtual methods of a class using metadata if possible, avoiding the
3619         creation of MonoMethod's for non-virtual methods.
3620         
3621         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3622         get_virtual_methods () to iterate over the virtual methods of classes.
3623
3624 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3625
3626         * threads.c: when creating a threadpool thread, set its state to
3627         'background'.
3628         * threadpool.c: reset the background state of a threadpool thread
3629         after finishing each work item
3630         Bug #437888 fixed.
3631
3632 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3633
3634         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3635         
3636         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3637         generic instances which works by inflating the methods in the container
3638         class's vtable.
3639
3640         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3641         variant which doesn't make a copy if no inflation was done.
3642         (mono_class_setup_fields): Use it.
3643
3644         * metadata.c (mono_metadata_get_shared_type): New helper function to
3645         return a shared instance of a given MonoType.
3646
3647         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3648         a copy of most non-generic types.
3649
3650 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3651
3652         * threadpool.c: remove one more GetSystemInfo () call.
3653
3654 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3655
3656         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3657         use the code in mono-proclib.h to get processor information.
3658
3659 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3660
3661         * appdomain.c: fixed the logic that determines whether assemblies in a
3662         directory are "shadow-copied" or not. Bug #433483 fixed.
3663
3664 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3665
3666         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3667         warning.
3668
3669 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3670
3671         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3672         returning a vtype.
3673
3674         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3675         reflection.c: Use mono_field_get_name () for accessing a field's name.
3676
3677         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3678         class.c
3679
3680         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3681         field.
3682
3683         * loader.c (find_method_in_class): Reenable the metadata optimization by
3684         not using it for generic instances.
3685
3686         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3687         data/def_type fields from MonoClassField into a separate structure.
3688         (struct MonoClassField): Remove data/def_type fields.
3689         (struct _MonoClass): Add a 'field_def_values' array to store the default
3690         values/RVA for fields.
3691
3692         * class.c reflection.c: Update after the changes.
3693         
3694         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3695         for accessing field->data.
3696
3697         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3698
3699         * loader.c (find_method_in_class): Revert the last change for now as
3700         it breaks Mono.C5 unit tests.
3701
3702         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3703         'field_generic_types' and 'field_objects' which contain the information
3704         previously stored in MonoInflatedField.
3705         (MonoInflatedField): Delete.
3706         (struct _MonoClassField): Delete 'generic_info' field.
3707
3708         * reflection.c: Store the information which was previously in 
3709         field->generic_info in MonoDynamicGenericClass instead.
3710
3711         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3712         MonoClassField changes.
3713
3714 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3715
3716         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3717         store the value inside the data array of the MonoMethodWrapper.
3718         This saves memory, is faster and fixes the lifetime issues (methods
3719         were never removed from the hash previously). May also fix bug#436996.
3720
3721 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3722
3723         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3724         generic instances, compute the type from the generic definition instead of
3725         looking in field->generic_info.
3726
3727         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3728         for inflated fields, the only user was get_fieldref_token () which no
3729         longer needs it.
3730
3731         * class.c (mono_class_init): Revert the last change as it seems to cause
3732         crashes.
3733
3734         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
3735         bytes on 64 bit platforms.
3736
3737         * object.c (mono_class_create_runtime_vtable): Fix a warning.
3738         
3739         * object.c (mono_class_create_runtime_vtable): Don't initalize
3740         field->data/field->def_type here, it is done lazily by 
3741         mono_class_get_field_default_value ().
3742
3743         * icall.c (ves_icall_get_enum_info): Call 
3744         mono_class_get_field_default_value () instead of directly accessing
3745         field->data and field->def_type.
3746
3747         * object.c (get_default_field_value): Ditto.
3748
3749         * class.c (mono_field_get_data): Ditto.
3750         
3751         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
3752         call for generic instances.
3753
3754         * loader.c (find_method_in_class): If klass != from_class, then inflate
3755         the method with the context of from_class, since the caller assumes this.
3756
3757 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
3758
3759         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
3760         for accessing method->slot.
3761
3762 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
3763
3764         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
3765
3766 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3767
3768         * class.c (mono_method_get_vtable_index): Use
3769         mono_method_get_vtable_slot () for accessing method->slot.
3770
3771         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
3772         accessing klass->methods.
3773
3774         * class.c (mono_method_get_vtable_slot): New helper function.
3775         (mono_class_get_vtable_entry): Ditto.
3776         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
3777         accessing method->slot.
3778
3779         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
3780         method to get_inflated_method ().
3781
3782         * class.c (mono_class_get_inflated_method): New helper method to obtain
3783         a method of an inflated class without calling setup_methods ().
3784         (mono_class_get_cctor): Use get_inflated_method.
3785
3786         * generic-sharing.c (mono_class_get_method_generic): Ditto.
3787         
3788         * marshal.c image.c: Lazily create all the marshal caches.
3789
3790         * image.c (mono_image_init): Move initialization of runtime_invoke
3791         caches to marshal.c.
3792
3793         * marshal.c (get_cache): New helper function to lazily initialize a 
3794         wrapper cache.
3795         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
3796
3797         * debug-helpers.c (mono_method_full_name): Include generic arguments.
3798
3799 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
3800
3801         * loader.c: fixed check for interface type.
3802
3803 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3804
3805         * appdomain.c: check for NULL setup before it's referenced.
3806
3807 p
3808 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3809
3810         * class.c: remove the unused old vtable setup code.
3811
3812 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3813
3814         * class.c: don't depend on interface order in
3815         setup_interface_offsets (bug #435777).
3816         * reflection.c: sort the InterfaceImpl table (patch from
3817         Jb Evain  <jbevain@novell.com>).
3818
3819 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3820
3821         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
3822         the low level assemblies lock.
3823
3824 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
3825
3826         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
3827         object.c, reflection.c, socket-io.c, threads.c: introduced
3828         mono_framework_version () to return the major framewrok version,
3829         changed the code that was using more complex patterns to use it.
3830         Return the correct value for PlatformID for OSX.
3831
3832 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
3833
3834         * icall-def.h, process.h, process.c: added an icall to get info about
3835         processes using mono-proclib.
3836
3837 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
3838
3839         * mono-perfcounters.c: use the mono-proclib functions to
3840         access process information.
3841
3842 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3843
3844         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
3845         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
3846         reflection.c: remove rawbuffer usage: mmap support is more sanely
3847         provided by utils/mono-mmap.
3848
3849 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
3850
3851         * gc.c: use posix semaphores when possible so that
3852         mono_gc_finalize_notify() is signal safe.
3853
3854 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
3855
3856         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
3857         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
3858         be #ifdef-ed out, the linker will remove the rest.
3859
3860         * marshal.c: Implement DISABLE_COM.
3861
3862         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
3863
3864 2008-10-11  Miguel de Icaza  <miguel@novell.com>
3865
3866         * locales.c (string_invariant_compare_char): Optimization: do not
3867         call g_unichar_type unless we actually need the information.
3868
3869 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3870
3871         * object.c, class-internals.h: Also create remoting trampolines
3872         for generic methods.  Pass the domain to the remoting trampoline
3873         creation function, too.
3874
3875 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
3878
3879 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3880
3881         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
3882         Vector4ui.
3883
3884 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3885
3886         * assembly.c:
3887         * locales.c: remove the use of g_strdown. Fixes bug #322313.
3888
3889 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3890
3891         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
3892         for the least possible amount of time (extending the fix in r113458).
3893
3894 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3895
3896         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
3897
3898 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3899
3900         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
3901         as possible simd intrinsic types.
3902         Optimized the test to check for the common prefix first.
3903
3904 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
3905
3906         * class.c: back out part of a broken optimization committed on
3907         May 23th (bug #433908).
3908
3909 2008-10-09  Mark Probst  <mark.probst@gmail.com>
3910
3911         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
3912         Win32.  Should fix #432388 for most cases until we have the new
3913         profiler on Win32.
3914
3915 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
3918         instead of using inst->id so the hash is stable for AOT.
3919
3920 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3921
3922         * appdomain.c:
3923         * icall.c: create a .ini file for shadow-copied assemblies that
3924         contains the location of the original assembly. Use this to return the
3925         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
3926         Also fix the number of '/' for windows when returning the CodeBase.
3927         Fixes bug #430920.
3928
3929 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3930
3931         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
3932
3933         Code is contributed under MIT/X11 license.
3934
3935 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3936
3937         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
3938           if if the class vtable needs initialized.
3939
3940         Code is contributed under MIT/X11 license.
3941
3942 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3943
3944         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
3945           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
3946           STRING->BSTR, and CLASS->INTERFACE.
3947
3948         Code is contributed under MIT/X11 license.
3949
3950 2008-10-07  Marek Habersack  <mhabersack@novell.com>
3951
3952         * sysmath.h: changed the declaration of the
3953         ves_icall_System_Math_Round2 icall by adding an extra
3954         away_from_zero parameter.
3955
3956         * sysmath.c (ves_icall_System_Math_Round2): added support for
3957         away from zero rounding. The icall now takes an extra boolean
3958         parameter to signal that away from zero operation is requested.
3959
3960 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
3963         the delegate klass so it can work with full-aot.
3964         (mono_marshal_get_delegate_end_invoke): Ditto.
3965         (mono_marshal_get_delegate_invoke): Ditto.
3966
3967 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
3968
3969         * gc.c, attach.h, attach.c: remove a bad pattern:
3970         add_finalizer_callback () is not implemented correctly, it can't
3971         without adding more overhead to the finalizer loop and it's not
3972         even needed, since we know exactly what we need to call, so there is
3973         no need to do so through an expensive function pointer.
3974
3975 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
3978         for the no-gc case.
3979         * attach.c (mono_attach_init): Remove the #ifdef.
3980
3981 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3982
3983         * attach.c (mono_attach_init): Don't use
3984         mono_gc_add_finalizer_thread_callback when compiling without GC.
3985         Fixes #432306.
3986         
3987         Code is contributed under MIT/X11 license.
3988
3989 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3990
3991         * class.c (mono_class_create_from_typedef): Remove the 
3992         #ifndef DISABLE_SIMD stuff.
3993
3994 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3995
3996         * class-internals.h (MonoClass): Added simd_type bit field.
3997
3998         * class.c (mono_class_create_from_typedef): Check if type is a simd
3999         intrinsic.
4000
4001 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4002
4003         * object.c (mono_method_add_generic_virtual_invocation): Only add
4004         instantiations to the thunk whose count is at least as large as
4005         the threshold.
4006
4007 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4008
4009         * icall.c: changed the Type of the exception thrown when trying to
4010         invoke a constructor on an abstract class. Part of the fix for bug
4011         #324185.
4012
4013 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4014
4015         * class.c, class-internals.h (mono_method_get_vtable_index): New
4016         function which returns the index into the vtable and properly
4017         handles inflated virtual generic methods.
4018
4019 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4020
4021         * object.c, domain.c, object-internals.h, domain-internals.h:
4022         Generalize IMT thunk machinery to also handle thunks for virtual
4023         generic method invokes.  When a virtual generic method is invoked
4024         more than a number of times we insert it into the thunk so that it
4025         can be called without lookup in unmanaged code.
4026
4027         * generic-sharing.c, class-internals.h: Fetching a
4028         MonoGenericInst* for a method from an (M)RGCTX.
4029
4030 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4031
4032         * marshal.c (emit_marshal_string): Applied a variant of a patch by
4033         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
4034         marshalling. Fixes #431304.
4035
4036 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
4037
4038         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4039           handle when ref is specified without In or Out.
4040
4041         Code is contributed under MIT/X11 license.
4042
4043 2008-09-30  Mark Probst  <mark.probst@gmail.com>
4044
4045         * loader.c (mono_get_method_constrained): Don't expand method with
4046         the class's context, because it's already a method of that class.
4047
4048 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
4049
4050         * attach.c : should be correct build fix.
4051
4052 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4053
4054         * attach.c: Fix the previous change.
4055
4056 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
4057
4058         * attach.c : quick w32 build fix.
4059
4060 2008-09-27  Miguel de Icaza  <miguel@novell.com>
4061
4062         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
4063         crashes MonoDevelop: #430455.
4064
4065 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4066
4067         * domain-internals.h (struct _MonoDomain): Move most fields used only by
4068         the JIT do MonoJitDomainInfo in ../mini/mini.h.
4069
4070         * domain.c: Remove initialization/cleanup of the removed fields.
4071
4072 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4073
4074         * class.c (mono_class_generic_sharing_enabled): Enable generic
4075         code sharing for PPC.
4076
4077 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
4078
4079         * attach.c : Fixing the Windows builds.
4080
4081         Code is contributed under MIT/X11 license.
4082
4083 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
4086         the default generic sharing mode to 'all'.
4087
4088 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4089
4090         * generic-sharing.c, class-internals.h: New function for checking
4091         whether a method needs a static RGCTX invoke wrapper.  A few
4092         funtions moved from mini/generic-sharing.c.
4093
4094         * icall.c: New function used.
4095
4096 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4097
4098         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4099         Static RGCTX invoke wrapping applies to value type methods, too.
4100
4101         * class.c (mono_class_setup_vtable_general): In generic-shared
4102         value types, wrap methods with a static RGCTX invoke wrapper.
4103
4104 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
4107         osx build.
4108
4109 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4110
4111         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
4112         register a callback which is called when the finalizer thread is woken
4113         up.
4114         (finalizer_thread): Call the callback if it exists.
4115
4116         * attach.h attach.c: New files, implementing the attach mechanism.
4117
4118         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
4119         
4120         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
4121         by the previous change.
4122
4123 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4124
4125         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
4126         loader.c, marshal.c, metadata-internals.h, metadata.c,
4127         method-builder.c, object.c, reflection.c: introduced specific functions
4128         to allocate from the domain and image mempools and cleaned up most of
4129         the code to use them (still missing a few in reflection.c).
4130         Keep the loader bytes counter updated.
4131
4132 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
4133
4134         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
4135         loader-related counters.
4136
4137 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
4138
4139         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
4140         added more MS-compatible counters.
4141
4142 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4143
4144         * class.c (mono_class_setup_fields): Call setup_fields before accessing
4145         class->blittable. Fixes #428217.
4146
4147 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
4148
4149         * reflection.c (mono_image_get_field_on_inst_token): Call 
4150         field_encode_signature () since that handles custom modifiers too.
4151         Fixes #424663.
4152
4153 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * reflection.c (add_custom_modifiers): New helper function to merge custom
4156         modifiers stored in objects to a MonoType.
4157         (fieldref_encode_signature): Encode custom modifiers.
4158         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
4159         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
4160
4161 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
4162
4163         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
4164         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
4165         64-bit IL only images because imports are not resolved for IL only images.
4166         Special thanks to Bill Holmes for finding this bug and testing the patch.
4167         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
4168
4169         Contributed under MIT/X11 license.
4170
4171 2008-09-19  Miguel de Icaza  <miguel@novell.com>
4172
4173         * mono-config.c (dllmap_start): Add support for the bits keyword
4174         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
4175
4176 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4177
4178         * reflection.c (inflate_mono_method): When the class the method is
4179         to be inflated for is itself not inflated, just return the method.
4180
4181 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
4182
4183         * mono-perfcounters.c: use more user friendly process instance names.
4184
4185 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
4186
4187         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4188           handle "[in] ref" and "[in][out] ref" cases.
4189
4190         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
4191           to mono_mb_create_method.  This was causing problems calling native to
4192           managed passing Variants by value.
4193
4194         Code is contributed under MIT/X11 license.
4195
4196 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
4197
4198         * class.c (can_access_internals): Call mono_assembly_load_friends ()
4199         before accessing the friend_assembly_names field.
4200
4201         * assembly.c (mono_assembly_load_friends): Make this callable multiple
4202         times.
4203         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
4204         called lazily when it is needed.
4205
4206         * metadata-internals.h (struct _MonoAssembly): Add 
4207         'friend_assembly_names_inited' flag.
4208
4209 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
4210
4211         * mono-perfcounters-def.h: fix the types of a few counters.
4212         * mono-perfcounters.c: implemented the instance names getter
4213         and a few bugfixes.
4214
4215 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
4216
4217         * culture-info-table.h : regenerated.
4218
4219 2008-09-17  Robert Jordan  <robertj@gmx.net>
4220
4221         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
4222         context bound objects. Fixes #415577.
4223
4224         Code is contributed under MIT/X11 license.
4225
4226 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
4227
4228         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
4229         implementation (bug #423582).
4230
4231 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
4232
4233         * object.c (mono_object_get_virtual_method): Handle the case method->slot
4234         is not set. Fixes #426309.
4235
4236 2008-09-16  Jb Evain  <jbevain@novell.com>
4237
4238         * class.c (mono_class_from_name): fix the exported type look up
4239         when the type is defined in a referenced assembly.
4240
4241 2008-09-16  Jb Evain  <jbevain@novell.com>
4242
4243         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
4244         increment the next index counter on each iteration to make that work
4245         for more than one type forwarder. Unmanaged part to fix #422929.
4246
4247 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4248
4249         * object-internals.h: enum ComInterfaceType in
4250         MonoInterfaceTypeAttribute is guint32, not guint16.
4251
4252 2008-09-12  Mark Probst  <mark.probst@gmail.com>
4253
4254         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
4255         writing code.
4256
4257 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4258
4259         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
4260         not gboolean.
4261
4262 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4263
4264         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
4265         Endianness fixes for MonoSymbolFileOffsetTable.
4266
4267 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4268
4269         * process.c (complete_path) : Removing quotes from the 
4270           input path.  The glib file routines do not handle file paths
4271           that have quotes around them.
4272
4273         Code is contributed under MIT/X11 license.
4274
4275 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4276
4277         * socket-io.h : Adding a comment to provide locations where 
4278           changes to MonoSocketAsyncResult need to be synced.
4279
4280         Code is contributed under MIT/X11 license.
4281
4282 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
4283
4284         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
4285         parameters as well. Fixes #425001.
4286
4287 2008-09-08  Miguel de Icaza  <miguel@novell.com>
4288
4289         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
4290         windows build.
4291
4292 2008-09-07  Miguel de Icaza  <miguel@novell.com>
4293
4294         * console-io.c: Add support for tracking the window size if it
4295         changes.
4296
4297         The setup is very simple: the TtySetup function will now return a
4298         pointer to a location in memory that tracks the current console
4299         size.  The managed code checks its current value every time its
4300         queried against the last value set, and updates accordingly.
4301
4302         With this setup we can work with multiple consoles, and we do not
4303         require to poke into managed code from a signal handler.
4304
4305         Additionally, the environment for COLUMNS and LINES is now handled
4306         in unmanaged code.
4307
4308         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
4309
4310 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4311
4312         * marshal.c (mono_type_native_stack_size): Treat
4313         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
4314
4315 2008-09-04  Jb Evain  <jbevain@novell.com>
4316
4317         * class.c (mono_class_is_assignable_from): fix assignability of nullables
4318         to nullables.
4319
4320 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
4321
4322         * verify.c (verify_type_compatibility_full): Revert change
4323         to allow converting a native int to unmanaged pointer be verifiable
4324         under non-strict mode.
4325         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
4326
4327         * verify.c: Added some TODOs.
4328
4329 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
4330
4331         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
4332           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
4333           Changed to use GlobalAlloc for the memory returned on Windows platforms.
4334
4335         Code is contributed under MIT/X11 license.
4336
4337 2008-09-02  Jb Evain  <jbevain@novell.com>
4338
4339         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
4340
4341 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
4342
4343         reflection.c (typebuilder_setup_fields): Handle classes with
4344         explicit size.
4345
4346 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
4347
4348         class.c (mono_class_setup_events): Add memory barrier due to
4349         double checked locking.
4350         
4351         class.c (mono_class_setup_properties): Same.
4352
4353 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4354
4355         * class.c (mono_class_is_assignable_from): Fix the build.
4356         
4357         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
4358         before accessing klass->interface_bitmap. Fixes #421744.
4359
4360 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4361
4362         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
4363         the runtime into no-exec mode, useful when running the AOT compiler.
4364
4365         * appdomain.c gc.c object.c: Avoid executing managed code when running
4366         in no-exec mode.
4367         
4368         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
4369
4370         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
4371         special case when the mono_assembly_loaded () returns NULL because the 
4372         search hook is not installed.
4373
4374 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
4377         crashes in bstr marshalling on linux.
4378
4379 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
4382         with more than one parameter.
4383
4384 2008-08-24  Miguel de Icaza  <miguel@novell.com>
4385
4386         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
4387         start/stop flow control as well when turning off ICANON (allows
4388         C-s and C-q to be read by Console.ReadKey).
4389
4390 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4391
4392         * class.c (mono_class_init): Move the initialization of nested classes
4393         into mono_class_get_nested_types (). Fixes #418433.
4394
4395         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
4396         flag.
4397
4398         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
4399         iterating tough the nested classes of a class.
4400
4401 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4402
4403         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
4404         on arm.
4405
4406 2008-08-22  Miguel de Icaza  <miguel@novell.com>
4407
4408         * console-io.c (sigcont_handler): Support signal chaining for
4409         SIGCONT.
4410
4411         (console_set_signal_handlers): Use best practices with sigaction,
4412         clear the structure before using it. 
4413
4414 2008-08-22  Robert Jordan  <robertj@gmx.net>
4415
4416         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4417         Fix the Windows build.
4418
4419 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4420
4421         * class.c (mono_class_generic_sharing_enabled): Make the default
4422         sharing mode 'corlib'.
4423
4424 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4425
4426         * console-io.c (console_set_signal_handlers): Fix a warning.
4427
4428         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4429         method normally, the JIT will take care of avoiding recursion.
4430
4431 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4432
4433         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4434
4435         Code is contributed under MIT/X11 license.
4436
4437 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4438
4439         * console-io.c (sigcont_handler): We need to restore the entire
4440         termios state, not only the original settings, as things like echo
4441         can be controlled after this (Booish exposes this issue with its
4442         own ReadLine implementation).
4443
4444         Additionally, we need to set the terminal back into keypad_xmit
4445         mode.
4446         
4447         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4448         string as a paramter as well.   Otherwise we get different
4449         keyboard sequences.
4450
4451 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4452
4453         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4454         delegates with byref out parameter passing. Fixes #351520.
4455
4456         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4457         a generic context.
4458         (mono_type_get_desc): Add the type arguments for GENERICINST.
4459         (mono_method_full_name): Stringify the class name using mono_type_full_name
4460         so it picks up generic arguments.
4461
4462 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4463
4464         * console-io.c: Removed debug output.
4465
4466 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4467
4468         reflection.c (mono_reflection_create_runtime_class): Alloc
4469         the nested classes linked list using the dynamic image mempool.
4470         Fixes leak in corlib compilation.
4471
4472 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4473
4474         * console-io.c: Fix incredibly annoying behavior on the console
4475         after resuming execution after control-z.   This affected every
4476         console application.
4477
4478 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4479
4480         * mempool-internals.h: Header for mono private mempool functions. The first
4481         two function are for allocating glib linked lists using pools.
4482
4483         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4484
4485         * Makefile.am: Added mempool-internals.h.
4486
4487 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4490         (mono_domain_free): Ditto.
4491
4492         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4493         be used by the JIT to store its domain-specific information, instead of putting
4494         it directly into MonoDomain.
4495
4496         * domain.c (mono_install_create_domain_hook): New helper function to install
4497         a hook which initializes domain->runtime_info.
4498
4499         * domain.c (mono_install_free_domain_hook): Ditto.
4500         
4501 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4502
4503         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4504         asserting if the ares parameter is null.
4505
4506         * mono-perfcounters.c: Fix warnings.
4507
4508         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4509         is not needed, don't check for interruptions either.
4510         (mono_marshal_get_delegate_end_invoke): Ditto.
4511
4512 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4513
4514         * mono-perfcounters.c (predef_readonly_counter): added support for
4515         reading the ASP.NET Requests Queued counter from another process.
4516
4517 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4518
4519         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4520         MonoImage to simplify the AOT code.
4521
4522 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4523
4524         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4525         marshalling. Fixes #416078.
4526
4527 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4528         
4529         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4530         it is set, looking up the icall address is deferred to the JIT, since 
4531         in embedded scenarios, the icall might not be registered in the runtime
4532         doing the AOT compilation. Backported from the 2.0 branch.
4533
4534 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4535
4536         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4537         Fixes #415621.
4538
4539 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4540
4541         * Makefile.am: added support for cross-compilation.
4542
4543 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4544
4545         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4546
4547 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4548
4549         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4550
4551 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4552
4553         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4554         mono-perfcounters.c: performance counters implementation.
4555
4556 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4559         to gpointer, letting the AOT code decide what to store in it.
4560
4561 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4562
4563         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4564           mono_class_setup_methods if the methods are not initialized.
4565
4566         Code is contributed under MIT/X11 license.
4567
4568 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4569
4570         * verify.c: Remove some debug code I commited by accident.
4571
4572         * verify.c (mono_method_is_valid_in_context): Change the return value
4573         to make possible to distinguish between invalid and unverifiable.
4574
4575         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4576         methods.
4577
4578 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4579
4580         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4581         constraints. Fixes regression in gtest-253.
4582
4583 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * verify.c (mono_verifier_verify_class): Don't allow generic types
4586         with explicit layout.
4587
4588         * verify.c (mono_method_verify): Check locals and argument types.
4589
4590 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4591
4592         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4593         wait if the thread is in StopRequested state.
4594
4595         * class.c (mono_class_from_name): Refactor the module searching code into
4596         a separate function so it can be reused in the AOT case too.
4597
4598 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4599
4600         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4601         Check both the type and it's generic type definition for loader errors.
4602         
4603         * verify.c (mono_method_is_valid_in_context): Don't generate another
4604         error when a type errors occur, this leads to the wrong exception been
4605         thrown.
4606
4607 2008-07-28  Dick Porter  <dick@ximian.com>
4608
4609         * icall-def.h
4610         * process.c
4611         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4612         New internal calls to duplicate and close a process handle.
4613
4614 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4615
4616         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4617
4618 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4619
4620         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4621
4622 2008-07-27  Robert Jordan  <robertj@gmx.net>
4623
4624         * class.c (mono_class_init): Don't compute class.has_finalize for
4625         valuetypes. Fixes #412477.
4626
4627 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4628
4629         * verify.c: Implement constraint equivalence checking.
4630         This is required when a generic parameter is used as
4631         argument to a constrained one.
4632
4633         Fixes #410637.
4634
4635 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4636
4637         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4638
4639         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4640
4641         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4642         synch with managed object layout.
4643
4644 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4645
4646         * verify.c (do_branch_op): Handle valuetypes and generic
4647         arguments properly.
4648
4649         * verify.c (do_cmp_op): Same.
4650
4651         Fixes #410383.
4652
4653 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4654
4655         * generic-sharing.c: Fix memory leaks.
4656
4657         * class.c, class-internals.h: Make
4658         mono_class_inflate_generic_type_with_mempool() non-static.
4659
4660 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4661
4662         * pedump.c (dump_verify_info): Dump full class name.
4663
4664 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4665
4666         * generic-sharing.c: Removed some old code that didn't do anything.
4667
4668 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4669         * profiler.c: Added runtime_initialized_event,
4670         mono_profiler_install_runtime_initialized and
4671         mono_profiler_runtime_initialized. This new hook tells the profiler
4672         when the runtime is sufficiently initialized to be able to call
4673         mono_thread_attach on the root appdomain.
4674         * profiler.h, profiler-private.h: Likewise.
4675
4676 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4677
4678         * verify.c (do_cast): Do boxing for generic arguments as well.
4679
4680         * class.c (is_nesting_type): Drop generic instantiations before
4681         checking for nesting.
4682
4683         * class.c (can_access_instantiation): Allow access to generic
4684         arguments.
4685
4686 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         * verify.c (verify_class_for_overlapping_reference_fields):
4689         On some cases, the field size might be zero, guard against that.
4690         Fix the explicit layout check to work as expected.
4691
4692 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4693
4694         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4695         mono_thread_resume () during shutdown, since the thread we want to abort
4696         might be suspended.
4697
4698 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4699
4700         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4701         warning.
4702
4703         * debug-mono-symfile.c: Fix a warning.
4704
4705         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4706
4707         * object.c (mono_class_vtable): Check if exception_type is set, and return
4708         NULL as defined by the function comments.
4709
4710 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4711
4712         * mempool.c: Use malloc for every single mempool allocation if the
4713         configure option is set.  This makes it easier to track mempool
4714         allocations with tools like Valgrind.
4715
4716 2008-07-22  Jb Evain  <jbevain@novell.com>
4717
4718         * reflection.c (create_dynamic_mono_image): emit the same
4719         metadata version that SL2 does when creating a SL2 image.
4720
4721 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4722
4723         * icall-def.h:
4724         * icall.c: New icall System.Enum:get_hashcode. This function
4725         avoids the overhead of boxing the enum to the underlying type.
4726
4727 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4728
4729         * reflection.c (mono_method_get_object): Don't let static RGCTX
4730         invoke wrappers get into MonoReflectionMethods.
4731
4732 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
4733
4734         * object-internals.h:
4735         * object.c: New mono_runtime_class_init_full function
4736         that makes throwing the exception optinal.
4737
4738         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
4739         for the case where the exception object is supplied.
4740
4741 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
4742
4743         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
4744         old ld versions.
4745
4746         Contributed under MIT/X11 license.
4747
4748 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4749
4750         * string-icalls.c (ves_icall_System_String_InternalSplit):
4751         Optimize array allocation by caching the MonoClass of the
4752         array type.
4753
4754         * icall.c (ves_icall_Type_GetMethodsByName): Same.
4755
4756         * reflection.c (mono_param_get_objects): Same.
4757
4758 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4759
4760         * icall-def.h:
4761         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
4762         It inflates the given type using the class context.
4763
4764 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4765
4766         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
4767         the vtable if it already exists.
4768
4769         * object-internals.h: Add mono_class_try_get_vtable as part of the
4770         internal API.
4771
4772         * reflection.c (mono_type_get_object): Use the MonoObject from the
4773         vtable when possible. Reduces locking contention on reflection heavy
4774         code.
4775
4776 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
4779         g_bit_nth_msf () since that macro is not implemented in eglib.
4780
4781 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
4784         on platforms which do not support it.
4785
4786 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4787
4788         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
4789
4790 2008-07-11  Martin Baulig  <martin@ximian.com>
4791
4792         * mono-debug-debugger.h
4793         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
4794
4795         * mono-debug-debugger.c
4796         (_mono_debugger_interruption_request): New global volatile variable.
4797         (mono_debugger_check_interruption): New public function.
4798
4799         * threads.c
4800         (mono_thread_current_check_pending_interrupt): Call
4801         mono_debugger_check_interruption().
4802         (mono_thread_interruption_checkpoint_request): Likewise.
4803
4804 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4805
4806         * verify.c: Add more type checks for loaded types. Verify the result
4807         handle from ldtoken.
4808
4809 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4810
4811         * loader.c (field_from_memberref): Don't crash if the field
4812         wasn't found.
4813
4814 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4815
4816         * verify.c: Verify if type and method instantiations
4817         don't have invalid VAR or MVAR arguments.
4818
4819 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4820
4821         * verify.c: Fix double free of function pointer list.
4822
4823 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4824
4825         * object.c (mono_string_to_utf8): Comment the new code as it
4826         breaks under eglib.
4827
4828 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
4829
4830         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
4831
4832 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
4833
4834         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
4835           is not throw too many times.
4836
4837         Code is contributed under MIT/X11 license.
4838
4839 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4840
4841         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
4842         debugging is turned off.
4843
4844 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
4845
4846         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
4847
4848 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4849
4850         * class-internals.h, class.c: Added new generic sharing option:
4851         Share only stuff in System.Collections.Generic, which is now the
4852         default.
4853
4854 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4855
4856         * generic-sharing.c, class-internals.h: New function for getting a
4857         generic method in a generic class given the corresponding method
4858         for a different instantiation of the class.  Partly refactored
4859         from mini-trampolines.c.
4860
4861         * class.c: Make sure generic methods have a class_inst if they are
4862         part of a generic class.
4863
4864         * metadata.c (mono_type_stack_size_internal): Handle type
4865         variables.
4866
4867 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4868
4869         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
4870         Signifies whether information on the this/vtable/mrgctx variable
4871         is available.
4872
4873 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4874
4875         * object.c, object-internals.h, icall.c: New function
4876         mono_delegate_ctor_with_method(), which does the same as
4877         mono_delegate_ctor(), but takes an explicit method argument
4878         instead of taking the method from the jit info.
4879
4880         * marshal.c: When creating a delegate with an inflated method take
4881         the "this" argument as the target class for the castclass.
4882
4883 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4884
4885         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
4886         mono_jit_info_table_find() to perform very badly in some cases.
4887
4888 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * icall.c (type_from_typename): Handle 'string'.
4891
4892         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
4893         wrappers into the wrapper_hash, since the key is not a MonoMethod.
4894
4895 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
4898
4899         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
4900         number of available managed allocator types.
4901
4902         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
4903         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
4904
4905 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4906
4907         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
4908         which is a low level lock protecting just the 'jit_code_hash' hash table.
4909
4910         * domain.c: Initialize+cleanup jit_code_hash_lock.
4911         
4912 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4913
4914         * coree.c (mono_load_coree): Set coree_module_handle global variable only
4915         after initialization.
4916
4917         * coree.h: Make MonoFixupExe internal.
4918
4919         Contributed under MIT/X11 license.
4920
4921 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4922
4923         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
4924         because that is platform independent. Check NumberOfRvaAndSizes in PE32
4925         as well.
4926         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
4927         image being loaded is a CLI image and _CorValidateImage gets called.
4928
4929         * coree.h: Add MonoLoadImage.
4930
4931         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
4932         instead of LoadLibrary.
4933
4934         Contributed under MIT/X11 license.
4935
4936 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
4937
4938         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
4939         for any primitive type.
4940
4941 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * object.c (mono_array_new_specific): Optimize this and the other allocation
4944         functions a bit.
4945         
4946         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
4947         domains too if mono_dont_free_domains is set.
4948
4949         * domain-internals.h (mono_dont_free_domains): New internal option controlling
4950         whenever to free appdomain data after it has been unloaded.
4951
4952         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
4953         
4954 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
4955
4956         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
4957         (mono_method_get_equivalent_method): Fix a warning.
4958
4959         * object.c (mono_message_init): Avoid looking up array types for each call.
4960
4961 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4962
4963         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
4964         call.
4965
4966         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
4967         even more.
4968
4969         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
4970         each iteration.
4971
4972         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
4973         fields of an enum.
4974
4975 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
4976
4977         * object.c (mono_value_box): Fix boxing of nullables.
4978
4979 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4980
4981         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
4982         mono_module_handle that is defined by the linker; no initialization required.
4983         * coree.h: Remove mono_module_handle, add __ImageBase, update
4984         mono_image_open_from_module_handle.
4985         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
4986         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
4987         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
4988         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
4989         to 4 GB away from image base address. IA64 version is not tested but was very
4990         easy to implement and should work if we ever need it.
4991         * domain.c (mono_init_internal): Avoid system error message boxes.
4992         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
4993         with has_entry_point. Handle do_mono_image_load fauilre correctly.
4994         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
4995         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
4996         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
4997
4998         Contributed under MIT/X11 license.
4999
5000 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5001
5002         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
5003         as part of the private mono API.
5004         
5005         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
5006         Do proper argument checking for methods that belong to generic classes.
5007         Do proper type resolution for GMFH/2.
5008         Fixes #377324.
5009         
5010 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5011
5012         * verify.c (do_switch): Fix a memory corruption bug with
5013         the jump index is out of bound.
5014
5015 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5016
5017         * verify.c: Disable debug code.
5018
5019 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5020
5021         * reflection.c (mono_image_get_methodbuilder_token): Use
5022         mono_image_get_methodspec_token_for_generic_method_definition
5023         instead of mono_image_get_memberref_token. We cache more memberef
5024         entries now.
5025
5026 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5027
5028         * verify.c: Inflate exception clause types.
5029         Fixes #402606.
5030         
5031 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5032
5033         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
5034         name.
5035
5036         * reflection.c (mono_image_get_ctorbuilder_token): Same.
5037
5038         * reflection.c (mono_image_create_method_token): Same.
5039
5040 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5041
5042         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
5043         It does the same as mono_image_get_methodref_token but works on
5044         MethodBuilder.
5045
5046         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
5047         and always generate a methodspec. This follows the old behavior and fixes
5048         the regressions in System.Core. 
5049
5050 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
5051
5052         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
5053         don't event mono_class_get () succeeds. Fixes #402182.
5054
5055 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5056
5057         * metadata-internals.h: Added MonoDynamicImage::methodspec
5058         hashtable to store methodspec tokens created for MethodBuilders.
5059
5060         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
5061         MethodBuilders as open instantiations if a methodspec was requested.
5062
5063         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
5064
5065         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
5066
5067         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
5068
5069         Fixes bug #349190.
5070
5071 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5072
5073         * loader.c (method_from_methodspec): Avoid crashing if the
5074         method lookup fails.
5075
5076 2008-06-20  Dick Porter  <dick@ximian.com>
5077
5078         * socket-io.c (get_socket_assembly): Cope with Moonlight network
5079         classes being in a different assembly.  Fixes bug 399184.
5080
5081 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
5082
5083         * loader.c (mono_loader_init): Make this callable multiple times.
5084         (mono_dllmap_insert): Call mono_loader_init () so this works even before
5085         the runtime is initialized. Fixes #401755.
5086
5087 2008-06-19  Dick Porter  <dick@ximian.com>
5088
5089         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
5090         Fixes bug 349688.
5091
5092 2008-06-19  Dick Porter  <dick@ximian.com>
5093
5094         * socket-io.c:
5095         * icall-def.h: Implement Socket generic Send() and Receive()
5096         methods.  Fixes bug 395168.
5097
5098 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
5099
5100         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
5101
5102         Contributed under MIT/X11 license.
5103
5104 2008-06-18  Martin Baulig  <martin@ximian.com>
5105
5106         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
5107         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
5108         set to 80.0.  The debugger <-> runtime interface is now frozen as
5109         well.   
5110
5111         * mono-debug.c
5112         (mono_debug_debugger_version): Bump to 4.
5113
5114 2008-06-18  Martin Baulig  <martin@ximian.com>
5115
5116         * debug-mono-symfile.c
5117         (load_symfile): Don't check the minor version.
5118
5119         * debug-mono-symfile.h: Bump the version number to 50.0.
5120
5121 2008-06-18  Martin Baulig  <martin@ximian.com>
5122
5123         * debug-mono-symfile.c
5124         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
5125         minimum required version.
5126
5127 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5128
5129         * reflection.c (mono_custom_attrs_from_property): Fix support for
5130         retriveving cattrs of dynamic inflated generic types.
5131
5132         * reflection.c (mono_custom_attrs_from_event): Same.
5133
5134         * reflection.c (mono_custom_attrs_from_field): Same;
5135
5136         * reflection.c (typebuilder_setup_events): Same cattrs of events.
5137
5138         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
5139         Moved to metadata.c.
5140
5141         * metadata.c: New functions to retrive the equivalent field, event
5142         of property from the generic type definition.
5143
5144         * metadata-internals.h: Added new functions from metadata.c.
5145
5146 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5147
5148         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
5149         to cached in a mempool is used.
5150
5151         * metadata.c (free_generic_class): In some situations field generic_info type
5152         is not properly dup'ed and leads to double free'ing.
5153
5154         Fixes #400643.
5155
5156 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5157
5158         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
5159         this arguments (will be needed later for generic methods).
5160         Collect stats.
5161
5162 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5163
5164         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
5165         Create a static RGCTX invoke wrapper for methods which require it.
5166
5167 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5168
5169         * object.c, class-internals.h: New function for checking whether
5170         an individual field is special static.
5171
5172 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
5175         linear search since the table is sorted.
5176
5177         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
5178         Fixes #324180.
5179
5180 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
5181
5182         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
5183         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
5184
5185         * gc.c (mono_domain_finalize): Allow an infinite timeout.
5186
5187         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
5188         
5189         * threads.c (mono_thread_request_interruption): Get rid of locking, use
5190         InterlockedCompareExchange to query and modify 
5191         thread->interruption_requested.
5192
5193         * object-internals.h (struct _MonoThread): Change interruption_requested
5194         to a gint32 so it can be modified by atomic operations. Add 
5195         'critical_region_level' from the managed side, change small_id to a guint32,
5196         add new set of 'unused' fields.
5197
5198         * appdomain.c: Bump corlib version.
5199
5200 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5201
5202         * class.c (mono_class_from_name): Search modules as well. Fixes
5203         #322332.
5204
5205 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5206
5207         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
5208         templates.  Templates are generalized with an additional type_argc
5209         argument.  RGCTX templates have type_argc==0, MRGCTX templates
5210         have type_argc>0.
5211
5212         * domain-internals.h, domain.c: New hash table for looking up
5213         MRGCTXs.
5214
5215         * metadata.c, metadata-internals.h: Rename hash and equal
5216         functions for MonoGenericInst's and make them public.
5217
5218         * class-internals.h: New data structures for the MRGCTX.  Macros
5219         for distinguishing slots in the RGCTX and the MRGCTX.
5220
5221 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5222
5223         * object.c (mono_method_get_imt_slot): Put the same methods of
5224         different instantiations of the same generic interface in the same
5225         IMT slots, to make generic sharing simpler.
5226
5227 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5228
5229         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
5230
5231         * metadata.c (mono_metadata_field_info_with_mempool): Added.
5232         This function works just like mono_metadata_field_info, but
5233         accept a mempool as argument to be used allocating memory.
5234
5235         * marshal.c (mono_marshal_load_type_info): Use new function
5236         to load marshal data into image mempool.
5237
5238 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5239
5240         * class.c (mono_class_inflate_generic_type_with_mempool):
5241         This function allows to inflate a generic type using
5242         a mempool.
5243
5244         * class.c (inflate_generic_type): Take a mempool as argument
5245         and use it to do type dup'ing.
5246
5247         * class.c (mono_class_setup_fields): Field type for generic
5248         generic classes are allocated from the image mempool.
5249
5250         * metadata.c (free_generic_class): Inflated field type is
5251         now allocated in the image mempool.
5252
5253 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5254
5255         * threads.c (thread_cleanup): Free MonoThread::name.
5256
5257 2008-06-12  Marek Habersack  <mhabersack@novell.com>
5258
5259         * appdomain.c (ensure_directory_exists): avoid unnecessary
5260         mkdir(2) calls when the shadow directory already exists.
5261         (mono_make_shadow_copy): copy also satellite assemblies from the
5262         private bin directories.
5263
5264 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5265
5266         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
5267         
5268         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
5269         a page boundary. Fixes #396219.
5270
5271 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5272
5273         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
5274         due to double-checked locking.
5275
5276 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5277
5278         * assembly.c (build_assembly_name): Release memory on failure.
5279
5280         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
5281
5282 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5283
5284         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
5285         memory on failure.
5286
5287 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5288
5289         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
5290         memory on failure.
5291
5292 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5293
5294         * loader.c (field_from_memberref): Check if field signature type is equal
5295         to the non-inflated type of the field. Fixes #398980.
5296
5297 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5298
5299         * assembly.c (mono_assembly_load_from_full): Call 
5300         mono_assembly_load_friends () outside the assemblies lock, since it can
5301         acquire the loader lock. Fixes #323696.
5302
5303         * reflection.c (resolve_object): Inflate the inst with the context for
5304         FieldOnTypeBuilderInst. Fixes #399010.
5305
5306 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5307
5308         * reflection.c (mono_image_get_field_on_inst_token): Don't
5309         inflate the field to encode it's signature. If it's a
5310         VAR or MVAR it should stay that way in the signature.
5311         Fixes #399047.
5312
5313 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5314
5315         * reflection.c (resolve_object): Release memory of inflated types.
5316
5317 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5318
5319         * loader.c (mono_method_get_signature_full): Remove assert about
5320         loading a methodspec to a generic method. We have such methods, such as
5321         System.Threading.Interlocked::CompareExchange<T>.
5322         This assert was removed since it crashes the verifier when it checks
5323         methods calling CompareExchange<T>.
5324
5325 2008-06-10  Marek Safar  <marek.safar@gmail.com>
5326
5327         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
5328         of Type array and not MonoType.
5329
5330 2008-06-10  Marek Habersack  <mhabersack@novell.com>
5331
5332         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
5333         <lupus@ximian.com>
5334
5335 2008-06-10  Martin Baulig  <martin@ximian.com>
5336
5337         * debug-mono-symfile.h
5338         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
5339         changes to the file format, but we were generating incorrect
5340         source file indices in the line number table due to a bug, which
5341         made backtraces report an incorrect source file.
5342
5343 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5344
5345         * mono-debug.c: Moved mono_debug_free_method_jit_info from
5346         mini/debug-mini.c to here.
5347
5348         * mono-debug.c (il_offset_from_address): Free memory from find_method.
5349
5350         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
5351         use it to release structs returned by mono_debug_find_method.
5352
5353 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
5354
5355         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
5356         since it needs to set method->slot for all interface methods.
5357
5358 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5359
5360         * class-internals.h: Forgot to add.
5361
5362 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5363
5364         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
5365
5366         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
5367         Lookup the custom attributes from property_hash.
5368
5369         * reflection.c (mono_save_custom_attrs): Save the custom attributes
5370         in property_hash. Allocate all data using the image mempool.
5371
5372         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
5373         for dynamic_custom_attrs to checks if the image is dynamic.
5374
5375 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5376
5377         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
5378         assemblies array.
5379         
5380         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
5381         runtime functions while holding the domain assemblies lock.
5382
5383 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5384
5385         * verify.c: Reapplied the last bit of the reverted changes.
5386
5387 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5388
5389         * verify.c: Reapplied more of the reverted changes.
5390
5391 2008-06-09  Martin Baulig  <martin@ximian.com>
5392
5393         * debug-mono-symfile.c (load_symfile): Check the major version
5394         first; if it's wrong, don't print the minor version in the error message.
5395
5396 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
5399         lock instead of the domain lock to avoid deadlocks, since the thread might
5400         already hold the loader lock.
5401
5402         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
5403         (mono_thread_attach): Ditto.
5404
5405         * monitor.c: Use a TLS variable for holding the current thread id instead
5406         of calling pthread_self ().
5407         (mono_monitor_init_tls): New internal function to initialize the TLS
5408         variable.
5409         (mono_monitor_try_enter_internal): Put the owner == id check after the
5410         owner == 0 check.
5411
5412         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
5413         missed optimizations when using gcc-4.3.
5414
5415 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
5416
5417         * reflection.c (mono_dynamic_image_free): Free the memory
5418         used by MonoGenericParam in MonoDynamicImage::gen_param.
5419
5420         * reflection.c (mono_reflection_setup_generic_class): Allocate
5421         container from mempool.
5422
5423         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5424         container from mempool.
5425
5426 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5427
5428         * threads.c (mono_set_pending_exception): New internal function to set the
5429         pending exception of the current thread.
5430         (mono_thread_get_and_clear_pending_exception): Check for 
5431         thread->pending_exception as well.
5432
5433         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5434
5435         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5436         it can trigger a collection.
5437
5438 2008-06-06  Martin Baulig  <martin@ximian.com>
5439
5440         Merged the `debugger-kahalo' branch.
5441
5442         * mono-debug.h
5443         (MONO_DEBUGGER_VERSION): Bumped to 72.
5444
5445         * debug-mono-symfile.h
5446         (MonoSymbolFileMethodIndexEntry): Removed.
5447         (MonoSymbolFileMethodEntry): New public typedef.
5448         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5449         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5450         `data_offset'.
5451         (MonoSymbolFileMethodEntry): Removed.
5452         (MonoSymbolFileLexicalBlockEntry): Removed.
5453         (MonoSymbolFileLineNumberEntry): Removed.
5454         (MonoDebugLexicalBlockEntry): Removed.
5455         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5456         removed `num_il_offsets' and `il_offsets'.
5457         (MonoSymbolFile): Replace `version' with `major_version' and
5458         `minor_version'.
5459         (MONO_SYMBOL_FILE_VERSION): Replace with
5460         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5461         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5462
5463         * debug-mono-symfile.c
5464         (mono_debug_symfile_lookup_location): Add support for the new line
5465         number table format.
5466
5467 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5468
5469         * metadata.c (free_generic_class): Release the inflated
5470         MonoClass of dynamic generic classes if it's not a generic
5471         type definition.
5472
5473 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5474
5475         * verify.c: Reapplied more of the reverted changes.
5476
5477 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5478
5479         * reflection.c (lookup_custom_attr): Clean the cached flag or
5480         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5481         for SRE types.
5482
5483 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5484
5485         * verify.c: Reapplied a small part of the reverted changes.
5486
5487 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5488
5489         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5490
5491         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5492         previously in managed code.
5493         (mono_monitor_exit): Ditto.
5494         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5495
5496         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5497         the managed definition.
5498
5499 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5500
5501         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5502
5503 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5504
5505         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5506         
5507         * monitor.c: Add some micro optimizations.
5508
5509         * icall.c (type_from_typename): Handle 'bool'.
5510
5511 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5512
5513         * verify.c: Implement constructor verification per P III 1.8.1.4.
5514         Fixes #396716.
5515
5516 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5517
5518         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5519         holding the assemblies lock here too.
5520
5521 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5522
5523         * verify.c: Kill stack_top function.
5524
5525 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5526
5527         * verify.c: Kill stack_get function.
5528
5529 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5530
5531         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5532
5533 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5534
5535         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5536         more reliable.
5537
5538         * verify.c (mono_method_verify): Inflate params and locals to avoid
5539         mismatch when checking for compatibility.
5540
5541 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5542
5543         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5544         Length prefix should be size in bytes. Fix bug #339530.
5545         
5546         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5547         Length prefix should be size in bytes. Fix bug #339530.
5548
5549         Code is contributed under MIT/X11 license.
5550
5551 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5552
5553         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5554
5555         Contributed under MIT/X11 license.
5556
5557 2008-06-05  Martin Baulig  <martin@ximian.com>
5558
5559         * mono-debug-debugger.c
5560         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5561
5562 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5565         while holding the assemblies lock to prevent deadlocks. Handle the case
5566         where the search hook returns NULL but the assembly was still loaded.
5567         Fixes #323696.
5568
5569         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5570         modify domain state.
5571
5572 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5573
5574         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5575         * Makefile.am (pedump_LDADD): Post-process object files and
5576         add dtrace-generated object file, if necessary.
5577
5578         Code is contributed under MIT/X11 license.
5579
5580 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5581
5582         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5583
5584 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5585
5586         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5587
5588 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5589
5590         * threads.c: Try to free everything from the delayed free table
5591         when shutting down threads, and set the variable to NULL after the
5592         table is freed so that calling
5593         mono_thread_hazardous_try_free_all() when shutting down the root
5594         domain doesn't crash.
5595
5596 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5597
5598         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5599         the caller if resulting type was inflated.
5600
5601         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5602         was inflated.
5603
5604         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5605
5606
5607 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5608
5609         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5610         class library tests.
5611
5612         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5613         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5614         #396989.
5615
5616 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5617
5618         * domain.c, domain-internals.h: The JIT infos are now freed by the
5619         JIT info table code.  They are freed immediately if there only a
5620         single JIT info table in circulation.  If there is more, the free
5621         is delayed via a queue.
5622
5623         * threads.c, threads-types.h: New hazard pointer function for
5624         freeing all freeable delayed items in one sitting.
5625
5626 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5627
5628         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5629
5630         * reflection.c (typebuilder_setup_properties): Same.
5631
5632         * reflection.c (typebuilder_setup_events): Same.
5633
5634 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5635
5636         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5637         and use it for allocating memory.
5638
5639         * reflection.c (mono_marshal_spec_from_builder): Same.
5640
5641         * reflection.c: Change code to use new signatures.
5642
5643         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5644
5645 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5646
5647         * decimal.c (rescale128): Put back one line which was accidently commented
5648         out.
5649         
5650         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5651         to cause crashes.
5652
5653 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5654
5655         * reflection.c (mono_reflection_generic_class_initialize): Name must
5656         be always malloc'ed so we can free it later on. Do this for field, property
5657         and event.
5658
5659         * metadata.c (free_generic_class): Free field, property and event names.
5660
5661 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5662
5663         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5664         instead of g_memdup.
5665
5666         * reflection.c (typebuilder_setup_fields): Same.
5667
5668 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5669
5670         * decimal.c (rescale128): Optimize this function a bit more.
5671
5672 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5673
5674         * metadata.c (free_generic_class): Release some memory from
5675         SRE generic classes.
5676
5677 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5678
5679         * reflection.c (mono_image_get_generic_field_token): No reference
5680         to name is kept, free it.
5681
5682         * reflection.c (mono_reflection_generic_class_initialize): Free
5683         more memory of the inflated field.
5684
5685 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5686
5687         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5688         code.
5689
5690 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5691
5692         * reflection.c (mono_dynamic_image_free): Release memory used by
5693         MonoDynamicImage::array_methods elements.
5694
5695         * reflection.c (assembly_add_win32_resources): Release memory after
5696         encoding.
5697
5698 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5699
5700         * decimal.c (log2_32): Use an optimized version for this function too.
5701         
5702         * decimal.c (log2_64): Fix this on 32 bit machines.
5703
5704 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5705
5706         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5707
5708         * class.c (mono_metadata_signature_deep_dup): Same.
5709
5710         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5711         a mempool.
5712
5713         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5714
5715         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5716
5717         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5718
5719         * class-internals.h: Update signatures to take a MonoMemPool.
5720
5721 2008-06-02  Dick Porter  <dick@ximian.com>
5722
5723         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5724         * icall-def.h: Add
5725         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5726         FormatMessage API to get the error text.  Fixes bug 321827.
5727
5728 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5729
5730         * decimal.c: Add some micro optimizations to make decimal operations faster.
5731
5732 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5733
5734         * reflection.c (method_encode_clauses): Take a mempool
5735         as parameter and use it to allocate the clause array.
5736
5737         * reflection.c (mono_image_get_field_on_inst_token): Free
5738         the inflated type after encoding it.
5739
5740         * reflection.c (mono_dynamic_image_free): Free each element
5741         of MonoDynamicImage::gen_params.
5742
5743         * reflection.c (reflection_methodbuilder_to_mono_method):
5744         Allocate the generic param array from the mempool.
5745         Allocate signature params from the mempool.
5746
5747         * reflection.c (mono_reflection_generic_class_initialize):
5748         Free inflated fields after been used.
5749
5750 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5751
5752         * icall.c: Reapply the memory leak fixes as they no
5753         longer make mono crash.
5754
5755 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5756
5757         * reflection.c (mono_type_get_object): Don't store the suplied
5758         MonoType with type_hash. A caller which pass a type that
5759         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
5760         might end with a pointer to freed memory.
5761         The solution is to use byval_arg or this_arg from the associated
5762         MonoClass of the supplied type.
5763
5764 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
5765
5766         * icall.c: Revert the rest of the last change as it breaks the build too.
5767
5768 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5769
5770         * icall.c: Revert a leak fix as it's breaking the build.
5771
5772 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5773
5774         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
5775
5776 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5777
5778         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
5779
5780 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5781
5782         * icall.c: Fix some memory leaks.
5783
5784 2008-05-29  Dick Porter  <dick@ximian.com>
5785
5786         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
5787         async socket operations from the pending list when a socket
5788         closes.  Leaving it until the threadpool services the event
5789         exposes a race condition when a socket descriptor is reused.
5790         Fixes bug 377589.
5791
5792 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5793
5794         * object.c: Fix negative index check for array alocation.
5795
5796 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5797
5798         * icall.c, marshal.c: Delegate wrappers should skip visibility.
5799         This check is performed by the verifier for IL created delegates
5800         and by Delegate::CreateDelegate for programatically created ones.
5801         Fixes #372406.
5802
5803 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5804
5805         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
5806         Fix code to use mono_array_size_t instead of int.
5807
5808         Based on patch by Luis F. Ortiz.
5809         Contributed under X11 license.
5810         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5811
5812 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5813
5814         * icall.c: Added ves_icall_System_Array_GetLongLength and
5815         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
5816         arrays.
5817
5818         * icall.h: Export both new functions.
5819
5820         Based on patch by Luis F. Ortiz.
5821         Contributed under X11 license.
5822         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5823
5824 2008-05-28  Martin Baulig  <martin@ximian.com>
5825
5826         The debugger now requires exactly r103463.
5827
5828         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
5829         This version is not supported by the debugger, wait for 72.
5830
5831 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5832
5833         * object.h: Changed array related functions to use
5834         mono_array_size_t instead of guint32. Forgot to commit this file.
5835
5836         Patch by Luis F. Ortiz.
5837         Contributed under X11 license.
5838         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5839
5840
5841 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5842
5843         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
5844         don't define it. Use the number literal instead.
5845
5846 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5847
5848         * icall.c: Changed array related functions to use
5849         mono_array_size_t instead of guint32.
5850
5851         * icall.c (ves_icall_System_Array_GetLength): Check for length
5852         overflow under MONO_BIG_ARRAYS.
5853
5854         Based on patch by Luis F. Ortiz.
5855         Contributed under X11 license.
5856         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5857
5858 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5859
5860         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
5861
5862         Based on patch by Luis F. Ortiz.
5863         Contributed under X11 license.
5864         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5865
5866 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5867
5868         * object.c, object.h: Changed array related functions to use
5869         mono_array_size_t instead of guint32.
5870
5871         Patch by Luis F. Ortiz.
5872         Contributed under X11 license.
5873         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5874
5875 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5876
5877         * object.h: Introduced mono_array_size_t typedef. This must be used
5878         in all places an array length is expected. This is 64bits wide if
5879         MONO_BIG_ARRAYS is enabled.
5880
5881         Patch by Luis F. Ortiz.
5882         Contributed under X11 license.
5883         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5884
5885 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5886
5887         * security-manager.c class.c: Set the class exception info by calling
5888         mono_class_set_failure ().
5889
5890         * class.c (mono_class_get_exception_data): New accessor function.
5891         (mono_class_set_failure): Store exception_data in the property hash.
5892
5893         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
5894         the struct as a property.
5895
5896         * loader.c (mono_get_method_full): Store the lookup result for method
5897         tokens in method_cache, the others in methodref_cache to decrease the memory
5898         usage of hash tables.
5899
5900         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
5901         (mono_image_init): method_cache is lazy inited now.
5902
5903         * metadata-internals.h (struct _MonoImage): Change method_cache to
5904         a MonoValueHashTable, add a separate methodref_cache.
5905
5906 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
5907
5908         * number-formatter.h: Fix tables to avoid arithemtic overflow in
5909           Double.ToString as exposed by Bug #383531.
5910
5911 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5912
5913         * number-formatter.h: Make some tables static.
5914
5915         * class.c (mono_method_set_generic_container): New accessor function.
5916         (mono_method_get_generic_container): Ditto.
5917
5918         * class-internals.h (struct _MonoMethod): Remove rarely used 
5919         'generic_container' field, store it in the property hash instead. Add 
5920         'is_generic' boolean field instead.
5921
5922         * image.c (mono_image_init): Initialize property_hash.
5923         (mono_image_close): Destroy property_hash.
5924
5925         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
5926         hold rarely used fields of runtime structures belonging to this image.
5927
5928         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
5929         to get/set method->generic_container.
5930
5931         * loader.c (mono_get_method_from_token): Avoid loading the method header for
5932         generic methods.
5933
5934 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
5935
5936         * class.c (mono_class_inflate_generic_method_full): Don't increase
5937         mono_stats.inflated_method_count for methods found in the cache.
5938
5939         * threads.c (mono_thread_request_interruption): Add a comment about 
5940         QueueUserAPC ().
5941
5942 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
5943
5944         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
5945         interface_offsets_packed table.
5946         
5947         * class.c (mono_class_init): Remove some dead code.
5948
5949         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
5950         mono_class_setup_vtable () when CAS is active to detect security problems.
5951
5952 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
5953
5954         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
5955
5956         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
5957         parameters as it's irrelevant for delegate checking.
5958
5959 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
5960
5961         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
5962
5963         * class.c (mono_class_init): Control the creation of a generic vtable using
5964         a global which is true by default, but set to false by the runtime startup code.
5965         
5966         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
5967         Disabled for now since it breaks the embedding API.
5968         Move the setup of class->methods for arrays to mono_class_setup_methods ().
5969         (mono_class_setup_methods): Add a memory barrier.
5970
5971         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
5972         when mono_class_init () doesn't compute the generic vtable.
5973         
5974 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
5975         * profiler.c: Added mono_profiler_install_statistical_call_chain,
5976         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
5977         to support call chains (backtrace) in the stat profiler.
5978         * profiler.c, profiler-private.h: Likewise.
5979
5980 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5981
5982         * generic-sharing.c: Init generic class when a method of it is
5983         requested via a runtime generic context.
5984
5985 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
5988
5989         * reflection.c (mono_type_get_object): Add a FIXME.
5990
5991         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
5992
5993         * class.c (mono_class_get_method_by_index): New helper function, returning an
5994         entry in the class->methods array.
5995
5996 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * class.c (mono_class_init): Only do the array optimization for szarrays. 
5999         Avoid creating a generic vtable for generic instances as well.
6000         (mono_class_get_method_from_name_flags): Don't search in the metadata for
6001         generic instances.
6002
6003 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
6004
6005         * loader.c (mono_get_method_constrained): Inflate the signature
6006         with class context. Fix #325283.
6007
6008 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6009
6010         * object.c (mono_class_create_runtime_vtable): Add a comment.
6011
6012         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
6013         where needed.
6014         (setup_interface_offsets): Handle the case when this is called twice for arrays.
6015         (mono_class_setup_vtable_general): Add an assert.
6016         (mono_class_init): Avoid creating a generic vtable for arrays.
6017
6018         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
6019         here, let mono_class_init () do that.
6020
6021         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
6022         interfaces in mscorlib.
6023
6024         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
6025         interfaces. Add some comments.
6026         (mono_class_init): Call mono_class_setup_methods () here since it is no
6027         longer called by mono_class_setup_vtable ().
6028
6029         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
6030         not set in class->vtable.
6031         (mono_class_create_runtime_vtable): Reenable the disabled code.
6032
6033         * object.c (mono_class_create_runtime_vtable): Disable the last change for
6034         now as it causes some test failures.
6035
6036         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
6037         if using the vtable trampoline. Also remove some strange code which put the
6038         generic methods themselves into the vtable slots. Remove the AOT init_vtable
6039         stuff as it is no longer needed.
6040
6041 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6042
6043         * pedump.c: Give make --verify all option check code as well.
6044         Using --verify code won't check for metadata now.
6045
6046 2008-05-19  Martin Baulig  <martin@ximian.com>
6047
6048         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
6049
6050         * mono-debug.c
6051         (_mono_debug_using_mono_debugger): New global variable; it's set
6052         directly by the debugger, so mono_debug_using_mono_debugger() also
6053         works after attaching.
6054
6055 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6056
6057         * object.c (mono_class_create_runtime_vtable): Use memory barriers
6058         as we do double checked locking on MonoClass::runtime_info and
6059         MonoClassRuntimeInfo::domain_vtables.
6060
6061 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
6062
6063         * debug-helpers.c (print_field_value): Fix a warning.
6064
6065 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
6066
6067         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
6068         set in the AOT case.
6069
6070 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6071
6072         * class.c (mono_class_setup_vtable_general): Use memory barriers
6073         as we do double checked locking on MonoClass::vtable.
6074
6075 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6076
6077         * reflection.c (resolve_object): Inflate only if the generic context
6078         is not null. Fixes #389886.
6079
6080 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
6081
6082         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
6083         instead of g_free.
6084
6085         Code is contributed under MIT/X11 license.
6086
6087 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6088
6089         * class.c: Revert unrelated change.
6090
6091 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6092
6093         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
6094         a generic instantiation, use mono_class_from_mono_type instead of playing
6095         with MonoType directly.
6096
6097 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6098
6099         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
6100         checks must ignore generic instantiations, so mono_class_has_parent is not
6101         suitable. Fixes #390128.
6102
6103 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
6104
6105         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
6106         it to avoid registering tokens during metadata generation. Fixes #390023.
6107
6108 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
6109
6110         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
6111         consistent.
6112
6113         Contributed under MIT/X11 license.
6114
6115 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
6116
6117         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
6118         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
6119         to fixup the EXE image.
6120         (mono_cleanup): Use mono_close_exe_image.
6121         (mono_close_exe_image): New function.
6122         * image.c: Include "marshal.h".
6123         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
6124         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
6125         counting when the image is loaded outside of mono_image_open_full. Set status
6126         based on GetLastError.
6127         * coree.c: Include required headers. Add init_from_coree.
6128         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
6129         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
6130         (_CorExeMain): Set init_from_coree.
6131         (CorExitProcess): Only call ExitProcess for now.
6132         (CorBindToRuntimeEx): New stub implementation.
6133         (CorBindToRuntime): New function.
6134         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
6135         (MonoFixupExe): ILONLY executables require no fixups.
6136         (mono_set_act_ctx): New function to set activation context.
6137         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
6138         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
6139         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
6140         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
6141         as MONO_INTERNAL.
6142         * domain-internals.h: Add mono_close_exe_image.
6143
6144         Contributed under MIT/X11 license.
6145
6146 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6147
6148         * metadata.c (mono_metadata_compute_size): Correctly calculate field
6149         size for generic param and event tables. Fixes #388977.
6150
6151 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
6152
6153         * loader.c (mono_method_signature): Use memory barriers because of the double
6154         checked locking pattern.
6155
6156         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
6157         aborting or aborted as well. Fixes #376391.
6158         
6159         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
6160         existing runtime state in the Suspend handler during shutdown.
6161
6162 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
6163
6164         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
6165
6166         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
6167         which are starting up or shutting down.
6168
6169         * threads.c (mono_threads_set_shutting_down): Don't return a value since
6170         this function never returns if the runtime is already shutting down.
6171
6172         * icall.c (ves_icall_System_Environment_Exit): Update after 
6173         mono_threads_set_shutting_down () signature change.
6174         
6175 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
6176
6177         * class.c: Added can_access_instantiation to verify if the instantiation
6178         is visible. Fix access check for nested types as they returned TRUE
6179         before doing type and generic instantiation visibility checks.
6180
6181 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6182
6183         * reflection.c (mono_reflection_create_generic_class): The created type
6184         must have a different container from its TypeBuilder. Otherwise they
6185         will end sharing generic arguments, which is wrong.
6186
6187         Due to the sharing, making a generic instance of the created type using
6188         the TypeBuider generic arguments resulted in the generic type definition
6189         been returned, which is wrong as well.
6190
6191         As a bonus the code was leaking the type_params array. This memory should
6192         be allocated from the image mempool.
6193
6194         This fixes bug #354047.
6195
6196 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6197
6198         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
6199         to here         as they are now used in assembly.c new code.
6200         Added a skipverification flag to MonoAssembly.
6201         New internal function mono_assembly_has_skip_verification.
6202
6203         * assembly.c: New function mono_assembly_has_skip_verification. It checks
6204         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
6205         part of #387274.
6206
6207 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6208
6209         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
6210         needed. Fixes #387034.
6211
6212         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
6213
6214 2008-05-06  Miguel de Icaza  <miguel@novell.com>
6215
6216         * assembly.c (mono_assembly_load_reference): Prevent crash while
6217         disassembling Silverlight 2.0 executables while we still do not
6218         have GACed libraries.
6219
6220 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6221
6222         * reflection.c: Special case generic type definitions as well. Fixes #383444.
6223
6224 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
6225
6226         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
6227         of the dynamic case. Fixes #387404.
6228
6229 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6230
6231         *verify.c (mono_verifier_is_class_full_trust): If under
6232         verify_all and the verifier mode was not set, only
6233         gac and corlib types are fulltrust. This makes --verify-all
6234         usable to detect unverifiable code, which is the expected
6235         use case.
6236
6237 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6238
6239         * verify.h: Ops, commited the header with debug
6240         enabled.
6241
6242 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6243
6244         * verify.c (merge_stack): Use the new value on unverifiable
6245         stack merges.
6246
6247         * verify.c (verify_type_compatibility_full): Comparison
6248         of nullable types can't use mono_class_is_assignable_from.
6249
6250         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
6251         that makes all verification errors be reported.
6252
6253         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
6254         mono_method_verify.
6255
6256 2008-05-05  Robert Jordan  <robertj@gmx.net>
6257
6258         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
6259         support for value types. See #386415.
6260
6261         * object.c: comments.
6262
6263         Code is contributed under MIT/X11 license.
6264
6265 2008-05-05  Martin Baulig  <martin@ximian.com>
6266
6267         * debug-mono-symfile.h
6268         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
6269         for old pre-terrania symbol files.
6270
6271 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6272
6273         * mono-config.c: Add ppc64 architecture.
6274
6275         Code is contributed under MIT/X11 license.
6276
6277 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6278
6279         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
6280           PPC64 uses function descriptors as well.
6281
6282         Code is contributed under MIT/X11 license.
6283
6284 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
6285
6286         * object.c (compute_class_bitmap): Ignore literal static fields.
6287
6288         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
6289         var has an invalid format.
6290         (describe_ptr): Add some sanity checks for the vtable.
6291         (add_nursery_frag): Clear unused nursery fragments.
6292         (major_collection): Clear all remaining nursery fragments.
6293
6294 2008-05-03  Robert Jordan  <robertj@gmx.net>
6295
6296         * image.c, metadata-internals.h: add thunk_invoke_cache.
6297
6298         * marshal.c, marshal.h: implement
6299         mono_marshal_get_thunk_invoke_wrapper ().
6300
6301         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
6302
6303         Code is contributed under MIT/X11 license.
6304
6305 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6306
6307         * verify.c (do_leave): Empty the stack.
6308
6309 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6310
6311         * class.c (mono_class_is_assignable_from): Variance
6312         doesn't work between reference and value types. For example,
6313         given type C<T+>, C<int32> is not assignable to C<object>.
6314         Break the argument checking loop on first error. 
6315
6316 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
6317
6318         * icall.c : base64_to_byte_array() needs some more strict
6319           check for sequence of '=' characters. Patch by Santa
6320           Marta (http://deee.g.hatena.ne.jp/santamarta).
6321
6322           Contributed under MIT/X11 license.
6323           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
6324
6325 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
6326
6327         * domain.c: Disable LoadLibrary support to fix Win32 build.
6328
6329         Code is contributed under MIT/X11 license.
6330
6331 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
6332
6333         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
6334         to help with cache behaviour.
6335
6336 2008-05-01  Miguel de Icaza  <miguel@novell.com>
6337
6338         * appdomain.c (mono_domain_from_appdomain): Add new accessor
6339         method. 
6340
6341 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
6342
6343         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
6344
6345 2008-05-01  Dick Porter  <dick@ximian.com>
6346
6347         * process.c (process_get_fileversion): Only pass 16 bits of
6348         language ID to VerLanguageName.  Fixes bug 381204.
6349
6350 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6351
6352         * verify.c (mono_method_verify): Fix the comparison
6353         operator for code bounds check.
6354
6355 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6356
6357         * verify.c (mono_method_verify): Check the bounds of
6358         all access of the code array.
6359
6360 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
6361
6362         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
6363
6364 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * image.c (mono_image_strong_name_position): Fix return value when the rva is
6367         not valid.
6368
6369 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6370
6371         * loader.c (mono_get_method_from_token, mono_method_signature): Add
6372         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
6373         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
6374         fixup main EXE images when using mono.exe for mixed-mode assembly support.
6375         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
6376         mono_runtime_load.
6377         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
6378         runtime initialization from metadata.
6379         * assembly.c: Remove obsolete ceGetModuleFileNameA.
6380         (mono_set_rootdir): Use mono_get_module_file_name.
6381         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
6382         handles.
6383         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
6384         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
6385         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
6386         MonoCLIImageInfo. Add support for module handles.
6387         (load_cli_header): Update mono_cli_rva_image_map signature.
6388         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
6389         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
6390         (mono_image_rva_map): Add support for module handles.
6391         (mono_image_ensure_section_idx): Add support for module handles.
6392         (mono_image_close): Add support for module handles.
6393         (do_load_header): Add support for module handles.
6394         (mono_image_open_from_module_handle): New function for internal use.
6395         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
6396         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
6397         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
6398         handles.
6399         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
6400         * image.h: Add mono_image_fixup_vtable.
6401         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
6402         support.
6403         * coree.h: New file.
6404         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
6405         unsupported native code.
6406         (mono_marshal_set_callconv_from_modopt): New function splitted from
6407         mono_marshal_get_managed_wrapper.
6408         (mono_marshal_get_managed_wrapper): Use
6409         mono_marshal_set_callconv_from_modopt.
6410         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
6411         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
6412         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
6413         that results in a deadlock when the runtime is loaded in _CorDllMain.
6414         * Makefile.am: Add coree.c and coree.h.
6415
6416         Contributed under MIT/X11 license.
6417
6418 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6419
6420         * generic-sharing.c: Search for type arguments in array element
6421         types as well.
6422
6423 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6424
6425         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6426
6427         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6428
6429         * object.c: Don't setup the RGCTX when the vtable is created,
6430         because we're setting it up lazily now.
6431
6432 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6433
6434         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6435         64 bit support.
6436
6437 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6438
6439         * verify.c (verify_class_for_overlapping_reference_fields): 
6440         If class is under fulltrust allow reference types to overllap
6441         if they have the same RVA.
6442
6443 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6444
6445         * pedump.c: Added new flag valid-only, that makes the verifier
6446         behaves just like --security=validil. It won't fail type load
6447         due to unverifiable restrictions.
6448
6449 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * class-internals.h (struct MonoMethod): Added a verification_success
6452         field to cache verifier executions. Reduced MonoMethod:slot size by
6453         one bit.
6454
6455 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6456
6457         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6458         instead of a 'vt' argument to save an indirection and to allow these to be used
6459         for valuetypes.
6460         (scan_vtype): New helper function to scan an area using a gc descriptor.
6461         (mono_gc_wbarrier_value_copy): Implement this.
6462         (handle_remset): Add support for REMSET_VTYPE.
6463         (find_in_remset_loc): Ditto.
6464         (mono_gc_base_init): Allow some debugging options to be controlled through the
6465         use of the MONO_GC_DEBUG env variable.
6466         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6467         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6468
6469 2008-04-23  Martin Baulig  <martin@ximian.com>
6470
6471         * domain.c (mono_domain_create): Move the call to
6472         mono_debug_domain_create() down, after allocating the domain id.
6473
6474 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6475
6476         verify.c (verify_class_for_overlapping_reference_fields): Skip
6477         static fields while verifying for overlapping fields as they
6478         don't matter at all.
6479
6480 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6481
6482         * domain-internals.h: added a declaration of
6483         mono_make_shadow_copy.
6484
6485         * assembly.c (mono_assembly_open_full): shadow copying of
6486         assemblies moved to here, so that all the assemblies within the
6487         application domain's private binary directories can be
6488         processed. Fixes bug #380546
6489
6490         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6491         mono_make_shadow_copy and made non-static. The decision whether
6492         to shadow-copy an assembly is made based on its location - it's
6493         copied if it's in one of the private application domain binary
6494         directories and its different to the target file in the shadow
6495         directory. Fixes bug #380546
6496
6497 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6498
6499         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6500
6501         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6502         types.
6503
6504         * reflection.c (mono_image_create_token): Handle 
6505         Method/ConstructorOnTypeBuilderInst.
6506         (resolve_object): Ditto.
6507         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6508         so it can be called from resolve_object. Also handle the case when the inflated
6509         class already has its methods setup.
6510
6511 2008-04-21  Martin Baulig  <martin@ximian.com>
6512
6513         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6514
6515 2008-04-20  Geoff Norton  <gnorton@novell.com>
6516
6517         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6518         pointer dereference.
6519
6520 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6521
6522         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6523         portability API to look up the assembly file. Fixes behavior in
6524         situations when the application has a bin/ directory, but the
6525         assembly search patch refers to Bin/ (and thus the requested file
6526         name is Bin/SomeLibrary.dll). Fixes bug #379888
6527
6528 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6529
6530         verify.c (mono_type_is_generic_argument): Extracted this check
6531         from a dozen places to here.
6532
6533         verify.c: Fixed all issues related to boxing generic arguments
6534         and their constraints.
6535
6536 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6537
6538         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6539
6540 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6543         isn't finished yet. Fixes #363447.
6544
6545 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6546
6547         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6548         Fixes #346419.
6549
6550 2008-04-13  Jb Evain  <jbevain@novell.com>
6551
6552         * domain.c: update the 2.1 profile versions.
6553         Merged from the Moonlight 2 branch.
6554
6555 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6556
6557         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6558         mscorlibs for the non-refonly case as well.
6559
6560         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6561         in mono_assembly_load_from_full (). Fixes #378924.
6562
6563 2008-04-11  Geoff Norton  <gnorton@novell.com>
6564
6565         * icall.c: The global extern environ doesn't exist on Mac.  We
6566         need to call NSGetEnviron instead.
6567
6568 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6569
6570         verify.c: Add generic method constraint verification.
6571
6572 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6573
6574         class.c (mono_class_inflate_generic_method_full): Add a long
6575         explanation to the is_mb_open hack. Remove the FIXME.
6576
6577 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6578
6579         * verify.c (mono_method_verify): Mark all unknown opcodes
6580         as invalid. Mark jmp as unverifiable.
6581
6582 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6583
6584         * verify.c: Add code to do type constraint verification on class instances.
6585
6586         * verify.c (mono_verifier_verify_class): Use the type constraint 
6587         verification code.
6588
6589 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6590
6591         * class.c (mono_class_get_field_default_value): Don't pass cindex
6592         as hint to mono_metadata_get_constant_index. The local is not initialized
6593         and should contain garbage most of the time. This could only work
6594         with a lot of luck.
6595
6596 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6597
6598         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6599
6600 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6601
6602         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6603
6604         * class.c (mono_class_from_generic_parameter): Save the token of the
6605         generic param in MonoClass::sizes.generic_param_token.
6606
6607         * reflection.c (mono_custom_attrs_from_class): If the class type is
6608         VAR or MVAR retrieve the attributes of the generic param.
6609
6610 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6611
6612         * class.c (mono_class_init): Do class verification if the verifier
6613         is enabled.
6614
6615 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6616
6617         * verify-internal.h: Added mono_verifier_verify_class.
6618
6619         * verify.c: Added mono_verifier_verify_class. It checks for
6620         classes with explicit layout that have overlapping reference fields.
6621
6622         * pedump.c: Init the verifier state prior to verification. Fixed
6623         command line arguments.
6624
6625 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6626
6627         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6628
6629 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6630
6631         * verify-internals.h: Fix a warning.
6632
6633 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6634
6635         * verify-internals.h: New header with the verifier configuration
6636         extracted from mini.c.
6637
6638         * verify.c: Implemented the new functions exported by verify-internals.h.
6639
6640 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6641
6642         * verify.c: Add proper verification of ckfinite.
6643
6644 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6645
6646         * verify.c (do_conversion): Improved error message to something
6647         more meanfull.
6648
6649         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6650         with primitive types.
6651
6652 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6653
6654         * verify.c: Added tail prefix checking. Marked icall
6655         as unverifible.
6656
6657 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6658
6659         * verify.c: Fix the detection of branches to the middle
6660         of an instruction.
6661
6662 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6663
6664         * verify.c: Implemented verification of volatile. and
6665         unaligned. prefix. Check if a type is valid after retrieving it.
6666
6667 2008-04-01  Dick Porter  <dick@ximian.com>
6668
6669         * process.c (process_get_fileversion): If there's no string block,
6670         set the file language to en_US.  Fixes the other new part of bug
6671         374600.
6672
6673 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6674
6675         * class.c: New functions mono_method_can_access_field_full and
6676         mono_method_can_access_method_full. They perform type visibility
6677         and type site check.
6678
6679         * class-internal.h: Added exported functions.
6680
6681         * verify.c: Use new functions to implement proper visibility checks.
6682
6683 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6684
6685         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6686
6687 2008-03-28  Dick Porter  <dick@ximian.com>
6688
6689         * process.c (process_get_fileversion): Use the first language ID
6690         we see, rather than insisting on an invariant language.  Fixes bug
6691         374600.
6692
6693 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6694
6695         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6696         the streams to fix reading of invalid memory later.
6697
6698         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6699         to ease debugging.
6700
6701 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6702
6703         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6704         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6705
6706 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6707         * threads.h: Added MonoThreadManageCallback type and
6708         mono_thread_set_manage_callback prototype
6709         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6710         (used to store the mono_thread_manage callback).
6711         * threads.c: Added mono_thread_set_manage_callback, and handle
6712         "MonoThread->manage_callback" in build_wait_tids.
6713
6714 2008-03-26  Dick Porter  <dick@ximian.com>
6715
6716         * process.c (process_get_fileversion): Set FileVersionInfo strings
6717         to Empty when the resource doesn't have the particular info.
6718         Fixes bug 355717.
6719
6720 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6721
6722         * verify.c (mono_method_verify): Proper prefix validation.
6723
6724 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6725
6726         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6727         itself in a separate argument instead of throwing them. Fixes #373448.
6728
6729         * appdomain.c: Bump corlib version.
6730
6731 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6732
6733         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
6734
6735 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6736
6737         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
6738         version macros.
6739
6740 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6741
6742         * generic-sharing.c, class-internals.h: Code for putting
6743         reflection types into the runtime generic context.
6744
6745 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6746
6747         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
6748         Fixes #340662. 
6749
6750
6751 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
6752
6753         * verify.c (VerifyContext): Added instruction prefix data to the struct.
6754
6755         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
6756
6757         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
6758
6759         * verify.c (do_cast): Let the result value keep the boxed status.
6760
6761         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
6762
6763 2008-03-17  Jb Evain  <jbevain@novell.com>
6764
6765         * reflection.c: when running on a 2.0 runtime, emit
6766         unconditionally the #~ header version as 2.0, and the
6767         CLI header version as 2.5, for symmetry's sake with csc.
6768
6769 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6770
6771         * class.c: Remove the unused cache_interface_offsets stuff.
6772
6773         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
6774         profiler.c: Fix warnings.
6775
6776 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6777
6778         * generic-sharing.c, class-internals.h: Support for putting
6779         methods into the runtime generic context.
6780
6781 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6782
6783         * class.c (mono_class_setup_fields): Ignore calls made to this function for
6784         classes which are generic instances of not-yet finished typebuilders. Fixes
6785         #351172.
6786
6787         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
6788
6789 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
6790
6791         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
6792
6793         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
6794         field, replace it with a hash table in MonoDynamicImage.
6795
6796         * reflection.c (inflate_mono_method): Access the generic definition object from
6797         image->generic_def_objects instead of imethod->reflection_info.
6798
6799         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
6800
6801         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
6802         
6803         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
6804         function in reflection.c so it is easier to keep in sync with the dynamic image
6805         creation code.
6806
6807         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
6808         mono_image_close ().
6809
6810 2008-03-15  Mark Probst  <mark.probst@gmail.com>
6811
6812         * class.c (mono_class_generic_sharing_enabled): Disable generic
6813         sharing for all architectures except AMD64 and x86 to fix build.
6814
6815 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6816
6817         * verify.c: Use the generic definition MonoGenericContext when available.
6818         Remove code for checking generics instance compatibility in favor of
6819         mono_class_is_assignable_from.
6820
6821 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6822
6823         * marshal.c, marshal.h, metadata-internals.h, image.c,
6824         wrapper-types.h: New wrapper for invoking a shared static method
6825         without having to pass the runtime generic context argument.
6826
6827 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6828
6829         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
6830
6831 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6832
6833         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
6834         
6835         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
6836         create a token from a FieldOnTypeBuilderInst.
6837         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
6838         (resolve_object): Ditto.
6839
6840         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
6841         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
6842
6843 2008-03-14  Martin Baulig  <martin@ximian.com>
6844
6845         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
6846
6847         * debug-mono-symfile.h
6848         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
6849         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
6850
6851 2008-03-10  Martin Baulig  <martin@ximian.com>
6852
6853         * debug-mono-symfile.h
6854         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
6855         `lexical_block_table_offset'.
6856         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
6857         `lexical_blocks'.
6858         (MonoSymbolFile): Added `version'.
6859
6860         * mono-debug.h
6861         (MonoDebugLexicalBlockEntry): Removed.
6862         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
6863         `lexical_blocks'.
6864
6865         * mono-debug.c (mono_debug_add_method): Don't compute lexical
6866         blocks here; the debugger now does this internally.
6867
6868 2008-02-27  Martin Baulig  <martin@ximian.com>
6869
6870         * object.c (mono_runtime_exec_main): Call
6871         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
6872         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
6873
6874 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6875
6876         * verify.c (verify_type_compatibility_full): Allow native int to be converted
6877         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
6878
6879 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6880
6881         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
6882         ldftn with a virtual method.
6883
6884 2008-03-13  Geoff Norton  <gnorton@novell.com>
6885
6886         * decimal.c:  Only include memory.h if the platform has it.
6887
6888 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
6889
6890         * assembly.c, class.c, metadata-internals.h: make sure public key
6891         tokesns are compared in a case-insensitive way. Also, all
6892         the lookups in the GAC use a lowercase public key token
6893         (gaacutil already does the lowercasing on install). Fixes
6894         bug #369541.
6895
6896 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
6897
6898         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
6899         and return value.
6900
6901 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
6902
6903         * image.c: when someone loads a mscorlib from a file, return the
6904         currently loaded mscorlib (fixes bug #369253).
6905
6906 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6907
6908         * class.c: handle types with no parents by forcing them to have
6909         System.Object as a parent and marking them as broken (this currently
6910         allows the first part of bug #369173 to work as well, likely because
6911         we don't check for typeload exceptions everywhere yet).
6912
6913 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
6914
6915         * class.c: more complete check that types belong to corlib
6916         (fixes second part of bug #369173).
6917
6918 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
6919
6920         * generic-sharing.c:  Including glib.h for the MSVC builds to define
6921           "inline" to "__inline" before including mono-membar.h.
6922           
6923         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
6924           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
6925           MSVC builds.
6926
6927         Contributed under MIT/X11 license.
6928
6929 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6930
6931         * verify.c (do_invoke_method): Remove return type validation.
6932
6933         * verify.c (do_ret): Do return type validation at return site instead of
6934         call site.
6935
6936 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6937
6938         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
6939
6940         * verify.c: Some todos cleaned and improved a few error messages.
6941
6942 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
6943
6944         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
6945
6946 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6947
6948         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
6949         system types correctly.
6950
6951         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
6952         function.
6953
6954 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6955
6956         * assembly.c (build_assembly_name): Fix a warning.
6957
6958 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6959
6960         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
6961         the called function takes an object type argument. Fixes storing or
6962         valuetypes across remoting as well as reducing memory usage.
6963         * image.c, metadata-internals.h: remove now unused ldfld_remote and
6964         stfld_remote wrapper caches.
6965
6966 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6967
6968         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
6969         is not found.
6970
6971         * reflection.c (mono_image_register_token): New helper function to save
6972         a token->object mapping.        
6973
6974         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
6975         managed code.
6976
6977         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
6978         one dimension arrays. Fixes #367670.
6979         (mono_reflection_get_type_internal): Ditto.
6980
6981 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6982
6983         * marshal.c: mono_load_remote_field_new() always returns object.
6984         so use the proper signature (fixes bug #366445).
6985
6986 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6987         
6988         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
6989         add an 'inline_failure' flag instead.
6990
6991 2008-03-04  Mark Probst  <mark.probst@gmail.com>
6992
6993         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
6994         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
6995         contains the location of "this", used for exception handling.
6996
6997 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6998
6999         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
7000         their size on all platforms for perf reasons.
7001
7002 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7003
7004         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
7005         object-internal.h
7006
7007         * object-internal.h: Same.
7008
7009 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7010
7011         * reflection.h: Fix the build I just broke.
7012
7013 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7014
7015         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
7016         Test if a token is valid, this remove explicit usage of 
7017         MonoDynamicImage::tokens from the verifier code.
7018
7019         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
7020
7021         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
7022         instead of direct access to MonoDynamicImage::tokens.
7023
7024 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7025
7026         * verify.c (token_bounds_check): Fix the build I just broke.
7027
7028 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7029
7030         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
7031
7032         * verify.c (verifier_load_method): Fixed the errors message.
7033
7034         * verify.c (mono_method_verify): Fixed a debug message.
7035
7036 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
7037
7038         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
7039         mono-perfcounters.h, class-internals.h: support for predefined
7040         writable counters, query of categories and counters, bugfixes.
7041
7042 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7043
7044         * verify.c (do_refanytype): Verify the refanytype opcode.
7045
7046         * verify.c (mono_method_verify): Use do_refanytype.
7047
7048 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7049
7050         * verify.c (do_mkrefany): Verify the mkrefany opcode.
7051
7052         * verify.c (mono_method_verify): Use do_mkrefany.
7053
7054 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
7055
7056         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
7057         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
7058         implementation.
7059
7060 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7061
7062         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
7063         the type load exception.
7064
7065 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7066
7067         * verify.c: Added a few FIXME for method signatures
7068
7069         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
7070         of mono_method_get_signature and get vararg call working. Removed unused
7071         checks for return value.
7072
7073         * verify.c (do_refanyval): Verify the refanyval opcode.
7074
7075         * verify.c (mono_method_verify): Implemented verification of arglist and
7076         use do_refanyval.
7077
7078 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7079
7080         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
7081         vtypes to marshal.c.
7082
7083         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
7084         it works for AOT as well.
7085
7086 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
7087
7088         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
7089         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
7090         the system time is adjusted.
7091
7092 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
7093
7094         * icall.c, icall-def.h: use the new time functions (fixes the
7095         non-monotonic behaviour of TickCount).
7096
7097 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7098
7099         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
7100         it breaks the build.
7101         
7102         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
7103         cattr is not finished yet.
7104
7105 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7106
7107         * verify.c: Proper token validation for field, method and type.
7108
7109 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7110
7111         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
7112
7113         * loader.c (method_from_memberref): Generate type load error instead of method missing
7114         if the type is not found.
7115
7116 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7117
7118         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
7119         some of the conversions caused the generation of a marshal directive exception.
7120
7121 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7122
7123         verify.c: Report which exception should be thrown by the JIT.
7124         Added a lot of FIXME notes.
7125
7126 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7127
7128         * generic-sharing.c: Runtime generic context slots are not
7129         instantiated on init anymore.  Instead, provide function to do the
7130         instantiating on demand.
7131
7132         * class-internals.h: Added vtable to runtime generic context.
7133         Macros for encoding direct and indirect slot offsets in one
7134         guint32.
7135
7136 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7137
7138         * object.c, generic-sharing.c: Moved some generic sharing code
7139         from object.c to generic-sharing.c.
7140
7141         * generic-sharing.c: Added support for extensible runtime generic
7142         context.
7143
7144         * metadata-internals.h: Two new hash tables in MonoImage for
7145         extensible runtime generic context support.
7146
7147         * domain.c: Unregister generic vtables upon domain unloading.
7148
7149         * image.c: Destroy new hash tables upon image unloading.
7150
7151         * metadata.c: Unregister generic subclasses upon image unloading.
7152
7153         * class-internals.h: New data structure for runtime generic
7154         context template.  New fields in the runtime generic context for
7155         extensible part.
7156
7157         * Makefile.am: Added generic-sharing.c.
7158
7159 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7160
7161         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
7162         there is a pending loader exception, raise it.
7163
7164         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
7165         same.
7166
7167         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
7168         same.
7169
7170         Fixes #363450.
7171
7172 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7173
7174         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
7175
7176         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
7177         
7178         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
7179         ref-only requests for compatibility with MS.
7180
7181 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7182
7183         * reflection.c (mono_custom_attrs_from_method): Don't silently
7184         return an empty list for generic method instances.
7185         (mono_custom_attrs_from_param): Likewise.
7186
7187 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
7188             Raja R Harinath  <harinath@hurrynot.org>
7189
7190         Fix #354757
7191         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
7192         * class.c (mono_class_inflate_generic_method_full): Initialize it
7193         when a fully-open method is instantiated.
7194         * metadata.c (inflated_method_equal, inflated_method_hash): Update
7195         to new field.
7196         * reflection.c (inflate_mono_method): Don't create a temporary context.
7197
7198 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7199
7200         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
7201         Compute correct value, to prepare for imethod->reflection_info going away.
7202
7203 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7204
7205         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
7206
7207 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7208
7209         * verify.c: Implement skip visibility flag.
7210
7211 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7212
7213         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
7214         which contains an extra field to tell the kind of exception that should be thrown.
7215
7216         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
7217
7218 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
7219
7220         * loader.c (mono_method_get_param_names): Initialize 'klass' after
7221         'method' is updated.
7222
7223 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
7224
7225         * class.c (mono_class_layout_fields): Set class->min_align for classes using
7226         explicit layout as well. Fixes #360375.
7227
7228 2008-02-11  Geoff Norton  <gnorton@novell.com>
7229
7230         * loader.c: Guard and dereference against inflated generic methods
7231
7232 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
7233
7234         * class.c: Include Retargetable spec in assembly name.
7235         * assembly.c: Always include PublicKeyToken spec in assembly name
7236         (with value "null" if assembly is not signed), and include
7237         Retargetable spec.
7238         * icall-def.h: Added icall for Assembly.get_fullname.
7239         * icall.c: Added icall returning the fullname of an assembly.
7240
7241 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7242
7243         * class.c (mono_class_setup_vtable_general): Add a missing call to
7244         mono_class_setup_methods () which is needed in the AOT case.
7245
7246 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
7247
7248         * verify.c (mono_type_get_stack_name): Added. Return the name for the
7249         stack type of the given MonoType.
7250
7251         * verify.c (verify_type_compatibility_full): Handle the void type.
7252
7253         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
7254         way stack merging works.
7255
7256         * verify.c (store_local): Improved verification message.
7257
7258         * verify.c (do_branch_op): If the merging is invalid, the method
7259         is unverifiable and not invalid. Improved error message.
7260
7261         * verify.c (merge_stacks): Properly merge a boxed valuetype and
7262         a reference type diferent than System.Object. Improved error
7263         message.
7264
7265 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
7266
7267         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
7268
7269         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
7270         type of an enum even if the argument is byref.
7271
7272         * verify.c: Replace all explicit uses of enumtype and enum_basetype
7273         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
7274
7275         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
7276
7277         *verify.c (verify_type_compatibility_full): Make enum types
7278         compatible with their base types.
7279
7280         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
7281         types are compatible for the special case of a boxed valuetype and
7282         System.Object.
7283
7284         * verify.c (verify_stack_type_compatibility): The function
7285         is_compatible_boxed_valuetype was extracted from here.
7286
7287         * verify.c (push_arg): Only set ctx->has_this_store if the method
7288         is not static.
7289
7290         * verify.c (do_ldelem): Fixed a typo in an error message and added
7291         strict check for mixing int32 and native int as the array type
7292         and ldelem type.
7293
7294         * verify.c (merge_stacks): Consider boxed valuetypes in the
7295         compatibility checks.
7296
7297 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
7298         * profiler.h: (MonoGCEvent): Added start-stop the world events.
7299
7300 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7301         *class.c: use_new_interface_vtable_code: renamed the env var to have
7302         a "MONO_" prefix, and fix the logic to enable it by default.
7303
7304 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7305         *class.c:
7306         mono_class_setup_vtable_general: rewrote the way in which interface
7307         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
7308         makes the code more maintainable.
7309         For now the old code is still there, and can be activated setting
7310         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
7311
7312 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
7313
7314         * verify.c: guarded some debug functions around and #ifdef.
7315
7316         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
7317
7318 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
7321         changes for now since they seem to break too many things.
7322
7323 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7324
7325         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
7326         mono_marshal_find_nonzero_bit_offset): Added macro and function
7327         for finding the byte- and bit-offset of a bitfield within a
7328         struct.
7329
7330 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7331
7332         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
7333         (mono_marshal_get_struct_to_ptr): Ditto.
7334
7335         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
7336         cctor_signature.
7337
7338 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7339
7340         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
7341         between methods for non-corlib types.
7342
7343 2008-02-02  Geoff Norton  <gnorton@novell.com>
7344
7345         * loader.c (mono_method_get_param_names): Populate the parameter name for 
7346         generic parameters as well. (Fixes #342536)
7347
7348 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
7349
7350         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
7351
7352         * verify.c (do_invoke_method): Fix for calling with byref structs.
7353
7354         * verify.c (do_cast): push a boxed value type based on the type token and not
7355         the type of stack.
7356
7357 2008-01-31  William Holmes  <billholmes54@gmail.com>
7358
7359         * process.c (process_module_string_read): Check the size returned form 
7360           VerQueryValue to avoid out of memory exception. 
7361
7362 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7363
7364         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
7365         Handle properly modules which are not in the moduleref table. Fixes
7366         #356938.
7367
7368 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7369
7370         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
7371         the dynamic case which is now in managed code.
7372         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
7373
7374         * marshal.c (mono_string_to_bstr): Fix a warning.
7375         (init_com_provider_ms): Ditto.
7376
7377         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
7378
7379         * exception.c (mono_get_exception_out_of_memory): New helper function.
7380
7381 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
7382
7383         * marshal.c: Add support for BSTR marshalling
7384         using other COM systems.
7385
7386         Code is contributed under MIT/X11 license.
7387
7388 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7389
7390         * object.c (mono_runtime_invoke_array): reverted previous
7391         commit as it breaks the build.
7392
7393 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7394
7395         * object.c (mono_runtime_invoke_array): Verify arguments for
7396         invalid types. Fixes #348522.
7397
7398 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7399
7400         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
7401         non-final virtual calls using call. 
7402
7403         * verify.c (do_invoke): fixed some TODOs.
7404
7405         * verify.c (push_arg): set has_this_store for "ldarga 0".
7406
7407 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7408
7409         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
7410         which belong to an inflated class. Fixes #356531.
7411
7412 2008-01-26  Robert Jordan  <robertj@gmx.net>
7413
7414         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
7415         which resort to FindFirstFile when a certain error condition
7416         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7417         Code is contributed under MIT/X11 license.
7418
7419 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7420
7421         * marshal.c (emit_marshal_string): Fix out string marshalling
7422         to use specified encoding. Fixes #323900.
7423
7424         Code is contributed under MIT/X11 license.
7425
7426 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7427
7428         * class.c (mono_class_inflate_generic_method_full): Don't modify
7429         iresult->context after cache check.
7430
7431 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7432
7433         * class.c (mono_class_inflate_generic_method_full): Change the
7434         struct assignments to memcpy for better visibility and add some comments.
7435
7436 2008-01-23  Dick Porter  <dick@ximian.com>
7437
7438         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7439         procedure, and make it work on windows.
7440
7441 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7442
7443         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7444         a MonoReflectionTypeBuilder since it is always of that type.
7445
7446         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7447
7448         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7449
7450         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7451         
7452         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7453
7454         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7455
7456         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7457         instantiations from the type cache.
7458
7459 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7460
7461         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7462
7463         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7464
7465 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7466
7467         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7468
7469         * verify.c (mono_method_verify): removed old TODO
7470
7471 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7472
7473         * verify.c (do_newobj): add visibility check.
7474
7475 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7476
7477         * verify.c (do_load_function_ptr): add visibility check.
7478
7479 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7480         *class.c:
7481         mono_generic_class_get_class: hook profiler events.
7482         mono_field_get_offset: added to support heap-shot in the new profiler.
7483         *class.h: exported mono_field_get_offset.
7484         * reflection.c:
7485         mono_reflection_setup_internal_class: hook profiler events.
7486
7487 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7488
7489         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7490         argument here too and use it to avoid checking for pending exceptions if 
7491         possible.
7492
7493 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7494
7495         * assembly.c (build_assembly_name): add arg for passing the assembly
7496         flags. Do not consider a PublicKey with value "null" valid.
7497         (mono_assembly_name_parse_full): added boolean argument that will be
7498         set if the assembly name contains a PublicKeyToken spec. Added support
7499         for the Retargetable spec for which only Yes or No are allowed as valid
7500         value. Consider assembly name invalid if Retargetable spec is set, but
7501         either version, culture or public key (token) are not specified.
7502         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7503         with implementation in assembly.c.
7504         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7505         from MonoAssemblyName.
7506         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7507         introduced argument for mono_assembly_name_parse_full to know if the
7508         assembly name has a PublicKeyToken spec, and if it has instruct
7509         fill_reflection_assembly_name to use default value for keyToken (if
7510         PublicKeyToken is null).
7511
7512 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7513
7514         * verify.c (mono_method_verify): fixed ovf ops with
7515         float values. They are unverifiable now.
7516
7517 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7518
7519         * class.c (set_failure_from_loader_error): add BadImageException to the
7520         list of exceptions that can cause a type to fail to load.
7521
7522         * class.c (mono_class_get_exception_for_failure): same.
7523
7524 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7525
7526         * verify.c (in_any_exception_block): added, check if offset
7527         is part of any exception handling clause.
7528
7529         * verify.c (get_stack_type): added VAR and MVAR types.
7530
7531         * verify.c (do_stobj): better error messages.
7532
7533         * verify.c (do_cpobj): added, check cpobj.
7534
7535         * verify.c (do_initobj): added, check initobj.
7536
7537         * verify.c (do_sizeof): added, check sizeof.
7538
7539         * verify.c (do_localloc): added, check localloc.
7540
7541         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7542
7543 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7544
7545         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7546         save_lmf/restore_lmf opcodes.
7547
7548         * threads.c (mono_threads_install_notify_pending_exc): New function to
7549         install a callback notifying the JIT there is a pending exception on a thread.
7550         (mono_thread_request_interruption): Call the new callback.
7551         (mono_thread_get_and_clear_pending_exception): New function to return the
7552         exception pending on a thread.
7553
7554         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7555         to turn off checking for pending exceptions.
7556         (mono_marshal_get_native_wrapper): Ditto.
7557
7558 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7559
7560         * threads-types.h: Get rid of the unnecessary extern declarations.
7561
7562 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7563
7564         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7565         return field from parent class if not private.
7566         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7567         returns fields from parent class if they are not private.
7568         (method_nonpublic): added function to determine if a given method
7569         should be considered non-public. Returns false for private methods
7570         on parent class, and internal methods from parent on the 1.0 profile.
7571         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7572         use method_nonpublic function to determine whether method should be
7573         returned.
7574         (property_accessor_public): use newly introduced method_nonpublic
7575         function to determine whether accessor is non-public. 
7576         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7577         event from parent class if not private. Only return static event if
7578         Static flag is set, and only return static event from parent class if
7579         FlattenHierarchy flag is set.
7580         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7581         include non-private events from parent class.
7582
7583 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7586         warning.
7587
7588 2008-01-16  Wade Berrier <wberrier@novell.com>
7589
7590         * security.c: Add assembly.h header to appease some warnings
7591
7592 2008-01-16  Dick Porter  <dick@ximian.com>
7593
7594         * process.c (process_module_string_read): Remove trailing null
7595         when saving string.
7596
7597 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7598
7599         * class-internals.h: A new data structure describing the layout of
7600         a runtime generic context (MonoRuntimeGenericContextTemplate).
7601
7602         * metadata-internals.h: Added a hash table to MonoDomain that maps
7603         from open generic classes to their runtime generic context
7604         templates.
7605
7606         * object.c: Building of the runtime generic context, including
7607         proper handling of generic type arguments of superclasses.
7608         Building of the runtime generic context according to the template.
7609
7610 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7611
7612         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7613         Fixes #350856.
7614
7615         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7616         mono_portability_find_file (). Fixes #325466.
7617         (mono_image_get_public_key): Fix a warning.
7618
7619 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7622         Fixes #353550.
7623         (mono_class_from_name_case): Ditto.
7624
7625 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7626
7627         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7628           common storage for the tables used in the System/NumberFormatter class.
7629
7630 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7631
7632         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7633
7634 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7635
7636         * verify.c (get_boxable_mono_type): check if the token is valid.
7637
7638         * verify.c (set_stack_value): changed to add an error if an
7639         invalid type is set on stack. Changed all callers due to signature change.
7640
7641         * verify.c (do_stobj): implement stobj validation.
7642
7643 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7644
7645         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7646         set container->is_method, it was set earlier.
7647
7648         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7649         generic methods.
7650
7651         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7652         is_method of the generic container to TRUE for methods.
7653
7654 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7655
7656         * metadata.c (type_in_image): Handle type parameters properly.
7657
7658         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7659         memory ownership of this structure.
7660
7661 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7662
7663         * verify.c (get_boxable_mono_type): make typedref types been just
7664         unverifiable. check for void type.
7665
7666         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7667
7668         * verify.c (do_load_function_ptr): accept method spec tokens.
7669
7670 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7671
7672         * marshal.c (mono_class_native_size): Always set *align even if this is called
7673         recursively.
7674
7675 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7676
7677         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7678         out-of-date.
7679
7680 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * verify.c: removed some old unused tables. A huge bunch of small fixes
7683         to things found while testing the verifier with mono basic.
7684
7685         * verify.c (dump_stack_value): dump null literal flag to.
7686
7687         * verify.c (verify_type_compatibility_full): fix comparison
7688         for types that have a generic super type.
7689
7690         * verify.c (verify_stack_type_compatibility): fix compatibility
7691         between null literals and reference types. fix compatibility between
7692         boxed valuetypes and object. fix corner case test for enums.
7693
7694         * verify.c (do_cmp_op): proper verification of cgt.un in case
7695         of reference types.
7696
7697         * verify.c (do_invoke_method): fix error message.
7698
7699         * verify.c (do_store_indirect
7700
7701         * verify.c (check_is_valid_type_for_field_ops): proper verification
7702         of managed pointers to valuetypes and boxed valuetypes. proper verification
7703         of null literals.
7704
7705         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7706         allow token to be a reference type.
7707
7708         * verify.c (do_cast): proper handling of boxes valuetypes.
7709
7710         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7711         in object[].
7712
7713         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7714         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7715         fixed the decoding of unbox_any
7716
7717 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7718
7719         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7720
7721 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7722
7723         * verify.c (do_newobj): do delegate verification.
7724
7725         * verify.c (verify_delegate_compatibility): perform delegate
7726         verification.
7727
7728         * verify.c (verify_ldftn_delegate): perform tests related to
7729         ldftn delegates.
7730
7731         * verify.c (mono_delegate_signature_equal): perform the
7732         slightly diferent signature comparison required by delegates.
7733
7734         * metadata.c (mono_metadata_type_equal_full): added and exported
7735         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
7736         allows signature only comparison.
7737
7738         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
7739         as MONO_INTERNAL.
7740
7741 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7742
7743         * verify.c: added a bunch of stack_slot_* functions to
7744         make access to stack slot type easier. This is required to
7745         allow optional flags, like null literal, boxed value and
7746         this pointer.
7747         All access paths to IlStackDesc::stype have been changed 
7748         to use these new funcions.
7749         Removed a bunch of unused functions and cleared all warnings.
7750         This patch introduces the usage of the this pointer and 
7751         boxed value flags.
7752
7753 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
7754
7755         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
7756
7757 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7758
7759         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
7760         match managed version.
7761
7762         * appdomain.c: Bump corlib version.
7763         
7764         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
7765         argument.
7766
7767 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
7768
7769         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
7770         Set public key token to zero-length byte array if assembly is not
7771         strongnamed.
7772
7773 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7774
7775         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
7776         writing a vtype array elem.
7777
7778 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
7779
7780         * assembly.c (build_assembly_name): return FALSE if length of token is
7781         not 16 (if not "null").
7782         (mono_assembly_name_parse_full): return FALSE if value of version,
7783         culture, token or key is 0.
7784         * icall.c (fill_reflection_assembly_name): add boolean arguments to
7785         specify whether public key and public key token must be set to default
7786         value (zero-length byte array) if not available. Set versioncompat to
7787         SameMachine. If public key is available or the default is set, then
7788         set PublicKey flag.
7789         (ves_icall_System_Reflection_Assembly_FillName): if no public key
7790         is available, use empty byte array as default value. On the 2.0
7791         profile, use default value for public key token if not set.
7792         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
7793         profile, use default value for public key if not set. On the 2.0
7794         profile, use default value for public key token if not set.
7795         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
7796         default values for public key and public key token.
7797
7798 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
7801         field to keep it in synch with the managed object.
7802
7803         * marshal.c (emit_marshal_object): Add support for byref marshalling of
7804         delegates. Fixes #351520.
7805
7806         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
7807         contains defined memory.
7808         
7809         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
7810
7811         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
7812         
7813         * sgen-gc.c (check_consistency): New helper function to do a consistency check
7814         of the GC data structures.
7815
7816         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
7817
7818         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
7819         
7820         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
7821         barrier.
7822         (mono_array_clone_in_domain): Ditto.
7823         (mono_array_clone_in_domain): Ditto.
7824
7825         * threads.c (start_wrapper): Register the thread start argument as a GC root.
7826         (cache_culture): Use a write barrier.
7827
7828         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
7829         (ves_icall_get_property_info): Ditto.
7830
7831         * object.h (MONO_STRUCT_SETREF): New macro.
7832
7833         * class-internals.h (MonoStats): Add some GC statistics.
7834
7835         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
7836
7837 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
7838
7839         * exception.c (mono_exception_from_name_two_strings):
7840         Break from loop after method is found.
7841
7842 2008-01-04  Dick Porter  <dick@ximian.com>
7843
7844         * process.c (process_module_string_read): Rename variable to
7845         reflect correct usage, after fixing bug 345972.
7846
7847 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
7848
7849         * verify.c (mono_type_create_fnptr_from_mono_method): 
7850         created a MonoType function pointer instance to be used during
7851         verification. The verifier releases this memory at end.
7852
7853         * verify.c (mono_method_is_constructor): extracted repeated
7854         checks for constructor into a single class.
7855
7856         * verify.c (do_push_field): use new extracted method
7857         for constructor check.
7858
7859         * verify.c (do_newobj): same.
7860
7861         * verify.c (do_ldftn): renamed to do_load_function_ptr
7862         and make it verify ldvirtftn too.
7863
7864         * verify.c (mono_method_verify: proper verification
7865         of ldvirtftn. release created MonoMethod instances.
7866
7867 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7868
7869         * verify.c (token_bounds_check): added.
7870
7871         * verify.c (do_ldftn): added.
7872
7873         * verify.c (mono_method_verify): proper verificartion of ldftn.
7874
7875 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7876
7877         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
7878         than the table row count. It's the resposibility of the caller to
7879         make the bounds check and raise the correct error.
7880
7881         * metadata.c (mono_metadata_decode_row_col): Same.
7882
7883         * loader.c (mono_get_method_from_token): perform bounds check
7884         on token for methoddef table.
7885
7886 2007-12-29  Miguel de Icaza  <miguel@novell.com>
7887
7888         * icall.c
7889         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
7890         assert into a negative result, the managed code already coped with
7891         that.
7892
7893         Some folks on Windows reported this error. 
7894
7895 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
7896
7897         * appdomain.c: Bump corlib version.
7898         * icall.c:
7899         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
7900         CultureInfo.CreateCulture to create CultureInfo for name.
7901         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
7902         create CultureInfo for name. Fixes bug #347174.
7903
7904 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7905
7906         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
7907         flags.
7908
7909         * verify.c (is_valid_branch_instruction): allow branching to the
7910         first instruction of the protected block.
7911
7912         * verify.c (is_valid_cmp_branch_instruction): same.
7913
7914         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
7915         avoid double initialization.
7916
7917         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
7918         detect which cases the eval stack should just be copied.
7919
7920         * verify.c (mono_method_verify): check if the eval stack
7921         is empty when entering a protected block.
7922
7923 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7924
7925         * verify.c: added is_clause_in_range, is_clause_inside_range,
7926         is_clause_nested and verify_clause_relationship. They perform
7927         the verifications stated in P1 12.4.2.7.
7928
7929         * verify.c (mono_method_verify): remove some unused variables,
7930         add the new exception clause checks, add instruction border
7931         checks for protected block start/end, improved some error 
7932         messages and fixed a bug in the way invalid instruction access
7933         is detected.
7934
7935 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7936
7937         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
7938         from GC 7.0 if available.
7939
7940         * object.c: Remove an unused define.
7941         
7942         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
7943
7944         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
7945
7946         * null-gc.c (mono_gc_make_descr_for_array): Implement.
7947
7948         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
7949
7950         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
7951         to take the same arguments as the other make_descr functions.
7952
7953         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
7954
7955         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
7956         directly.
7957
7958         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
7959         mini.c.
7960
7961         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
7962         call to boehm-gc.c.
7963
7964         * boehm-gc.c (mono_gc_register_root): Fix a warning.
7965
7966         * null-gc.c (mono_gc_register_root): Fix a warning.
7967
7968         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
7969
7970         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
7971         (mono_gc_base_init): Call GC_init ().
7972
7973         * null-gc.c: Define mono_gc_register_root () as a no-op.
7974
7975         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7976
7977 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
7978
7979         * verify.c: add prototype for merge_stacks at top
7980
7981         * verify.c (do_switch): added.
7982
7983         * verify.c (merge_stacks): on some cases the stack merging
7984         was not happening properly. Unequal stack sizes at merge
7985         points should be invalid.
7986
7987         * verify.c (mono_method_verify): added more debug info on stack state.
7988         verify switch properly.
7989
7990 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
7991
7992         * method-builder.h: New file, moved the mono_mb_ declarations here from 
7993         marshal.h.
7994
7995         * boehm-gc.c marshal.c: Include method-builder.h.
7996
7997         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
7998
7999         * marshal.c: Remove some code which is now in method-builder.c.
8000
8001 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8002
8003         * method-builder.c: New file, extraction of the method builder functionality 
8004         from marshal.c.
8005
8006         * marshal.c: Move the mb functions into method-builder.c.
8007
8008         * marshal.h marshal.c: Export some mono_mb_... functions.
8009
8010         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
8011
8012         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
8013         the caller.
8014
8015         * class.c (mono_class_get_full): Check the token type in the dynamic case.
8016
8017         * loader.c (mono_field_from_token): Ditto.      
8018
8019         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
8020         type as well.
8021         
8022         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
8023         Fixes #342565.
8024
8025         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
8026         a helper function for setting it.
8027
8028         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
8029
8030         
8031         * assembly.c: Significally simplify code now that referenced assemblies are 
8032         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
8033
8034         * threads.h: Don't include  the internal threads-types.h header file. Fixes
8035         #349952.
8036
8037 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
8038
8039         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
8040         instructions that were target of branches or are at protected block boundaries.
8041
8042         * verify.c (in_same_block): handle filter clauses.
8043
8044         * verify.c (is_valid_branch_instruction): added. checks the target of
8045         instructions br or brtrue/false.
8046
8047         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
8048         binary branch instructions such as beq and bge.
8049
8050         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
8051         and made it pin the instruction as been part of the exception block.
8052
8053         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
8054         of in_same_block.
8055
8056         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
8057         of in_same_block.
8058
8059         * verify.c (do_ret): ret from a protected block is unverifiable and
8060         not invalid.
8061
8062         * verify.c (do_static_branch): verify br and br.s instructions.
8063
8064         * verify.c (merge_stacks): add extra param to support detection
8065         of branches in the middle of instructions.
8066         
8067         * verify.c (mono_method_verify): verify branches and exception blocks
8068         that target the middle of instructions. Proper verification of br and br.s.
8069
8070 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8071
8072         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
8073         skip_visibility field.
8074         (reflection_methodbuilder_from_dynamic_method): Ditto.
8075
8076         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
8077         registrations. Fixes #348193.
8078
8079         * threads.h: Move the internal mono_thread_get_pending_exception () to
8080         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
8081
8082 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
8085         icall registration. Fixes #348193.
8086
8087         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
8088         for corlib classes into object. Fixes #349621.
8089
8090 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
8091
8092         * icall.c (property_accessor_nonpublic): new function to determine
8093         whether an accessor allows a property to be considered non-public.
8094         Returns false for private accessor(s) from parent class, and internal
8095         accessor(s) from parent on 2.0 profile (and higher).
8096         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
8097         to determine whether property should be included if NonPublic flag
8098         is set. Fixes bug #349078.
8099
8100 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
8101
8102         * verify.c (init_stack_with_value): added.
8103
8104         * verify.c (mono_method_verify): extracted common
8105         code for exception initialization into init_stack_with_value.
8106
8107         * verify.c (mono_method_verify): initialize the exception
8108         for handler clauses as well.
8109
8110         * verify.c (mono_method_verify): fix the exception clause
8111         ordering rules, it should use handler end offset and not
8112         start offset.
8113
8114 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
8115
8116         * rawbuffer.c: remove useless warning.
8117
8118 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
8119
8120         * threads.h, threads-types.h: move functions to the correct header
8121         (fixes bug#349952).
8122
8123 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8124
8125         * verify.c (mono_method_verify): proper verification
8126         of exception handling clauses ranges and fallthru in
8127         and out of protected blocks.
8128
8129 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8130
8131         * verify.c (mono_method_verify): fixed compilation issue.
8132
8133 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8134
8135         * verify.c (mono_method_verify): a printf slipped in, changed
8136         to use verifier debug macro.
8137
8138 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
8139
8140         * verify.c (is_correct_leave): check for filter clauses.
8141
8142         * verify.c (do_filter): added.
8143
8144         * verify.c (mono_method_verify): property verification of leave.
8145
8146
8147 2007-12-18  Mark Probst  <mark.probst@gmail.com>
8148
8149         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
8150         Win32 build, until we figure out how to do the proper thing on
8151         Win32.
8152
8153 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
8154
8155         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
8156         by the previous patch.
8157         
8158         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
8159         the assembly resolve handler for refonly assemblies.
8160
8161 2007-12-17  Mark Probst  <mark.probst@gmail.com>
8162
8163         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
8164         Make sure only one thread is allowed to commence shutdown, and
8165         don't allow new threads to be started once shutdown is in
8166         progress.
8167
8168 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
8169
8170         * verify.c (is_correct_endfilter): added.
8171
8172         * verify.c (is_unverifiable_endfilter): added.
8173
8174         * verify.c (do_endfilter): added.
8175
8176         * verify.c (mono_method_verify): property verification of endfilter
8177         and fixed a corner case or endfinally.
8178
8179 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
8180
8181         * verify.h: new flags to support fail fast of unverifiable code and
8182         do non-strict verification. Non-strict verification is required to
8183         have MS runtime compatibility. There are a huge amount of unverifiable
8184         code that it accepts as verifiable. The strict mode verifies the code
8185         as the specs says.
8186         Non-strict mode will be required in cases where code needs to be
8187         accepted as verifiable but fails under strict mode.
8188
8189         * pedump.c: added support to fail fast and non-strict verification.
8190
8191         * verify.c: added support for both fail fast and non-strict verification.
8192
8193 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
8194
8195         * verify.c (is_correct_endfinally): added.
8196
8197         * verify.c (mono_method_verify): property verification of endfinally.
8198
8199 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8200
8201         * verify.c (in_any_block): check for filter clauses.
8202
8203         * verify.c (is_correct_rethrow): added.
8204
8205         * verify.c (mono_method_verify): property verification of rethrow.
8206
8207         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
8208
8209 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8210
8211         * verify.c (do_throw): added.
8212
8213         * verify.c (mono_method_verify): property verification of throw
8214
8215 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
8216
8217         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
8218         assemblies. Fixes #346425.
8219
8220 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
8221
8222         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
8223         FieldBuilders.
8224
8225         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
8226
8227         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
8228         prevent asserts when this is called with a token which might not be valid.
8229
8230         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
8231         lookup_dynamic_token_class with valid_token == FALSE.
8232
8233         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
8234
8235         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
8236
8237         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
8238         
8239 2007-12-10  Mark Probst  <mark.probst@gmail.com>
8240
8241         * gc.c: Don't delay threadpool thread finalization unless Mono is
8242         shutting down.
8243
8244 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8245
8246         * threads.c: turn an assert into a non-fatal warning.
8247
8248 2007-12-09  Robert Jordan  <robertj@gmx.net>
8249
8250         * icall.c (GetVirtualMethod): Add missing argument validation.
8251
8252 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8253
8254         * verify.c (do_cast): added.
8255
8256         * verify.c (mono_method_verify): property verification of castclass and isinst.
8257
8258
8259 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8260
8261         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
8262
8263         * verify.c (do_stelem): added.
8264
8265         * verify.c (mono_method_verify): property verification of stelem.X.
8266
8267 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8268
8269         * class.c, class-internals.h: Introduce an environment variable
8270         (MONO_GENERIC_SHARING) through which the extent of generic code
8271         sharing can be controlled (share all classes, share only corlib
8272         classes, or share nothing).
8273
8274         * object.c: Only create runtime generic context for classes for
8275         which sharing is enabled.
8276
8277 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8278
8279         * verify.c (do_ldelem): refactor it to work with ldelem.any.
8280
8281         * verify.c (mono_method_verify): property verification of ldelem.any.
8282
8283 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8284
8285         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
8286         added ldelem.X opcodes.
8287
8288         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
8289
8290         * verify.c: proper verification of ldelem.X 
8291
8292 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
8295
8296 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8297
8298         * verify.c (mono_method_verify): null literal requires special handling,
8299         the value pushed on stack need to be flagged as so.
8300
8301         * verify.c (do_ldelema): Verify ldelema properly.
8302
8303 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8304
8305         * verify.c: Verify ldlen properly.
8306
8307 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
8308
8309         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
8310         to the target object's type. Fixes #346160.
8311
8312 2007-12-05  Dick Porter  <dick@ximian.com>
8313
8314         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
8315         Solaris needs the same workaround as BSD-derived systems.  Fixes
8316         bug 323524, patch by Burkhard Linke
8317         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
8318
8319 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
8320
8321         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
8322         handle to use when error dialog is shown; otherwise, update mask
8323         to show no error dialog when an error occurs.
8324
8325 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8326
8327         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
8328
8329         * class.c (mono_class_get_field_default_value): New helper function to initialize
8330         field->def_type and field->data.
8331
8332 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
8335         the general one.
8336
8337         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
8338
8339         * marshal.c: Avoid depending on delegate->method_info being set.
8340
8341         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
8342         
8343         * object.c (mono_delegate_ctor): Set delegate->method.
8344
8345         * object-internals.h (struct _MonoDelegate): Add 'method' field.
8346
8347         * appdomain.c: Bump corlib version.
8348
8349 2007-11-27  Raja R Harinath  <harinath@gmail.com>
8350
8351         * metadata.c (mono_generic_inst_equal_full): Short-circuit
8352         equality check if we're comparing canonicalized MonoGenericInsts.
8353
8354 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8355
8356         * class.c (generic_array_methods): Call mono_class_setup_methods () before
8357         accessing class->methods.
8358
8359 2007-11-22  Dick Porter  <dick@ximian.com>
8360
8361         * threads.c: Ensure that the synch_cs is set before trying to use
8362         it.
8363
8364 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
8365
8366         * profiler.c: r89126 broke the statistial profiler, unbreak.
8367
8368 2007-11-22  Martin Baulig  <martin@ximian.com>
8369
8370         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
8371
8372         * mono-debug.c
8373         (mono_debug_debugger_version): Bump to 3.
8374         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
8375         -> mono_debugger_class_initialized().
8376
8377         * mono-debug-debugger.c
8378         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
8379
8380         * class.c
8381         (mono_debugger_start_class_init_func): Removed.
8382         (mono_debugger_class_loaded_methods_func): Added.
8383         (mono_class_setup_methods): Call it here.
8384
8385 2007-11-22  Martin Baulig  <martin@ximian.com>
8386
8387         * mono-debug.c
8388         (mono_debug_add_delegate_trampoline): New public method.
8389         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
8390
8391         * mono-debug.h
8392         (MonoSymbolTable): Added `global_data_table'.
8393         (MonoDebuggerTypeKind): Removed.
8394
8395 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
8396
8397         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
8398         these methods.
8399
8400         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8401         
8402 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8403
8404         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
8405
8406 2007-11-20  Martin Baulig  <martin@ximian.com>
8407
8408         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
8409
8410         * mono-debug-debugger.c
8411         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
8412         (mono_debugger_remove_breakpoint): Likewise.
8413         (mono_debugger_check_breakpoints): Likewise.
8414         (mono_debugger_register_class_init_callback): New public method.
8415         (mono_debugger_remove_class_init_callback): Likewise.
8416         (mono_debugger_add_type): Likewise.
8417
8418         * mono-debug-debugger.h
8419         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8420
8421 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8422
8423         * class.c: more interface implementations needed for the
8424         array enumerator (fixes bug #341112).
8425
8426 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8427
8428         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8429         fix ParamName of ArgumentNullExceptions.
8430
8431 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8432
8433         * reflection.c (mono_reflection_encode_sighelper): Generate the
8434         modopts and modreqs.   I have a useless test that crashes monodis,
8435         but that shows the code working.
8436
8437 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8438
8439         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8440         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8441
8442 2007-11-15  Dick Porter  <dick@ximian.com>
8443
8444         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8445         When joining a thread, it's the thread that's calling Join that
8446         gets WaitSleepJoin state not the target.  Fixes the standalone
8447         test case in bug 334740, and hopefully the whole bug too.
8448
8449 2007-11-15  Dick Porter  <dick@ximian.com>
8450
8451         * process.c: Read file version info from the files pointed at by
8452         process modules, not the current process.  Fixes bug 315969.
8453
8454         Use windows typedef names in some places to fix warnings on the
8455         windows build.
8456
8457 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8458
8459         * image.c, metadata-internals.h: Added a generic_class_cache hash
8460         to MonoImage for looking up generic classes when sharing generics.
8461
8462 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8463
8464         * sgen-gc.c: warning cleanups.
8465
8466 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8469         inherited properties.
8470
8471 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8472
8473         * object.c, class-internals.h: Added more information to the
8474         runtime generic context.
8475
8476 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8477
8478         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8479         instead of just the target method. Generalize the abstract method handling to
8480         handle any non-static method.
8481
8482         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8483         mono_marshal_get_delegate_invoke () signature change.
8484
8485 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8486
8487         * class.c, class-internals.h: Made
8488         mono_type_get_basic_type_from_generic () public.  Fixed member
8489         access check for shared generics.
8490
8491         * loader.c: Don't insert field into field cache if it's part of a
8492         non-inflated generic class.
8493
8494         * domain.c, domain-internals.h: The generic sharing context is now
8495         part of the jit info data structure.  Added two accessor
8496         functions.
8497
8498 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8499
8500         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8501         the array Get/Set/Address methods, since the JIT inlines them.
8502
8503         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8504
8505         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8506         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8507
8508         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8509         mono_marshal_get_delegate_invoke signature change.
8510
8511         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8512         an additional argument. Add support for invoking abstract methods.
8513
8514         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8515
8516         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8517
8518 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8519
8520         * class.c: Do field layout for open generic classes as well.
8521
8522 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8523
8524         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8525         other objects, because the threadpool is still around.  Put them
8526         in a list instead and after finalizing all other objects in the
8527         root domain shut down the thread pool and then finalize the
8528         threads.  Fixes bug #337383.
8529
8530         * threads.c, thread-types.h: New mono_thread_create_internal()
8531         function for marking a thread with the threadpool flag before it
8532         started.  Set synch_cs to NULL after freeing it.
8533
8534         * threadpool.c: Mark threadpool threads before they start.
8535
8536 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8537
8538         * reflection.h, reflection.c: don't export random functions
8539         and lazy load dbnull and missing objects.
8540
8541 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8542
8543         * class.c: Initialize COM types if COM interfaces
8544         are present (not just COM classes).
8545         
8546         Code is contributed under MIT/X11 license.
8547
8548 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8549         * reflection.c:
8550         create_dynamic_mono_image: hook module profiler events (dynamic case).
8551         mono_image_basic_init: hook assembly profiler events (dynamic case).
8552
8553 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8554         * profiler.c:
8555         simple_appdomain_unload: completely terminate the profiler
8556         instead of only processing the statistical samples.
8557         simple_shutdown: make sure this is really called exactly once,
8558         even in multithreaded applications, and always listen to
8559         appdomain events.
8560         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8561         here, the "[un]load" functions will do it.
8562         Fixes bugs #333791 and #325261.
8563
8564 2007-11-07  Geoff Norton  <gnorton@novell.com>
8565
8566         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8567         rather than depend on __APPLE__.
8568
8569 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8570
8571         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8572
8573 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8574
8575         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8576         UTF16 MonoString. Fix the crash from bug #335488
8577
8578 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8579
8580         * marshal.c: Correct (for non-Win32 OS) length != size in 
8581         mono_string_from_bstr. Fix #339530.
8582
8583 2007-11-06  Geoff Norton  <gnorton@novell.com>
8584
8585         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8586         to succeed
8587
8588 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
8589
8590         * process.c: Added run-time GetProcessId API detection for Windows.
8591
8592 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8593
8594         * reflection.c  (mono_param_get_objects): If a parameter has the
8595         attribute [System.Runtime.InteropServices.Optional] we should
8596         set the DefaultValue of the ParameterInfo to be
8597         System.Reflection.Missing instead of DBNull.
8598
8599         See bug #339013.
8600
8601         (mono_get_reflection_missing_object): New method,
8602         returns the System.Reflection.Missing.Value singleton instance.
8603
8604 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8605
8606         * culture-info-table.h : regenerated.
8607
8608 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8609
8610         * icall.c: Use GetEnvironmentStrings on windows
8611         so we are using the same environment block as 
8612         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8613         #333740.
8614         
8615         Code is contributed under MIT/X11 license.
8616
8617 2007-10-31  Martin Baulig  <martin@ximian.com>
8618
8619         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8620
8621         * mono-debug-debugger.h
8622         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8623
8624 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8625
8626         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8627         classes.
8628
8629 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8630
8631         * culture-info-table.h : regenerated.
8632
8633 2007-10-30  Robert Jordan  <robertj@gmx.net>
8634
8635         * icall-def.h, icall.c:
8636         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8637
8638         Code is contributed under MIT/X11 license.
8639
8640 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8641
8642         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8643         inflated class instead of inflating them again.
8644         
8645         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8646         dynamic case.
8647
8648         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8649         Call setup_supertypes () after klass->parent is set.
8650         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8651
8652         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8653         for inflated instances of not yet created dynamic generic classes.
8654         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8655         times from inflated_method.
8656         (methodbuilder_to_mono_method): Ditto.
8657
8658 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8659
8660         * gc.c: code cleanup and removed old untested option of not creating the
8661         finalizer thread.
8662
8663 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8664
8665         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8666         creating a jump trampoline for dynamic methods.
8667
8668 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8669
8670         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8671         generic TypeBuilders when called from another method of the same type (bug #335131).
8672
8673
8674 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8677         doesn't seem to work perfectly.
8678         
8679         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8680         called multiple times.
8681         (methodbuilder_to_mono_method): Ditto.
8682         (resolve_object): Inflate FieldBuilder's.
8683
8684 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8685
8686         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8687         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8688         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8689
8690 2007-10-26  Dick Porter  <dick@ximian.com>
8691
8692         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8693         Thread initialisation changes
8694
8695 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8696
8697         * verify.c: fix compatibility check between arrays and System.Array
8698
8699 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8702         too. Fixes #336999.
8703
8704 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8705
8706         * object.c (mono_value_box): Use typed allocation here.
8707
8708 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8709
8710         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8711         trampoline instead of compiling the method right away.
8712
8713         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8714
8715 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8716
8717         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8718         related fields for dynamic classes. Fixes #334493.
8719
8720 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8721
8722         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8723         
8724         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8725
8726         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8727         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8728
8729         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8730
8731         * reflection.c (create_generic_typespec): Initialize klass->generic_container
8732         if needed.
8733         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
8734
8735 2007-10-18  Jonathan Chambers <joncham@gmail.com>
8736
8737         * marshal.c: Use correct key when removing item
8738         from ccw_hash.
8739         
8740         Code is contributed under MIT/X11 license.
8741
8742 2007-10-17  William Holmes  <billholmes54@gmail.com>
8743
8744         *marshal.c: Adding a case to marshal booleans to U1
8745
8746         Code is contributed under MIT/X11 license.
8747
8748 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
8749
8750         * class.c (mono_class_from_name): Search the modules compromising dynamic
8751         assemblies. Fixes #331601.
8752
8753 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
8754
8755         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
8756         exception if the type name contains an assembly component. Fixes #334203.
8757
8758         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
8759         modules inside dynamic assemblies. Fixes #334200.
8760         
8761         * reflection.c: Set image->public_key and image->public_key_length;
8762
8763         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
8764         fields.
8765
8766         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
8767         
8768 2007-10-16  Mark Probst  <mark.probst@gmail.com>
8769
8770         * metadata.c: Implemented correct comparing of generic classes.
8771         An inflated generic class can be equal to a non-inflated one if it
8772         is inflated with generic type variables as type arguments.  Fixes
8773         bug #333798.
8774
8775 2007-10-15  Dick Porter  <dick@ximian.com>
8776
8777         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
8778         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
8779         81646.
8780
8781         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
8782         instead of a monitor lock.  This means that monitor_try_enter and
8783         co can set the thread state safely.
8784         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
8785         thread_interrupt_requested, so interrupt actually works.
8786
8787         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
8788         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
8789         state accessor function
8790
8791 2007-10-15  Martin Baulig  <martin@ximian.com>
8792
8793         * mono-debug.h
8794         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
8795         the debugger with the current runtime.
8796
8797 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8798
8799         * object.c, object-internals.h: added the ability to set a single
8800         trampoline for all the slots in a vtable.
8801
8802 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8803
8804         * marshal.c: deal with a possible race condition during multicast
8805         delegate invocation.
8806
8807 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8808
8809         * class.c: ensure value type methods don't have the synchronized
8810         flag set.
8811
8812 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8813
8814         * string-icalls.c, string-icalls.h: reverted unapproved patch that
8815         breaks the build.
8816
8817 2007-10-11  Joel Reed  <joelwreed@comcast.com>
8818
8819         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
8820         to take an options parameter so that empty entries can be removed during
8821         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
8822
8823 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8824
8825         * marshal.c: make sure we don't store the signature from a dynamic
8826         method into the runtime invoke cache (bug #327189).
8827
8828 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8829
8830         * marshal.c: make sure the wrapper methods are properly initialized.
8831
8832 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8833
8834         * metadata.c, metadata-internals.h: Generalized
8835         mono_type_stack_size() to mono_type_stack_size_internal() which
8836         takes an additional argument specifying whether it allows open
8837         types.
8838
8839 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8840
8841         * verify.c (do_invoke_method): handle typedbyref params
8842         correctly and check for unverifiable return values.
8843
8844         * verify.c (do_newobj): fix a warning.
8845
8846 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8847
8848         * verify.c: don't tread typedbyref as allways unverifable,
8849         so uses, like (ld/st)loc.0 are valid. verify for the cases
8850         that it matters, like boxing related operations.
8851
8852 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8853
8854         * verify.c: add verification of the newobj opcode. verification
8855         of delegate instantation still missing due ldftn and virldftn not
8856         pushing the function type on stack
8857
8858 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8859
8860         * class-internals.h: Runtime generic context data structure
8861         definition.
8862
8863         * object.c: Initialization of runtime generic context at runtime
8864         vtable creation time.
8865
8866 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
8867         * class.c (mono_class_create_from_typedef,
8868         mono_class_from_generic_parameter, mono_ptr_class_get,
8869         mono_fnptr_class_get, mono_bounded_array_class_get)
8870         * domain.c (mono_domain_create, mono_domain_free)
8871         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
8872         * image.c (do_mono_image_load, mono_image_close):
8873         Hooked up load-unload profiler events.
8874
8875 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8876
8877         * domain.c: track statistics about the actual amount of native code
8878         allocated.
8879
8880 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8881
8882         * class.c: the valuetype enumerators don't have the additional
8883         supertypes interfaces.
8884
8885 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8886
8887         * class.c: need more interfaces setup for the IEnumerator<T>
8888         object created for arrays (tests/ienumerator-interfaces.2.cs).
8889
8890 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
8891
8892         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
8893
8894 2007-10-05  Alp Toker  <alp@atoker.com>
8895
8896         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8897         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8898         #315863.
8899
8900 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8901
8902         * verify.c (verify_type_compatibility_full): verification of
8903         compatibility improved, validates correctly non-strict checks between
8904         native int and I4 types different than (unsigned)int32.
8905
8906         * verify.c (do_store_indirect): added, do all verification of
8907         ldind.X opcodes. 
8908
8909         * verify.c (get_load_indirect_mono_type): renamed to
8910         get_indirect_op_mono_type, as it now returns the MonoType for 
8911         ldind.X and stind.X opcodes.
8912
8913 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8914
8915         * reflection.c: Fix the encoding of generic type definition for
8916         TypeBuilders.
8917
8918         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
8919         mono_image_typedef_or_ref but allows to specify if typespec lookups should
8920         be made. Typespec check is done prior to typeref cache lookup.
8921
8922         * reflection.c (mono_image_typedef_or_ref): now just delegate to
8923         mono_image_typedef_or_ref_full.
8924
8925         * reflection.c (encode_generic_class): encode the generic class
8926         directly instead of calling encode_type.
8927
8928         * reflection.c (encode_type): encode the generic type definition
8929         MonoClass as a generic instantiation.
8930
8931         * reflection.c (create_typespec): cache typespec tokens in
8932         the assembly->typespec cache. Don't create typespec for a generic
8933         instance MonoClass. Create typespec for the generic type defintion.
8934
8935         * reflection.c (create_generic_typespec): encode the generic
8936         class directly instead of calling encode_type.
8937
8938         * reflection.c (mono_image_create_token): encode the generic
8939         type definition not using a typespec for MonoType instances.
8940
8941
8942 2007-10-04  Raja R Harinath  <rharinath@novell.com>
8943
8944         Fix #328812
8945         * class.c (mono_image_init_name_cache): Don't return nested
8946         'protected internal' classes.
8947         (mono_class_from_name_case): Likewise.
8948
8949 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
8950
8951         * icall-def.h, icall.c : get_bundled_machine_config() is now the
8952           common function used by both DefaultConfig in System.dll and
8953           InternalConfigurationHost in System.Configuration.dll.
8954
8955 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8956
8957         * class.c: automatically add to vectors only a few essential explicit
8958         generic interfaces. The rest of the interfaces that arrays should
8959         provide are currently implicitly added (but still not lazily, see the
8960         design in the discussion of bug#325495 for the details of what is
8961         needed for that). Additionally, implicit interfaces are assigned the
8962         same vtable slot as the explicit interfaces (as they are compatible):
8963         this enables huge memory savings since we don't need to instantiate
8964         as many memthods and as large vtables anymore. Also, Since
8965         GetEnumerator<T> returns an instance of a type that is required to
8966         support a similarly large set of interfaces as arrays, we add
8967         implicit interfaces and interface offset sharing support to those
8968         types, too. This change adds all the required interfaces so that
8969         the anonarray.cs test case in the bug report works (we don't add
8970         all the interfaces to arrays of arrays 3-level deep and more because
8971         of the memory requirements explained in the bug and since they are much
8972         less common: the lazy-loading support will enabled them to work, too).
8973
8974 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8975
8976         * verify.c (merge_stacks): major clean up, all type compatibility
8977         checks are done by verify_type_compatibility. This fix my earlier lack
8978         of understanding of the CLR type system and merge_stacks no longer looks
8979         scary.
8980
8981         * verify.c: fixed some bad spelling.
8982
8983 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8984
8985         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
8986         a given stack slock.
8987         
8988         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
8989         verify_type_compatibility_full. This removed a near indentical function and fixed
8990         handling of Int32 and IntPtr across all opcodes.
8991
8992 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8993
8994         * class.c: only vectors have the additional generic interfaces.
8995
8996 2007-10-01  Jonathan Chambers <joncham@gmail.com>
8997
8998         * mono-config.c: Use g_strcasecmp instead of
8999         strcasecmp like everywhere else to fix
9000         compilation with MSVC.
9001         
9002         Code is contributed under MIT/X11 license.
9003
9004 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9005
9006         * object.c, object-internals.h: refactored the IMT code to enable
9007         building a single slot at a time and lazily creating the IMT trampolines
9008         and thunks.
9009
9010 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
9011
9012         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
9013
9014         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
9015         Fixes #328501.
9016         
9017 2007-09-29  Raja R Harinath  <harinath@gmail.com>
9018
9019         * loader.c (method_from_methodspec): Rearrange to avoid
9020         un-necessary exposition.  Don't assert out if the method's
9021         declaring type is a generic type definition.
9022
9023 2007-09-28  Martin Baulig  <martin@ximian.com>
9024
9025         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
9026
9027 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9028
9029         * class-internals.h: optimize field layout of MonoClass to
9030         requires less cachelines at runtime and save a few bytes on 64 bit
9031         systems.
9032
9033 2007-09-28  Jb Evain  <jbevain@novell.com>
9034
9035         * reflection.c: when encoding type names in custom attributes,
9036         if the type is a closed generic type, its generic arguments
9037         have to be serialized as AssemblyQualifiedName, so that when
9038         they are deserialized, it's possible to re-create them properly.
9039         Fixes #329450.
9040
9041
9042 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9043
9044         * object.c, class-internals.h: added delegate-creation counter.
9045
9046 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9047
9048         * class.c: cleanup of the code that synthetizes interfaces for
9049         arrays in 2.0: saves quit a bit of corlib mempool memory.
9050         Code to fix bug #325495 ifdeffed out for now until the issues
9051         with memory usage and O(n^2) behaviour are fixed.
9052
9053 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9054
9055         * marshal.c: when possible, do not duplicate the name of the methods
9056         in the method builder and in the generated MonoMethod.
9057
9058 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9059         * verify.c: added support for type checking ldind_* opcodes.
9060
9061 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9062
9063         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
9064         which is used to distinguish the fully open instantiation of a TypeBuilder
9065         with the rest. This temporary hack is required to restore the property that
9066         the fully open instantiation is the same type of the generic type definition.
9067
9068         * class-internals.h (mono_generic_class_is_generic_type_definition):
9069         new function as part of the internal API.
9070
9071         * class.c (inflate_generic_type): return NULL when the generic inst is
9072         fully open. The fully open generic type is now the same as the generic type
9073         definition for non TypeBuilder types.
9074
9075         * class.c (mono_generic_class_get_class): removed assert since it is
9076         no longer valid, gklass->cached_class can point to the generic type definition.
9077
9078         * class.c (mono_generic_class_is_generic_type_definition): new.
9079
9080         * metadata.c (mono_generic_class_hash): added is_tb_open field
9081         to the hash calculation.
9082
9083         * metadata.c (free_generic_class): if the generic class is associated
9084         with the generic type definition, its field will come from the mempool and
9085         must not be freed.
9086
9087         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
9088         new, this function identifies the corner case of a TypeBuilder fully open
9089         instantiation.
9090
9091         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
9092         for lookup. Set gclass->cached_class to be the container class in case of
9093         the fully open instantiation of non TypeBuilder types.
9094
9095         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
9096         to compare generic classes.
9097
9098         * reflection.c (method_encode_methodspec): remove assert that
9099         no longer is valid.
9100
9101         * reflection.c (mono_reflection_generic_class_initialize): add
9102         an aditional assert to ensure the proper type is used.
9103
9104 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
9105
9106         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
9107         to enjoy it.
9108
9109 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9110
9111         * verify.c (push_arg): Fixed support for ldarga
9112         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
9113         MonoType used as first arg in case of instance calls.
9114
9115 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9116
9117         * verify.c: Support for verifying VAR and MVAR types, 
9118
9119 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
9120
9121         * icall.c (ves_icall_get_property_info): Set the reflected type of the
9122         accessors correctly.
9123
9124 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9125
9126         * threads.c: support OSX and other systems in
9127         mono_thread_get_stack_bounds (bug #328026).
9128
9129 2007-09-25  Martin Baulig  <martin@ximian.com>
9130
9131         * mono-debug.h
9132         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
9133
9134 2007-09-24  Martin Baulig  <martin@ximian.com>
9135
9136         * mono-debug.h
9137         (MonoDebugClassEntry): Moved the definition of this struct into
9138         mono-debug.c to make it private.
9139
9140         * mono-debug.c
9141         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
9142         type table per symbol file, we don't need to store the symfile id
9143         any longer.
9144
9145 2007-09-24  Martin Baulig  <martin@ximian.com>
9146
9147         Create one type table per symbol file, since a `MonoClass *' gets
9148         invalid when its image is unloaded.
9149
9150         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
9151         (MonoDebugHandle): Added `type_table'.
9152
9153 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9154
9155         * mempool.c, mempool.h: added mono_mempool_new_size () API
9156         to be able to specify a smaller initial size for the pool.
9157         Adjusted the code to slowly increase pool size before using
9158         the previous default size.
9159         * image.c: use a small initial size for image mempools.
9160
9161 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
9162
9163         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
9164         Fixes ##320990.
9165
9166         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
9167         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
9168
9169 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
9170
9171         * metadata.c (mono_type_create_from_typespec): Remove an invalid
9172         free. Fixes #327438.
9173
9174 2007-09-21  Raja R Harinath  <harinath@gmail.com>
9175
9176         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
9177         generic instantiations, etc.
9178         <MONO_TYPE_ARRAY>: Likewise.
9179
9180 2007-09-21  Martin Baulig  <martin@ximian.com>
9181
9182         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
9183         these structs were never defined.
9184         (MonoDebugHandle): Removed the `_priv' field, it was never used.
9185
9186 2007-09-21  Martin Baulig  <martin@ximian.com>
9187
9188         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
9189
9190 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
9191
9192         * image.c: removed the guid hash tables: we can get the same info
9193         without the additional memory usage hit (partially fixes also bug #327052).
9194
9195 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9196
9197         * profiler.h, profiler-private.h, profiler.c: add a new profiler
9198         event to handle unloading methods. After the event is called, the
9199         corresponding MonoMethod* must be considered invalid.
9200         * loader.c (mono_free_method): call the new mono_profiler_method_free
9201         event.
9202
9203 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9204
9205         * domain-internals.h: New flag in MonoJitInfo which marks shared
9206         generic methods.  New hash table (shared_generics_hash) in
9207         MonoDomain to keep track of shared generic methods.  Prototypes
9208         for functions to register and lookup shared generic methods.
9209
9210         * domain.c: Support for registering and looking up shared generic
9211         methods via a hash table (shared_generics_hash) in MonoDomain.
9212
9213         * class-internals.h: New exception to signal failure of shared
9214         compilation of a generic method.  New counters for generics
9215         sharing in MonoStats.
9216
9217 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9218
9219         * image.c, metadata-internals.h: don't keep a file descriptor open
9220         for loaded assemblies (bug#325988).
9221
9222 2007-09-19  Raja R Harinath  <rharinath@novell.com>
9223
9224         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
9225         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
9226         use the corresponding datatypes.
9227         (type_in_image): Update to changes.
9228         (CleanForImageUserData): Simplify.
9229         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
9230         Avoid quadratic behaviour in handling the "stolen" list by
9231         separating the filter predicate out, and by prepending the stolen
9232         items rather than appending them.
9233         (steal_ginst_in_image): Likewise.
9234         (mono_metadata_clean_for_image): Update to changes.
9235
9236 2007-09-19  Martin Baulig  <martin@ximian.com>
9237
9238         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
9239
9240 2007-09-19  Martin Baulig  <martin@ximian.com>
9241
9242         * mono-debug.c (mono_debug_cleanup): Don't call
9243         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
9244
9245 2007-09-19  Raja R Harinath  <harinath@gmail.com>
9246
9247         Fix crash on 'make run-test' in mcs/errors
9248         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
9249         Avoid more potential allocations in mono_class_from_mono_type.
9250         (ginst_in_image): Update to changes.
9251         (gclass_in_image): Rearrange slightly.
9252
9253 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9254
9255         * class.c (mono_class_init): Move the code that sets up class->methods to 
9256         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
9257
9258         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
9259         canonical instance of an inflated generic signature.
9260         (mono_type_create_from_typespec): Remove an invalid free.
9261
9262         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
9263
9264 2007-09-18  Marek Habersack  <mhabersack@novell.com>
9265
9266         * domain-internals.h: added a declaration of the
9267         mono_assembly_load_full_nosearch internal function.
9268
9269         * assembly.c (mono_assembly_load_with_partial_name): use
9270         mono_try_assembly_resolve return value properly.
9271         (mono_assembly_load_full_nosearch): copied the function body from
9272         mono_assembly_load_full, without the code to invoke assembly
9273         search hooks.
9274         (mono_assembly_load_full): calls the above new function and if the
9275         assembly is not resolved, invokes the search hooks.
9276
9277         * appdomain.c (mono_runtime_init): restore the global postload
9278         assembly search handlers.
9279
9280 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9281
9282         * class.c (mono_class_init): Make sure class->methods and class->properties
9283         are never NULL in the generics case.
9284
9285         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
9286
9287 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9288
9289         * metadata.c (free_generic_class): Disable some code to fix the build.
9290
9291         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
9292
9293         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
9294         from the image mempool.
9295
9296         * metadata.c (free_generic_class): Free more data from the inflated class.
9297
9298         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
9299
9300         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
9301         mempool.
9302         (mono_type_create_from_typespec): Ditto.
9303
9304         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
9305         MonoImage to the caller.
9306         (mono_init_internal): Save the opened image in a global variable.
9307         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
9308
9309         * reflection.c (resolve_object): Fix a leak.
9310
9311         * metadata.c: Fix the freeing of data in the generics caches.
9312         
9313         * metadata.c (free_generic_inst): Comment this out to fix the build.
9314         (free_generic_class): Ditto.
9315
9316         * metadata.c: Free cached generic methods, instantinations and classes when
9317         they are removed from the caches.
9318         (mono_metadata_free_type): Free the type itself.
9319
9320         * class.c: Free the result of mono_class_inflate_generic_type () in a few
9321         places.
9322
9323 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9324
9325         * boehm-gc.c: restrict managed allocs to __thread supporting
9326         architectures.
9327
9328 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
9329
9330         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
9331         (mono_generic_class_get_class): Fix a leak.
9332
9333         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
9334         mono_metadata_free_type ().
9335         (mono_metadata_inflate_generic_inst): Fix a leak.
9336
9337 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9338
9339         * mono-debug.c (free_header_data): Fix a leak missed earlier.
9340
9341         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
9342         mempool.
9343
9344         * mono-debug.c (mono_debug_close_image): Fix call to 
9345         g_hash_table_remove ().
9346
9347 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9348
9349         * icall-def.h: redirect all the string ctor to the managed
9350         CreateString () methods.
9351         * string-icalls.c, string-icalls.h: removed dead code for string
9352         ctors and icalls.
9353
9354 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9355
9356         * mono-debug.c: Fix memory leaks.
9357
9358 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9359
9360         * threads-types.h: Implement mono_hazard_pointer_set and 
9361         mono_hazard_pointer_clear macros using do/while(0) to fix
9362         compilation with MSVC.
9363         
9364         Code is contributed under MIT/X11 license.
9365
9366 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9367
9368         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
9369         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
9370
9371 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9372
9373         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
9374         icalls.
9375
9376 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9377
9378         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
9379         managed-code allocated as well.
9380
9381 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9382
9383         * class.c (mono_class_is_assignable_from): Add support for generic variance.
9384
9385 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
9386
9387         * boehm-gc.c: fixed the build after the AOT changes.
9388
9389 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9390
9391         * wrapper-types.h: Add an ALLOC wrapper type.
9392
9393         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
9394         reference managed allocator methods.
9395
9396 2007-09-12  Marek Safar  <marek.safar@gmail.com>
9397
9398         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
9399         of Type array and not MonoType, a fix suggested by Hari.
9400         
9401 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9402
9403         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
9404         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
9405         
9406         Code is contributed under MIT/X11 license.
9407
9408 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9409
9410         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
9411
9412 2007-09-12  Marek Habersack  <mhabersack@novell.com>
9413
9414         * image.c (do_mono_image_open): if assembly file fails to open and
9415         MONO_IOMAP is in effect, try to find the path in a
9416         case-insensitive way.
9417
9418         * appdomain.c (mono_runtime_init): do not install postload hooks -
9419         tests show that MS.NET doesn't use anything of that sort to
9420         trigger the AppDomain.AssemblyResolve event.
9421         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9422         made non-static.
9423         (mono_runtime_init): init portability helpers here.
9424
9425         * assembly.c (mono_assembly_load_with_partial_name): if other   
9426         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9427         to resolve the assembly.
9428
9429         * domain-internals.h: added mono_try_assembly_resolve and marked
9430         it as internal.
9431
9432 2007-09-11  Jb Evain  <jbevain@novell.com>
9433
9434         * object-internals.h (MonoReflectionDynamicMethod): add
9435         a `MonoReflectionType *owner` field. The owner is used
9436         * reflection.c:
9437         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9438         method as the class declaring the dynamic method.
9439         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9440         dynamic method to the declaring type of the methodbuilder.
9441
9442 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9443
9444         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9445         rules for calling methods via reflection.
9446
9447 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9448
9449         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9450         Inflate MonoType's.
9451
9452 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9453
9454         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9455         provide a managed method that does fast allocations without needing
9456         a managed->unmanaged transition. Boehm GC implementation currently
9457         enabled for ptrfree objects on sane architectures.
9458
9459 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9460
9461         * marshal.c, marshal.h: exported a couple of useful functions and
9462         added mono_mb_get_label () to easily handle backward branches.
9463
9464 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9465
9466         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9467
9468 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9469
9470         * loader.c (find_method): Fixed the regression introduced while
9471         fixing bug #81466.
9472
9473 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9474
9475         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9476         well.
9477         
9478         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9479         icall.c reflection.c: Pass a MonoGenericContext argument to 
9480         mono_lookup_dynamic_token ().
9481
9482         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9483         #82744.
9484         
9485 2007-09-09  Robert Jordan  <robertj@gmx.net>
9486
9487         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9488         for generic methods.
9489
9490         * object.c (mono_object_get_virtual_method): Handle generic methods.
9491         Fixes bug #78882.
9492
9493         Code is contributed under MIT/X11 license.
9494
9495 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9496
9497         * image.c: fix locking in mono_image_load_file_for_image ().
9498
9499 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9500
9501         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9502         used only as a cache: added an icall to fill it.
9503
9504 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9505
9506         * reflection.h: exposed mono_reflection_free_type_info
9507         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9508         since mono_reflection_bind_generic_parameters makes a copy of it.
9509         * reflection.c (free_type_info): subinfos should be freed.
9510         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9511         made non static.
9512         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9513         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9514         this fixes #82695 and #81726.
9515    
9516
9517 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9518
9519         * process.h, process.c:  added support for user profile/info in
9520           ProcessStartInfo. For now only Windows works.
9521
9522 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9523
9524         * metadata.c: consider the generic arguments when comparing
9525         signatures (bug #82614).
9526
9527 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9528
9529         * cil-coff.h, image.c: updated assembly loader to cope with the
9530         PE32+ 64 bit file format.
9531
9532 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9533
9534         * assembly.c, class.c, domain.c, loader.c: remove useless
9535         inclusion of cil-coff.h.
9536
9537 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9538
9539         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9540         if interface is marked with CoClassAttribute. 
9541    
9542         Code is contributed under MIT/X11 license.
9543
9544 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9545
9546         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9547         if it's seen twice in major collections.
9548
9549 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9550
9551         * sgen-gc.c: big objects are not copied to the gray area, but they
9552         need to be considered for scanning, too, if they are brought alive
9553         by an object ready for finalizations or a survived one.
9554
9555 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9556
9557         * sgen-gc.c: properly account the number of disappearing links when
9558         they are nullified.
9559
9560 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9561
9562         * sgen-gc.c: share the code to scan the registered roots between the
9563         different types of collections.
9564
9565 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9566
9567         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9568
9569 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9570
9571         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9572         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9573
9574 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9575
9576         * security-manager.c (mono_security_manager_get_methods):
9577         LinkDemandSecurityException now has 2 arguments instead of 3.
9578
9579 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9580
9581         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9582         platforms which need it.
9583
9584 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9585
9586         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9587         dtor.
9588
9589 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9590
9591         * threads.c: free the thread static data on thread exit.
9592
9593 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9594
9595         * class.c: walk the hierarchy to find the generic definition for
9596         a class (fixes runtime part of bug #82498).
9597
9598 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9599
9600         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9601         ...
9602
9603         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9604
9605 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9606
9607         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9608
9609 2007-08-24  Robert Jordan  <robertj@gmx.net>
9610
9611         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9612
9613 2007-08-24  Jb Evain  <jbevain@novell.com>
9614
9615         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9616         for byref types.
9617
9618 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9619
9620         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9621         #82286.
9622
9623 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9624
9625         * assembly.c: Fix a warning.
9626         
9627 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9628
9629         * appdomain.c: parse the <runtime> section looking for the probing
9630         element with the 'privatePath' attribute, which sets additional
9631         directories in which the runtime should look for assemblies.
9632
9633 2007-08-23  Robert Jordan  <robertj@gmx.net>
9634
9635         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9636         Fixes #82499.
9637
9638 2007-08-23  Martin Baulig  <martin@ximian.com>
9639
9640         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9641         _mono_debug_init_corlib() and remove it from the header file.
9642
9643 2007-08-23  Martin Baulig  <martin@ximian.com>
9644
9645         * mono-debug-debugger.c
9646         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9647         don't notify the debugger about it.
9648
9649         * mono-debug-debugger.h
9650         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9651
9652 2007-08-23  Robert Jordan  <robertj@gmx.net>
9653
9654         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9655         Code is contributed under MIT/X11 license.
9656
9657 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9658
9659         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9660
9661 2007-08-22  Martin Baulig  <martin@ximian.com>
9662
9663         * mono-debug.c: Store debugging info on a per-domain basis and
9664         free it on domain unload.  Add support for unloading symbol files.
9665
9666         * mono-debug.h
9667         (MonoDebugList): New typedef.
9668         (MonoSymbolTable):
9669         - add `data_tables and `type_table'.
9670         - replace 'symbol_files' and `num_symbol_files' with a
9671           `MonoDebugList *'.
9672         (mono_debug_data_table): Removed.
9673         (mono_debug_list_add): New public function.
9674         (mono_debug_list_remove): New public function.
9675         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9676         (mono_debug_init_2_memory): Renamed into
9677         mono_debug_open_image_from_memory().
9678         (mono_debug_close_image): New public function.
9679         (mono_debug_domain_create): Likewise.
9680         (mono_debug_domain_unload): Likewise.
9681         (MONO_DEBUGGER_VERSION): Bump to 60.
9682
9683         * mono-debug-debugger.h
9684         (MonoDebuggerEvent):
9685         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9686         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9687         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9688         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9689           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9690         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9691           meaning.
9692         (mono_debugger_add_symbol_file): Removed.
9693         (mono_debugger_add_type): Removed.
9694         (mono_debugger_lookup_type): Removed.
9695         (mono_debugger_lookup_assembly): Removed.
9696
9697         * domain.c
9698         (mono_domain_create): Call mono_debug_domain_create().
9699         (mono_init_internal): Call mono_debug_init_corlib().
9700
9701         * assembly.c
9702         (mono_assembly_close): Call mono_debug_close_image().
9703
9704 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9705
9706         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9707         mmap call.
9708
9709 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9710
9711         * sgen-gc.c: ensure section->pin_queue_end is initialized
9712         correctly when non pinning objects in the section have been found.
9713
9714 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9715
9716         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9717         containing a list of directories separated by ':'. MSDN docs say
9718         the directories should be separated with ';'. Part of a bugfix for
9719         bug #81446
9720
9721 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9722
9723         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9724         it should MonoType and not MonoClass.
9725
9726 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9727
9728         * culture-info-table.h : regenerated.
9729
9730 2007-08-20  William Holmes  <billholmes54@gmail.com>
9731
9732         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
9733          to call ReplaceFile Kernel32 on windows or in io-layer.
9734         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
9735         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
9736          as an internal call.
9737
9738         Code is contributed under MIT/X11 license.
9739
9740 2007-08-20  Jb Evain  <jbevain@novell.com>
9741
9742         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
9743         and MONO_EXCEPTION_FIELD_ACCESS.
9744
9745         * debug-helpers.[c|h]: new mono_field_full_name function.
9746
9747 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9748
9749         * class.c: Removed class_security_level() and moved it to
9750         security-core-clr.c.
9751
9752         * security-core-clr.c, security-core-clr.h: class_security_level()
9753         is now public and renamed to mono_security_core_clr_class_level().
9754         It also looks for security attributes in the classes a class is
9755         nested in.
9756
9757 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9758
9759         * security-core-clr.c, security-core-clr.h: CoreCLR security
9760         utility functions.
9761
9762         * Makefile.am: Added security-core-clr.[ch].
9763
9764         * security-manager.c, security-manager.h: Functions and enum for
9765         setting and getting the security mode.
9766
9767         * class.c: CoreCLR security checks.
9768
9769 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9770
9771         * icall-def.h, process.c, process.h: implemented icall to get
9772         user/system processor times.
9773
9774 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9775
9776         * domain.c, threads.c, class-internals.h, domain-internals.h: New
9777         reader-lock-free jit_info_table.
9778
9779 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
9780
9781         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
9782
9783         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
9784
9785         * object-internals.h (MonoException): Add missing _data member.
9786
9787 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9788
9789         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
9790         checking that only methods with matching qname or fqname are picked
9791         from implemented interfaces.
9792
9793 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9794
9795         * verify.c (do_newarr):added, do type verification of
9796         newarr ops, push the right value on the eval stack.
9797         * verify.c (mono_method_verify): use do_newarr
9798
9799
9800 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9801
9802         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
9803         factored the common code into get_boxable_mono_type, which
9804         is now using mono_type_get_full, this fixed byref related tests.
9805
9806 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9807
9808         * class.c: added mono_type_get_full, this function has the same
9809         behavior of mono_class_get_full but the returned MonoType has
9810         all metadata of the associated token in case of a typespec token.
9811         * class.c: added mono_type_retrieve_from_typespec, used by 
9812         mono_type_get_full to retrieve the token type.
9813         * class.c (mono_class_create_from_typespec): changed to use
9814         mono_type_retrieve_from_typespec.
9815         * class.c (mono_ldtoken): changed to use mono_type_get_full
9816         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
9817         * class-internals.h: exported mono_type_get_full for internal use.
9818
9819 2007-08-16  Jb Evain  <jbevain@novell.com>
9820
9821         * domain.c (supported_runtimes): add entry for
9822         the 'moonlight' runtime version.
9823
9824 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9825
9826         * verify.c (mono_method_verify): small typo sliped in.  
9827
9828 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9829
9830         * verify.c (do_unbox_value): added, do type verification of
9831         unboxing ops
9832         * verify.c (mono_method_verify): use do_unbox_value
9833
9834
9835 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9836
9837         * verify.c (dump_stack_value): fixed typo, was printing string
9838         instead of object on stack.
9839         * verify.c (do_box_value): moved the byref check up as it leads
9840         to invalid code and should be done earlier.
9841         * verify.c: improved error messages for and ldobj
9842
9843 2007-08-15  William Holmes  <billholmes54@gmail.com>
9844
9845         * marshal.c (emit_marshal_custom): Omit the call to 
9846           marshal_native_to_managed when calling native to managed 
9847           and the argument is specified as an out argument.
9848
9849         Code is contributed under MIT/X11 license.
9850
9851 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9852
9853         * verify.c: fixed the type checks for generics, function pointers and vectors.
9854         Added type verification for ldobj and ldtoken. The verifier
9855         would segfault if header or signature of a method contained references
9856         to non-existant types.
9857
9858 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9859
9860         * marshal.c (cominterop_get_ccw): Patch from
9861         Bill Holmes to no walk up interface hierarchy. 
9862         All parent methods should be present in the interface for COM.
9863    
9864         Code is contributed under MIT/X11 license.
9865
9866 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9867
9868         * marshal.c (emit_marshal_com_interface): Patch from
9869         Bill Holmes to handle COM Interfaces as return values
9870         for native->managed calls.
9871    
9872         Code is contributed under MIT/X11 license.
9873
9874 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
9875
9876         * marshal.c (cominterop_get_idispatch_for_object): Implement
9877         for runtime callable wrappers.
9878    
9879         Code is contributed under MIT/X11 license.
9880
9881 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
9882
9883         * pedump.c (main): changed from mono_init to mono_init_from_assembly
9884         so 2.0 types are accessible
9885
9886
9887 2007-08-13  Miguel de Icaza  <miguel@novell.com>
9888
9889         * domain.c (mono_init_internal): Call mono_assembly_load_friends
9890         once we load mscorlib.   Due to the order in which we initialize,
9891         the mono_assembly_load_full routine that loads mscorlib did not
9892         load friends.   We now load it once we load the
9893         mono_defaults.internals_visible_class class. 
9894
9895         * assembly.c: Expose the mono_load_friend_assemblies method.
9896
9897 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
9898
9899         * verify.c: improved the handling of boxing, better
9900         type checking for unary ops and conversion. Fix bug
9901         regarding managed pointer compatibility checking
9902
9903 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9904
9905         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
9906
9907         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
9908
9909 2007-08-09  Raja R Harinath  <rharinath@novell.com>
9910
9911         * reflection.c (dup_type): Remove.
9912         * class.c (dup_type): Remove.
9913         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
9914         instead of the dodgy 'dup_type'.
9915         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
9916         handle the case where 'dup_type' needed the second argument.
9917
9918 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9919
9920         * domain.c: Fix a warning.
9921
9922 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9923
9924         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
9925         checking that methods with the same fqname are not overridden
9926         with a method from an ancestor.
9927
9928 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
9929
9930         * threads.c (free_thread_static_data_helper): Avoid a crash if
9931         thread->static_data is not yet set.
9932
9933 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
9934
9935         * marshal.c: Use correct image when emitting
9936         native wrapper for COM calls.
9937    
9938         Code is contributed under MIT/X11 license.
9939
9940 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
9941
9942         * icall-def.h, security.c, security.h :
9943           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
9944
9945 2007-08-07  Martin Baulig  <martin@ximian.com>
9946
9947         * mono-debug-debugger.h
9948         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
9949
9950         * domain.c (mono_domain_free): Call
9951         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
9952
9953 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9954
9955         * verify.c (check_underflow, check_overflow): error message now returns IL offset
9956         * verify.c (in_same_block): code should test if either offset is inside the clauses
9957         * verify.c (mono_method_verify): push the exception into the eval stack of exception
9958         and filter blocks
9959
9960 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9961
9962         * image.c (mono_image_close): Fix a leak.
9963
9964         * object.c (mono_runtime_invoke_array): Avoid using alloca.
9965
9966         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
9967
9968 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9969
9970         * domain.c, threads.c, threads-types.h: fix memory retention issue
9971         with thread static variables not being cleared on domain unload.
9972         Reuse thread static slots after domain unload.
9973
9974 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9975
9976         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
9977         nullable type.
9978
9979         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
9980         now done in mono_runtime_invoke_array.
9981
9982         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
9983         receiver is a nullable type.
9984
9985         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
9986         generic parameter.
9987
9988 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
9989
9990         * marshal.c: Implement COM Objects as return type for 
9991         managed->unmanaged calls. Added Release calls for COM Object
9992         out/return values in managed->unmanaged calls.
9993
9994         Code is contributed under MIT/X11 license.
9995
9996 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9997
9998         * threads.h, threads-type.h: move the hazard pointer declarations
9999         to the private header.
10000
10001 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10002
10003         * file-io.c, appdomain.c: memory leak fixes.
10004
10005 2007-08-02  Dick Porter  <dick@ximian.com>
10006
10007         * socket-io.c
10008         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
10009         SO_REUSEADDR setting into io-layer/sockets.c.
10010
10011 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10012
10013         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
10014         from Object when called on a generic parameter. Fixes #82211.
10015
10016 2007-08-01  Dick Porter  <dick@ximian.com>
10017
10018         * file-io.c (convert_share): Test FileShare values bit-by-bit.
10019         Fixes bug 79250 yet again.
10020
10021 2007-07-30  Martin Baulig  <martin@ximian.com>
10022
10023         Merged the `debugger-dublin' branch.
10024
10025         * mono-debug.h
10026         (MonoDebugDataTable): New typedef.
10027         (MonoDebugMethodAddressList): New typedef.
10028         (MonoDebugWrapperData): Removed.
10029         (MonoDebugSymbolTable): Removed `current_data_table',
10030         `current_data_table_size', `current_data_table_offset'.
10031         (MonoDebugDataItemType): Moved into mono-debug.c.
10032         (MonoDebugMethodJitInfo): Remove `address'.
10033         (mono_debug_data_table): New global variable.
10034         (mono_debug_lookup_method_addresses): New public function.
10035         (mono_debug_find_method): Take a `MonoMethod *', not a
10036         `MonoDebugMethodInfo *'.
10037
10038         * mono-debug.c: Drop support for the old symbol tables.
10039
10040 2007-06-28  Martin Baulig  <martin@ximian.com>
10041
10042         * mono-debug.c (mono_debug_debugger_version): New public variable.
10043
10044 2007-07-31  William Holmes  <billholmes54@gmail.com>
10045
10046         * metadata.c Changed mono_type_create_from_typespec to not insert
10047           the type into the hash map until after
10048           do_mono_metadata_parse_type has completed.
10049         Fixes Bug #82194
10050         Code is contributed under MIT/X11 license.
10051
10052 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10053
10054         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
10055         generic parameter. Fixes #82211.
10056
10057 2007-07-27  Jb Evain  <jbevain@novell.com>
10058
10059         * pedump.c (dump_metadata, dump_metadata_header): dump
10060         versions contained in the metadata header.
10061
10062 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10063
10064         * threads.c: register small_id_table with the GC.
10065
10066 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10067
10068         * threads.c, threads.h, class-internals.h, object-internals.h:
10069         Hazard pointers, to be used by lock-free parallel algorithms.
10070
10071 2007-07-26  Dick Porter  <dick@ximian.com>
10072
10073         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
10074         routine on non-windows platforms, as I've not managed to think of
10075         a non-kludgy way of doing this.  Finishes off bug 78739.
10076
10077 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10078
10079         * object.c: properly setup interface_bitmap in proxy vtables.
10080
10081 2007-07-25  Marek Habersack  <mhabersack@novell.com>
10082
10083         * appdomain.c (get_shadow_assembly_location): do not use TickCount
10084         to create unique shadow copy target directories, use the domain's
10085         serial number instead. Each domain gets a unique target directory
10086         that way.
10087
10088         * domain.c (mono_domain_create): added code to increment domain
10089         shadow copy serial number and cache the value in the current
10090         domain structure.
10091
10092         * domain-internals.h (struct _MonoDomain): added a new field -
10093         shadow_serial to hold the serial number used in generation of
10094         shadow-copy directories. This is to make sure that the directory
10095         name is unique for each and every domain created. We avoid a race
10096         condition with overriding assemblies already in use by other app
10097         domains.
10098
10099 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
10100
10101         * class.c (mono_bounded_array_class_get): fixed memory leak when 
10102         binding generic parameters.
10103
10104 2007-07-24  Raja R Harinath  <rharinath@novell.com>
10105
10106         * metadata.c (do_mono_metadata_parse_generic_class): Use
10107         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
10108         error.
10109
10110 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10111
10112         * loader.c, class-internals.h, reflection.c: removed the per-method
10113         generics hashtable: we use the global one through the call of
10114         mono_class_inflate_generic_method ().
10115
10116 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10117
10118         * class.c, metadata.c, class-internals.h: introduce yet another
10119         generics global cache for inflated methods (fixes 98% of the perf
10120         issue in bug #81806).
10121
10122 2007-07-23  Raja R Harinath  <rharinath@novell.com>
10123
10124         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
10125         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
10126         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
10127         return a MonoGenericInst containing (a copy) of those types.
10128         (mono_metadata_inflate_generic_inst): Update to changes.
10129         (mono_metadata_parse_generic_inst): Likewise.
10130         (mono_get_shared_generic_inst): Likewise.
10131         * reflection.c (mono_class_bind_generic_parameters): Likewise.
10132         (mono_reflection_bind_generic_method_parameters): Likewise.
10133         * metadata-internals.h: Likewise.
10134         * icall.c (free_generic_context): Kill.
10135         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
10136
10137         * reflection.c (reflection_methodbuilder_to_mono_method): Use
10138         mono_metadata_type_dup.
10139         * marshal.c (mono_mb_create_method): Likewise.
10140
10141         * metadata.c (mono_metadata_type_dup): Rename from
10142         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
10143         MonoImage.  Handle a few more cases, esp. when no mempool is given.
10144         * marshal.c, metadata-internals.h: Update to changes.
10145
10146 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10147
10148         * class.c: fixed a small leak for array classes and removed warning.
10149
10150 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10151
10152         * loader.c (mono_method_get_param_token): Make this work on generic methods.
10153         Return 0x8000000 for return parameters. Fixes #82161.
10154
10155 2007-07-21  Marek Habersack  <grendello@gmail.com>
10156
10157         * appdomain.c (get_shadow_assembly_location): append the current
10158         ticks value to the path. Avoids overwriting the same assemblies by
10159         several threads at the same time.
10160
10161 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10162         and Raja R Harinath  <rharinath@novell.com>
10163
10164         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10165         Simplify slightly.
10166         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
10167         property for testing if a method is a generic method definition.
10168
10169 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10170
10171         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
10172
10173 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10174
10175         * verify.c: used function from private branch, reverted to the one in class.h 
10176
10177 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10178
10179         * verify.c: a typo slipped in and the code wont compile
10180
10181 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10182
10183         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
10184         disabled box instruction as it is doing the wrong thing
10185         improved stack dump messages, now it is easier to debug type related issues
10186
10187
10188 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
10189
10190         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
10191
10192 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10193
10194         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
10195         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
10196         grouped with class and valuetype. This change will simply 
10197         the code as it should be handled just like unmanaged pointers.
10198
10199 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10200
10201         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
10202
10203 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10204
10205         * verify.c: several stack merge issues fixed, reference comparisons now
10206         check the type size. strict type check now works correctly.
10207         added more uses of IS_MANAGED_POINTER macro.
10208         fixed issues pointed by running the test suite against .net.
10209         
10210
10211 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10212
10213         * class.c, loader.c, class-internals.h: Removed the
10214         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
10215         defines.
10216
10217         * icall.c: Better error checking in some internal reflection
10218         methods.
10219
10220 2007-07-18  William Holmes  <billholmes54@gmail.com>
10221
10222         * filewatcher.c : removed unused variable 'filename' in 
10223           ves_icall_System_IO_FSW_SupportsFSW
10224
10225 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10226
10227         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
10228         obsolete, removed.
10229
10230 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10231
10232         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
10233         
10234         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
10235
10236 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10237
10238         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
10239         Implement generics support.
10240         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10241
10242         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
10243         type_args and method_args arguments.
10244         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
10245         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10246         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
10247
10248 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
10249
10250         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
10251           It adds a rootimage parameter to mono_reflection_get_type_internal,
10252           adds new function mono_reflection_get_type_with_rootimage and use
10253           the rootimage to resolve the types instead of the current image
10254
10255 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10256
10257         * culture-info-table.h: Forgot to update after r78304.
10258
10259 2007-07-13  Raja R Harinath  <rharinath@novell.com>
10260
10261         * class.c (mono_class_is_open_constructed_type)
10262         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
10263
10264 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
10265
10266         * class.c (mono_bounded_array_class_get):  method fails if used with
10267         an incomplete TypeBuilder enum (no basetype field), fixed it by 
10268         avoiding calculating the size for such array as it cannot be instantiated.
10269         Fix bug #82015
10270
10271 2007-07-12  Raja R Harinath  <rharinath@novell.com>
10272
10273         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
10274         field.
10275         * metadata.c, reflection.c: Update to changes.
10276
10277 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
10278
10279         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
10280         mono_class_is_valid_enum, they are used to valide a enum when loading.
10281         * reflection.c: used new functions to throw TypeLoadException when and
10282         invalid enum is build with TypeBuilder. Fixes #82018
10283   
10284 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10285
10286         * object.c: forgot commit of mono_class_setup_methods () to access
10287         iface->methods.
10288         * object-internals.h: added a few more handy fields to
10289         MonoIMTCheckItem.
10290
10291 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10292
10293         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
10294         iface->methods.
10295
10296 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10297
10298         * class-internals.h, object-internals.h, object.c: IMT-based
10299         interface invocation core from Massimiliano Mantione
10300         (massi@ximian.com) with a reworked arch-specific interface,
10301         bsearch implementation and a few bugfixes and memory savings by me.
10302
10303 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
10304
10305         * class.c (mono_class_create_from_typedef): mono would segfault if 
10306         an enum did not have a __value field. It now throws a TypeLoadException
10307         for such cases. Fix bug #82022
10308
10309 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10310
10311         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
10312
10313 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10314
10315         * class.c (mono_class_init): If a class is already inited but has
10316         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
10317
10318 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10319
10320         * class.c: Properly handle the case of an unimplemented interface
10321         method.  Fixes: 81673.
10322
10323 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10324
10325         * class-internals.h, object.c: cleanup patch from massi: use
10326         MonoVTable->interface_bitmap since the vtable interfaces offset array
10327         is going away.
10328
10329 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10330
10331         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
10332         GetMDStreamVersion icall instead.
10333
10334 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10335
10336         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
10337         not use mono_dl_build_path() with a full library name: makes
10338         fallbacks to libgaim and libfam work.
10339
10340 2007-07-06  William Holmes  <billholmes54@gmail.com>
10341
10342         * assembly.c: Added a continue statement in probe_for_partial_name when
10343          parse_assembly_directory_name fails.  Fixes : 82002
10344
10345 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
10346
10347         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
10348         and added a verification  for TYPEDBYREF.
10349         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
10350         make native int interchangeable with int32 and some small cleanup and formating.
10351         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
10352         handle byref of byref.
10353         * verify.c (push_local): handle byref of byref.
10354         * verify.c (do_binop): invalid mix of values is unverifiable
10355         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
10356         added visibility checks
10357         * verify.c (field related method): added visibility checks
10358         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
10359
10360 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
10361
10362         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
10363         string.
10364
10365 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10366
10367         * profiler.c (mono_profiler_load): Fix an off-by-one error.
10368
10369         * marshal.c (emit_marshal_string): When returning a string from managed code,
10370         allways make a copy even for unicode strings. Fixes #81990.
10371
10372 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
10373
10374         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
10375         of byref generic inst types (bug #81997).
10376
10377 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10378
10379         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
10380         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
10381
10382 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
10383
10384         * marshal.c (emit_marshal_string): Add support for unicode strings in
10385         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
10386
10387 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
10388
10389         * verify.c: field load/store are now verified, missing only access checks now
10390
10391 2007-06-28  Martin Baulig  <martin@ximian.com>
10392
10393         * mono-debug.c (mono_debug_debugger_version): New public variable.
10394
10395 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
10396
10397         * locales.c: When constructing DateTimeFormat or NumberFormat for
10398         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
10399         MonoCultureInfo contructed from the current locale is always
10400         read-only and has UseUserOverride set to true. All MonoCultureInfo
10401         instances returned for GetCultures have both IsReadOnly and
10402         UseUserOverride set to true. Fixes part of bug #81930.
10403
10404 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
10405
10406        * icall-def.h: Update System.__ComObject icalls
10407        * marshal.c: Avoid managed transition (and object creation)
10408        when looking up COM interface in RCW.
10409        * marshal.h: Ditto.
10410        
10411        Code is contributed under MIT/X11 license.
10412
10413 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
10414
10415         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
10416         to avoid crashes during assembly unloading.
10417
10418 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10419
10420         Fix MethodInfo.IsGenericMethodDefinition
10421         * reflection.c (mono_reflection_bind_generic_method_parameters):
10422         Rearrange code to ensure we always uses a generic method definition.
10423         * class.c (mono_class_inflate_generic_method_full): Set
10424         'generic_container' field only for generic method definitions.
10425         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10426         Use presense of 'generic_container' field as indication of being a
10427         generic method definition.
10428
10429 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10430
10431         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10432
10433         * object-internals.h: Reflect changes in the layout of the managed Delegate
10434         class.
10435         
10436         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10437         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10438         runtime memory used by the dynamic method. Fixes #77146.
10439
10440 2007-06-21  Dick Porter  <dick@ximian.com>
10441
10442         * file-io.h: 
10443         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10444         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10445         81767.
10446
10447 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10448
10449         * reflection.c (method_encode_methodspec): Add a tripwire.
10450         * class.c (inflate_generic_type): The fully open generic type is
10451         not the same as the generic type definition.
10452
10453 2007-06-21  Martin Baulig  <martin@ximian.com>
10454
10455         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10456
10457         * mono-debug-debugger.h
10458         (MonoDebuggerBreakpointInfo): Removed.
10459         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10460         (mono_debugger_remove_breakpoint): Likewise.
10461         (mono_debugger_breakpoint_callback): Likewise.
10462         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10463
10464 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10465
10466         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10467         generic type is not the same as the generic type definition.
10468         * class.c (mono_generic_class_get_class): Likewise.
10469
10470 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10471
10472         * icall.c: The second argument to 
10473         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10474         is a MonoType not a MonoClass.
10475
10476 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10477
10478         * verify.c: support for function pointers in the verifier
10479
10480 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10481
10482         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10483
10484 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10485
10486         * assembly.c: removed Mono.Data.SqliteClient from the list of
10487         forward-compatible assemblies as it breaks the ABI (bug #81899).
10488
10489 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10490
10491         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10492         lookup/update with the loader lock.
10493         * reflection.c (mono_class_bind_generic_parameters): No need to
10494         protect mono_metadata_lookup_* with the loader lock.
10495         * class.c (inflate_generic_type): Likewise.
10496         
10497         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10498         on a generic instantiated type.
10499
10500 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10501
10502         *verify.c: produce meanfull error messages on verification error
10503         *verify.c: fixed some cases of verification errors reported as validation errors
10504         *pedump.c: fixed the error name array, now it shows validation errors properly
10505         *verify.h: fixed the contant that should be used for verification errors
10506
10507 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10508
10509         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10510         for bug #77596, 81858 and 80743 (generics data structures on domain
10511         unload).
10512
10513 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10514
10515         Avoid allocating 'MonoGenericContext' on the heap.
10516         * class-internals (_MonoMethodInflated::context): Make field
10517         inline, not a pointer.
10518         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10519         stack.  Use the context embedded within the inflated method as the
10520         hash key, rather than 'new_context'.
10521         * class.c (inflate_generic_context): Simplify.  Return a struct
10522         rather than allocating on the heap.
10523         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10524         doesn't salt away a copy of the context -- simplifying the
10525         lifetime rules of a 'MonoGenericContext *'.
10526         (mono_method_get_context): Return pointer to embedded context.
10527         (setup_generic_array_ifaces): Allocate temporary context on stack.
10528         * reflection.c (inflate_mono_method): Likewise.
10529         (mono_reflection_bind_generic_method_parameters): Likewise.
10530         Use the context embedded within the inflated method as the hash key.
10531
10532         Avoid a source of allocation of 'MonoGenericContext'.
10533         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10534         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10535         * class.c: Update to changes.
10536         (mono_generic_class_get_context): Simplify drastically.  Now just
10537         returns a pointer to the field.
10538         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10539         argument as a const pointer.
10540         (mono_metadata_generic_context_equal): Likewise.
10541         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10542         Update to changes.
10543
10544 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10545
10546         * verify.c improved the handling of brtrue/brfalse, factored out common code
10547
10548 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10549
10550         Kill MonoGenericMethod.
10551         * class-internals.h (MonoGenericContext::method_inst): Rename from
10552         'gmethod' and convert to a MonoGenericInst.
10553         (MonoGenericMethod): Remove.
10554         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10555         * loader.c (method_from_methodspec): Update to changes.  Use a
10556         MonoGenericContext as the key to the hashtable.
10557         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10558         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10559         (mono_metadata_generic_context_hash): Likewise from
10560         'mono_metadata_generic_method_hash'.  Change hash function.
10561         (mono_metadata_load_generic_params): Update to changes.
10562         (mono_get_shared_generic_method): Remove.
10563         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10564         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10565         (inflate_generic_context): Likewise.
10566         (mono_class_inflate_generic_method_full): Likewise.
10567         (setup_generic_array_ifaces): Likewise.
10568         (mono_class_create_from_typespec): Likewise.
10569         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10570         (method_encode_methodspec): Update callsite.
10571         (reflection_methodbuilder_to_mono_method): Update to changes.
10572         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10573         MonoGenericContext as the key to the hashtable.
10574         (inflate_mono_method): Update to changes.
10575
10576         * class-internals.h (MonoGenericMethod::container): Remove.
10577         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10578
10579 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10580
10581         * profiler-private.h, profiler.c, profiler.h: added API to profile
10582         exception events.
10583
10584 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10585
10586         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10587
10588 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10589
10590         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10591         Fixed overflow and underflow not aborting the verification process.
10592
10593 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10594
10595         * class-internals.h (MonoStats): Added stats entries for dynamic
10596         code allocations.
10597
10598 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10599
10600         * loader.c (mono_free_method): Free header->locals and header->clauses.
10601
10602         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10603         dynamic case.
10604
10605         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10606
10607         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10608
10609 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10610
10611         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10612         the tables.
10613
10614 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10615
10616         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10617
10618 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10619
10620         MonoGenericMethod on a diet
10621         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10622         here ...
10623         (_MonoGenericMethod::reflection_info): ... from here.
10624         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10625         Update to changes.
10626         * reflection.c (inflate_mono_method): Likewise.
10627         (mono_reflection_bind_generic_method_parameters): Likewise.
10628
10629 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10630
10631         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10632         *verify.c: factored long ldarg forms to share code with short forms
10633
10634 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10635
10636         *verify.c: fixed code formating factored some duplicate code
10637         into a new function
10638
10639         *verify.h: fixed binary incompatibility introduced earlier
10640
10641         *pedump.c: fixed formating
10642
10643 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10644
10645         Fix assertion when disassembling Mono.C5.dll
10646         * loader.c (method_from_methodspec): Avoid inflating a method
10647         twice with the same context.  If the methodref is inflated, use
10648         the declaring method instead.
10649
10650         * class.c (mono_class_from_generic_parameter): Fix case similar to
10651         bug #81830 handled below, but for method containers.
10652
10653 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10654
10655         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10656         get_shared_generic_class.  Directly inflate the instance.
10657         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10658         (inflate_generic_class): Delete.
10659         (get_shared_generic_class): Delete.  Move setting of
10660         'cached_class' and 'cached_context' ...
10661         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10662
10663         * metadata.c (mono_metadata_lookup_generic_class): Change
10664         signature to take the components of a MonoGenericClass rather than
10665         an allocated MonoGenericClass.  Change semantics to be intern-like.
10666         * reflection.c (mono_class_bind_generic_parameters): Update to
10667         changes.  Make locking region tighter.
10668         * class.c (inflate_generic_class): Update to changes.
10669         (get_shared_generic_class): Likewise.
10670         * metadata-internals.h: Likewise.
10671
10672         * reflection.c (mono_class_bind_generic_parameters): Take and
10673         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10674         (mono_reflection_bind_generic_parameters): Use
10675         'mono_class_bind_generic_parameters' rather than duplicate the code.
10676         * class.c (mono_bounded_array_class_get): Update to changes.
10677         * object-internals.h: Likewise.
10678
10679         * reflection.c (mono_class_bind_generic_parameters): Only support
10680         parameterizing generic type definitions.  Remove support for other
10681         open types.
10682
10683 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10684
10685         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10686
10687         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10688         in the dynamic case.
10689
10690 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10691
10692         * threads.c: When cleaning up thread, reset the Background bit.
10693         Fixes bug #81720.
10694
10695 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10696
10697        * metadata.c: Move variable declarations to top of scope.
10698        * verify.c: Move variable declarations to top of scope.
10699
10700        Code is contributed under MIT/X11 license.
10701
10702 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10703
10704         * reflection.c (mono_class_bind_generic_parameters): Replace
10705         open-coded loop with mono_metadata_inflate_generic_inst.
10706
10707         * class.c (get_shared_generic_class): Don't call
10708         mono_get_shared_generic_inst.  Use the container's own
10709         'class_inst'.
10710
10711         * metadata.c (mono_metadata_load_generic_params): Move
10712         initialization of 'context' field here from ...
10713         * class.c (mono_class_create_from_typedef): ... here, and ...
10714         * loader.c (mono_get_method_from_token): ... here.
10715
10716         * class.c (get_shared_generic_class): Rename from
10717         mono_get_shared_generic_class and make static.
10718         (mono_get_shared_generic_inst): Move to metadata.c.
10719         * loader.c (mono_get_shared_generic_method): Likewise.
10720         * class-internals.h, metadata-internals.h: Update to changes.
10721
10722         Fix #81830
10723         * class.c (mono_class_from_generic_parameter): Don't assume a
10724         generic container owner exists.  Generic containers from monodis
10725         don't have any.
10726
10727 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10728
10729         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10730         * verify.h: new typedefs to returns the non-verifiable status
10731         * verify.c: initial implementation of generics, stack merging and object compatibility check
10732
10733 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10734
10735         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10736         a MonoInternalHashTable again (fixed bug in internal hash table
10737         code).
10738
10739 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10740
10741         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10742         MonoInternalHashTable again (fixed bug in internal hash table
10743         code).
10744
10745 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10746
10747         * class.c, image.c, class-internals.h, domain.c,
10748         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
10749         changes.  Have to figure out what makes them break the SWF
10750         regression.
10751
10752 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10753
10754         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10755         a MonoInternalHashTable now.
10756
10757 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10758
10759         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10760         MonoInternalHashTable now.
10761
10762 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10763
10764         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
10765         invoke_impl code.
10766
10767         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
10768
10769         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
10770         dependent trampoline.
10771
10772         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10773
10774         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
10775
10776 2007-05-29  Robert Jordan  <robertj@gmx.net>
10777
10778         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
10779
10780 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
10781
10782         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
10783
10784 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
10785
10786        * marshal.c: Fix interface lookup loops for
10787        cominterop_get_com_slot_for_method and 
10788        cominterop_get_method_interface. Only need to lookup
10789        if type is a class, else use interface type method is on.
10790
10791        Code is contributed under MIT/X11 license.
10792
10793 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
10794
10795         * reflection.c: HasSecurity can be present even if no specially 
10796         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
10797         SecurityAttribute). Fix CAS regression tests on buildbot.
10798
10799 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10800
10801        * appdomain.c: Add configure checks for header files.
10802        * image.c: Add configure checks for header files.
10803        * file-io.c: Add configure checks for header files.
10804        * debug-mono-symfile.c: Add configure checks for header files.
10805        * threadpool.c: Add configure checks for header files.
10806        * console-io.c: Add configure checks for header files.
10807        * profiler.c: Add configure checks for header files.
10808        * rawbuffer.c: Add configure checks for header files.
10809        * icall.c: Add configure checks for header files.
10810        * rand.c: Add configure checks for header files.
10811        * socket-io.c: Add configure checks for header files.
10812
10813        Code is contributed under MIT/X11 license.
10814
10815 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
10816
10817         * reflection.c (mono_custom_attrs_from_builders): Remove the 
10818         assertion as it breaks the build.
10819         
10820         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
10821
10822         * reflection.c (lookup_custom_attr): Make a copy here too.
10823
10824         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
10825         dynamic images.
10826
10827         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
10828         images.
10829
10830         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
10831         info.
10832
10833 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10834
10835         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
10836         (load_cattr_value): Ditto.
10837
10838 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
10839
10840         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
10841
10842 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
10843
10844         * threads.c: In "start_wrapper", set apartment_state to MTA if
10845         apartment_state is Unknown and we're running on 2.0 profile or
10846         higher.
10847         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
10848         to main method, then set apartment_state to Unknown on 1.0 profile,
10849         and MTA on 2.0 profile.
10850
10851 2007-05-16  Jb Evain  <jb@nurv.fr>
10852
10853         * class-internals.h (MonoDefaults): Add an attribute_class and
10854           customattribute_data_class.
10855         * domain.c (mono_init_internal): Populate them.
10856         * reflection.c: Use them to remove duplicates. Make a vew
10857         MonoClass variables `static'.
10858
10859 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10860
10861         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
10862         step in implementing IMT, so that all isinst checks now can go
10863         through the bitmap.
10864         This was needed because vtables for TransparentProxy need to look
10865         like the vtable of the "target" class, so they need to point to
10866         its interface bitmap directly.
10867
10868         * object.c: inside "mono_class_create_runtime_vtable" and
10869         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
10870
10871 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
10872
10873         * object-internals.h
10874           culture-info.h : added territory field in MonoCulture and
10875           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
10876         * locales.c : fill territory field above too.
10877         * culture-info-table.h : regenerated.
10878
10879 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
10882         Fixes #81599.
10883
10884 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
10885
10886         * object.c: Always initialize apartment, even if 
10887         there is no custom attributes on entry point.
10888         
10889         Code is contributed under MIT/X11 license.
10890
10891 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
10892
10893         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
10894         * metadata.c: If no encoding is set, check for unicode
10895         on class.
10896         
10897         Code is contributed under MIT/X11 license.
10898
10899 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10900
10901         * threads.c: Handle if mono_thread_current returns NULL 
10902         
10903         Code is contributed under MIT/X11 license.
10904
10905 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10906
10907         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
10908         in start_wrapper. Added mono_thread_init_apartment_state and
10909         mono_thread_cleanup_apartment_state.
10910         * object.c: Initialize thread apartment state on main thread
10911         by checking for STAThreadAttribute on entry point.
10912         * object-internals.h: Add apartment_state field to MonoThread.
10913         * threads-types.h: Add unmanaged definition of 
10914         System.Threading.ApartmentState, MonoThreadApartmentState.
10915         
10916         Code is contributed under MIT/X11 license.
10917         
10918 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
10919
10920         * class.c: Fix windows build.
10921         * class-internals.h: Fix windows build.
10922         
10923         Code is contributed under MIT/X11 license.
10924
10925 2007-05-08  Robert Jordan  <robertj@gmx.net>
10926
10927         * process.c (CreateProcess_internal):
10928         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
10929         .CreateNoWindow was specified. Fixes #81496.
10930
10931 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10932
10933         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
10934         step in implementing IMT, replaced it with two compact arrays
10935         (interfaces_packed and interface_offsets_packed) and a bitmap that
10936         is used for isinst checks (interface_bitmap).
10937
10938         * class.c: (compare_interface_ids): compare function to pass to
10939         bsearch when looking for an interface with a given id.
10940         (mono_class_interface_offset): reimplemented using bsearch on
10941         interfaces_packed, getting the offset from interface_offsets_packed.
10942         (print_implemented_interfaces): utility debugging function.
10943         (setup_interface_offsets): reworked to initialize interfaces_packed,
10944         interface_offsets_packed and interface_bitmap.
10945
10946         * object.c: replaced all accesses to "MonoClass.interface_offsets"
10947         with uses of interfaces_packed and interface_offsets_packed.
10948
10949 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10950
10951         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
10952         mono_class_interface_offset prototype to wrap all accesses to
10953         "MonoClass.interface_offsets".
10954
10955         * class.c: Implemented mono_class_interface_offset, and wrapped all
10956         accesses to "MonoClass.interface_offsets".
10957
10958         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
10959         "MonoClass.interface_offsets".
10960
10961 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
10962
10963         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
10964         GetMethodFromHandle overloads (bug #78637).
10965
10966 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10967
10968         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
10969         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
10970
10971 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
10972
10973         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
10974         #81498.
10975
10976         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
10977         gracefully.
10978         (mono_custom_attrs_from_index): Ditto.
10979
10980         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
10981         Fixes #81501.
10982
10983 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
10986         is now allocated from a mempool.
10987
10988 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
10989
10990         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
10991         caller holds threads_lock, leading to deadlocks. Fixes #81476.
10992
10993 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10994
10995         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
10996         mono_loader_clear_error () too late. Fixes #81463.
10997
10998 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
10999
11000         * culture-info-table.h : regenerated.
11001
11002 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11003
11004         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
11005         is missing.
11006
11007 2007-04-25  Dick Porter  <dick@ximian.com>
11008
11009         * Makefile.am: Put the mingw enforced-optimisation back into the
11010         PLATFORM_WIN32 section.
11011
11012 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11013
11014         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
11015         patch.
11016
11017         * image.c (mono_image_load_module): New API function to load a module reference.
11018
11019         * image.c (load_modules): Load modules lazily. Fixes #80812.
11020
11021         * class.c (mono_class_from_typeref): Use mono_image_load_module.
11022         
11023         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
11024
11025         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
11026         to mono_image_load_module_dynamic.
11027
11028 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
11029
11030         * marshal.c: Fix calling convention for CCW on non-windows
11031         platforms. STDCALL on windows, CDECL everywhere else to work 
11032         with XPCOM and MainWin COM.
11033         
11034         Code is contributed under MIT/X11 license.
11035
11036 2007-04-23  Martin Baulig  <martin@ximian.com>
11037
11038         Fix #80969.
11039
11040         * loader.c
11041         (method_from_memberref): Added `gboolean *used_context' argument.
11042         (mono_get_method_from_token): Likewise.
11043         (mono_get_method_full): Don't insert the method in the cache when
11044         `used_context' is true.
11045
11046 2007-04-23  Raja R Harinath  <rharinath@novell.com>
11047
11048         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
11049
11050         * reflection.c (mono_reflection_bind_generic_parameters): Don't
11051         create new MonoTypes for returned types.
11052         * class.c (mono_generic_class_get_class): Export mono-internal.
11053         * class-internals.h: Update to changes.
11054
11055 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
11056
11057         * threadpool.c, threadpool.h, icall-def.h: patch from
11058         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
11059
11060 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
11061
11062         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
11063         
11064         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
11065
11066         * threads.c (mono_thread_get_stack_bounds): New helper function.
11067
11068         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
11069         Correctly compute stack bounds when attaching. Fixes #81394.
11070
11071 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
11072
11073         * reflection.c: fix handling of doubles in custom attributes
11074         for the arm-fpa format (bug #81368).
11075
11076 2007-04-18  Raja R Harinath  <rharinath@novell.com>
11077
11078         * reflection.c (assembly_add_win32_resources): Mildly relax an
11079         bounds check to let the end pointer point just past the end of the
11080         allocated buffer.  (may fix #81384)
11081
11082 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
11083
11084         * culture-info-table.h : regenerated.
11085
11086 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
11087
11088         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
11089         the thread is aborted early.
11090
11091 2007-04-05  Dick Porter  <dick@ximian.com>
11092
11093         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
11094         FindFirstFile()/FindNextFile() to find entries.  This lets the
11095         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
11096         81038.
11097
11098         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
11099         the parameters of
11100         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
11101
11102 2007-04-04  Martin Baulig  <martin@ximian.com>
11103
11104         * debug-helpers.c
11105         (mono_method_desc_full_match): Add support for nested classes.
11106
11107 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
11108
11109         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
11110
11111 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
11112
11113         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
11114         waiting for too many threads.
11115
11116 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
11117
11118         * environment.c: Fix return value check on uname so we can get the 
11119         executing version on Solaris operating systems.
11120
11121 2007-03-28  Jb Evain  <jbevain@gmail.com>
11122
11123         * class.c (mono_type_get_name_recurse): Complete the
11124         fix for the creation of assembly qualified names for
11125         pointer types. Fixes #81208.
11126
11127 2007-03-27  Dick Porter  <dick@ximian.com>
11128
11129         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
11130         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
11131         changed.
11132
11133         * threads.c
11134         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
11135         the value of ReleaseMutex().
11136
11137 2007-03-27  Dick Porter  <dick@ximian.com>
11138
11139         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
11140         in little-endian order, not network endian, so must be converted
11141         to host endian here.  Fixes bug 80593.
11142
11143 2007-03-22  Jb Evain  <jbevain@gmail.com>
11144
11145         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
11146         qualified names for pointer types. Fixes #81208.
11147
11148 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
11149
11150         * marshal.c: Add support for PreserveSigAttribute. 
11151         
11152         Code is contributed under MIT/X11 license.
11153
11154 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
11155
11156         * process.c: Fix endianness issues. Fixes #81126.
11157
11158         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
11159         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
11160
11161         * image.c (mono_image_lookup_resource): Make this work on big-endian
11162         machines.Change API contract so the caller needs to free the return value.
11163         
11164         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
11165         API change.
11166         
11167 2007-03-14  Martin Baulig  <martin@ximian.com>
11168
11169         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
11170         mono_type_get_desc() as well.
11171
11172 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11173
11174         * icall.c:  Fix environ access in VS.  
11175         
11176 2007-03-13  Alp Toker  <alp@atoker.com>
11177
11178         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
11179         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
11180         #63841.
11181
11182 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
11183
11184         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
11185         circular references among dynamic methods. Fixes #81091.
11186
11187         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
11188
11189 2007-03-09  Martin Baulig  <martin@ximian.com>
11190
11191         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
11192
11193 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
11194
11195         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
11196         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
11197         
11198         Code is contributed under MIT/X11 license.
11199         
11200 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
11201
11202         * loader.c: Reapply patch for bug #79424.
11203
11204 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * metadata.c (mono_type_to_unmanaged): Only convert object to
11207         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
11208
11209 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
11210
11211         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
11212         (and incorrectly set) is_reference field from MonoGenericInst.
11213
11214 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
11217         a little earlier.
11218
11219         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
11220
11221         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
11222
11223 2007-03-05  Miguel de Icaza  <miguel@novell.com>
11224
11225         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
11226         FileOptions.1 value to mean "temporary", map that to
11227         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
11228
11229         Fixes 80688
11230
11231 2007-03-03  Marek Habersack  <mhabersack@novell.com>
11232
11233         * appdomain.c: implement MS .Net style shadow copying. Copies of
11234         the assemblies are made in a subdirectory of the dynamic base
11235         directory, the assembly names are preserved.
11236         Copy .mdb and .config files along with the assemblies being shadowed.
11237
11238 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11239
11240         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
11241         (emit_marshal_handleref): Ditto.
11242
11243         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
11244         on Visual C++. Fixes #80671.
11245
11246 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11247
11248         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
11249         for clone operations.
11250
11251 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * marshal.c: Fix warnings.
11254
11255 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
11256
11257         * loader.c: allow case-insensitive matching of the dll name
11258         in dllmap handling when prefixed with "i:".
11259
11260 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
11261
11262         * threads.c: Fix #ifdef for dummy_apc function for VS.
11263
11264 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11265
11266         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
11267
11268 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
11269         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
11270         giving precedence to the methods with a fully qualified name
11271         (InterfaceName.MethodName) when building the interface sections
11272         of the vtable.
11273
11274 2007-02-16  Dick Porter  <dick@ximian.com>
11275
11276         * threadpool.c (append_job): Fix fast-path array handling, so it's
11277         less likely the array will grow exponentially when the load is
11278         heavy.
11279
11280 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11281
11282         * metadata-internals.h, loader.c: fix dllmap lookup order
11283         for non-function maps, too, and prepare for fallback code.
11284
11285 2007-02-12  Robert Jordan  <robertj@gmx.net>
11286
11287         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
11288         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
11289         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
11290         GlobalFree. Fixes a part of bug #77075.
11291
11292 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
11293
11294         * loader.c: implemented typedef parent in field memberref.
11295
11296 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
11297
11298         * marshal.c: Fix warnings and remember to call Release on
11299         IUnknown of RCW.
11300         
11301         Code is contributed under MIT/X11 license.
11302
11303 2007-02-10  Miguel de Icaza  <miguel@novell.com>
11304
11305         * class-internals.h: Add MonoHandleRef definition, and
11306         handleref_class to mono_defaults. 
11307
11308         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
11309         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
11310
11311         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
11312         (do nothing on this stage)
11313         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
11314         (emit_marshal_handleref): New method, used for argument handling
11315         of HandleRefs. 
11316
11317 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
11318
11319         * class.c (mono_class_setup_parent): Lazily init com types.
11320         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
11321         init com types.
11322         * object.c (mono_remote_class_vtable): Lazily init com types.
11323         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
11324         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
11325         * domain-internals.h: Expose mono_init_com_types.
11326         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
11327         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
11328         Add support for COM Callable Wrapper marshalling.
11329         * marshal.h: Add icall definitions.
11330         * gc.c: Handle freeing of CCWs in finalizer code.
11331         
11332         Code is contributed under MIT/X11 license.
11333
11334 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
11335
11336         * reflection.c: changed all the signature encoding code to use
11337         a variable-sized buffer.
11338
11339 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11340
11341         * marshal.c: locking fixes: never take the loader lock
11342         or other runtime locks when holding the marshal lock
11343         (fixes bug#80664).
11344
11345 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
11346
11347         * marshal.c: make the delegate function pointer mapping
11348         work for the moving GC.
11349
11350 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
11351
11352         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
11353         for bug #80618.
11354
11355 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11356
11357         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
11358         gmodule.
11359
11360 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11361
11362         * threadpool.c: made the code moving-GC safe.
11363
11364 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
11365
11366         * assembly.c, boehm-gc.c, class-internals.h, class.c,
11367         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
11368         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
11369         warning cleanup.
11370         * reflection.c: warning cleanup, some threading and moving GC fixes.
11371
11372 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
11373
11374         * class.c, loader.c: create the needed Set/Get/Address array methods
11375         as well as the .ctors in mono_class_init (), fixes bug #80567.
11376
11377 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11378
11379         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
11380         we doesn't decrease its alignment. Should fix the sparc build.
11381
11382 2007-01-24  Dick Porter  <dick@ximian.com>
11383
11384         * socket-io.c
11385         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
11386         Create the returned object if we need to ignore an unsupported
11387         socket option.  Fixes a segfault reported by Atsushi.
11388
11389 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11390
11391         * class.c, object.c: restrict GC-tracked fields to
11392         UIntPtr fields used inside corlib, so we provide better
11393         type info to the GC and also allow broken packing as in
11394         bug #80580.
11395
11396 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
11397
11398         * sgen-gc.c: removed duplicated function.
11399
11400 2007-01-19  Miguel de Icaza  <miguel@novell.com>
11401
11402         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
11403         value that means that the value is not supported, but that we
11404         should not return a failure, but instead report this as a
11405         successful operation.
11406
11407 2007-01-19  Raja R Harinath  <rharinath@novell.com>
11408
11409         Fix tests/bug79956.2.il
11410         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
11411         (mono_generic_class_get_class): If the generic definition in an
11412         enum, copy over other fields related to it.
11413
11414 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11415
11416         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11417         genericinst enums (bug #79215).
11418
11419 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11420         * class.c: Fix bug 80307.
11421
11422 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11423
11424         * image.c: if the file table is not present, try to load
11425         all the modules, since we don't have info about them
11426         having or not metadata (bug #80517).
11427         * assembly.c: allow mono_assembly_load_references () to
11428         work for netmodules.
11429
11430 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11431
11432         * image.c, metadata-internals.h, object.c: execute module
11433         cctors when running on the 2 runtime if present (bug #80487).
11434
11435 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11436
11437         * icall.c: optimized InitializeArray() on bigendian.
11438
11439 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11440
11441         * icall.c: fix for the broken ARM FPA double format.
11442
11443 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11444
11445         * icall.c: handle endian issues for r4 and r8 types, too, in
11446         the InitializeArray() icall.
11447
11448 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11449
11450         * loader.c (mono_loader_error_prepare_exception): Clear the error
11451         once we have extracted the information from it, do this before we
11452         call into the JIT's class loading mechanisms.
11453
11454         * object.c (mono_class_create_runtime_vtable): Do not clear the
11455         loader error before calling mono_class_get_exception_for_failure
11456         as the loader error is needed inside
11457         mono_class_get_exception_for_failure to throw the error (thinko).
11458
11459         Fixes #80521
11460         
11461 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11462
11463         * reflection.c: align fields rva data so it's faster to load at
11464         runtime.
11465
11466 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11467
11468         Prepare to simplify GenericMethod handling.
11469         * class-internals.h (mono_method_get_context): New accessor function.
11470         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11471         rather than directly accessing '->context' field.
11472
11473         * class-internals.h (_MonoGenericParam.method): Move ...
11474         (_MonoGenericContainer): ... here.  Add into union with klass field.
11475         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11476         Update to changes.
11477
11478 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11479
11480         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11481         the wrapper type enum and reduce relocations.
11482
11483 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11484
11485         * reflection.c (inflate_mono_method): Reuse method instantiation
11486         from the generic method, if available.
11487
11488 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11489
11490         * marshal.c (emit_marshal_variant): Fix conv_arg
11491         type in last commit, based on whether parameter is byref.
11492         
11493 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11494
11495         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11496         marshalling.
11497         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11498         MONO_TYPE_OBJECT back for VARIANT support.
11499
11500 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11501
11502         * marshal.c, marshal.h, icall-def.h: Implement 
11503         Marshal.ReAllocCoTaskMem.
11504
11505 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11506
11507         * marshal.c: memory retention fixes: use the proper
11508         image cache for runtime_invoke method lookups.
11509
11510 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11511
11512         * mempool.c: added code to help debug mempool allocations.
11513
11514 2007-01-11  Dick Porter  <dick@ximian.com>
11515
11516         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11517         support (experimenting with faking it with IP_MTU_DISCOVER for
11518         systems that don't have IP_DONTFRAGMENT.)
11519         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11520         icall.
11521
11522         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11523
11524         * socket-io.h: Add new fields to MonoSocketAsyncResult
11525         corresponding to the new ones in Socket.cs.
11526
11527 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11528
11529         Fix IronPython regression mentioned in #80249
11530         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11531         'cached_context' field, since it may have been initialized as a
11532         side-effect of metadata parsing.
11533
11534         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11535         (_MonoGenericClass.cached_class): Move here and rename from lone
11536         remaining field of ...
11537         (_MonoInflatedGenericClass): ... this.  Remove.
11538         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11539         to changes.
11540
11541         Fix mcs/tests/test-128.cs regression.
11542         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11543         2007-01-10 change below.
11544         [MONO_TYPE_OBJECT]: Recurse into array case.
11545
11546 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11547
11548         * class-internals.h (mono_get_inflated_generic_class): Remove.
11549         * class.c (mono_get_inflated_generic_class): Remove.
11550         (mono_generic_class_get_class): Rename from
11551         mono_class_create_generic.
11552         (mono_class_from_mono_type) [GENERICINST]: Use it.
11553         * reflection.c, metadata.c: Update to changes.  Use
11554         'mono_class_from_mono_type'.
11555
11556 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11557
11558         * reflection.c: use passed type when encoding an array element
11559         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11560
11561 2007-01-09  Robert Jordan  <robertj@gmx.net>
11562
11563         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11564         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11565         Fixes bug #80392.
11566
11567 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11568
11569         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11570
11571         * object.c (set_value): Avoid aliasing between type->data.klass
11572         and type->data.generic_class.
11573
11574         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11575
11576 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11577
11578         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11579         between type->data.klass and type->data.generic_class.
11580
11581 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11582
11583         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11584         value in out parameters.
11585
11586 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11587
11588         Simplify invariant for MonoGenericClass::klass field.
11589         * class.c (mono_class_create_generic): Verify 'klass' is null.
11590         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11591         initialize 'klass' field.
11592
11593 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11594
11595         Ongoing work to avoid redundant data and simplify invariants.
11596         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11597         'generic_class', and change type to a GenericInst.
11598         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11599         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11600
11601 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11602
11603         * class.c : skip io-layer under PLATFORM_WIN32.
11604
11605 2007-01-03  Tor Lillqvist  <tml@novell.com>
11606
11607         Fix #80305: In a bundled executable, look in the bundled exe
11608         assembly to determine the runtime version. Add the possibility to
11609         bundle also the machine.config file.
11610         
11611         * assembly.c (mono_assembly_open_from_bundle): Make
11612         non-static. Allow being called even if we have no bundled
11613         assemblies, and return NULL right away in that case.
11614
11615         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11616         here.
11617
11618         * domain.c (app_config_parse): Take an assembly exe file name as
11619         parameter instead of a config file name. Check for a bundled
11620         config file for that assembly by calling
11621         mono_config_string_for_assembly_file() (see below) before looking
11622         for one in the file system.
11623         (get_runtimes_from_exe): Corrsponding change to call of
11624         app_config_parse().
11625         (get_runtimes_from_exe): Check for bundled assembly exe file first
11626         by calling mono_assembly_open_from_bundle(). If no bundled
11627         assembly exe file is found, call mono_image_open() as before to
11628         look it up in the file system.
11629
11630         * mono-config.c: Add variable bundled_machinec_onfig.
11631         (mono_config_string_for_assembly_file): New function.
11632         (mono_config_for_assembly): Move code snippet that looks for a
11633         bundled assembly .config file into the above new function. Call
11634         it.
11635         (mono_register_machine_config, mono_get_machine_config): New
11636         functions to set and retrieve
11637
11638         * assembly.h: Declare mono_register_machine_config().
11639
11640         * mono-config.h: Declare mono_get_machine_config() and
11641         mono_config_string_for_assembly_file().
11642
11643         * icall.c: No declaration of environ necessary on Win32. It is
11644         declared (as a macro expanding to a function call) in stdlib.h.
11645         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11646         New internal mono function. Returns the value of
11647         mono_get_machine_config() as a Mono string.
11648
11649         * icall-def.h: Add get_bundled_machine_config().
11650
11651 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11652
11653         Remove redundant field
11654         * class-internals.h (_MonoGenericContext.container): Remove field.
11655         * loader.c (mono_method_get_signature_full): Don't parse a
11656         "container" for a signature parse when the signature is inflated
11657         immediately.
11658         (method_from_methodspec): Likewise, for a generic_inst.
11659         * class.c, metadata.c, reflection.c: Update to changes.
11660
11661 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11662
11663         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11664         'cached_context', and change semantics -- it starts off NULL, and
11665         is initialized on demand.
11666         * class.c (mono_generic_class_get_context): New accessor to
11667         replace 'context' field accesses.
11668         (mono_class_get_context): New helper.
11669         (*): Update to changes.
11670         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11671
11672 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11673
11674         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11675         before the memcpy.   Fixes Marshal2 regression.
11676
11677 2007-01-02  Jb Evain  <jbevain@gmail.com>
11678
11679         * blob.h: add a MONO_TYPE_ENUM definition
11680         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11681         fix the encoding of arrays of enums in custom attributes.
11682
11683         Fixes #79666.
11684
11685 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11686
11687         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11688         string is null terminated, but only cut the string short if it
11689         overflows the buffer.   
11690         
11691         (mono_string_to_byvalstr): Also fix this routine.   The code here
11692         was not properly terminating a string (it was only terminated
11693         because of the previous catch-all memset). 
11694
11695         I left the memset, because I do not know if applications expect
11696         the runtime to clear this region. 
11697
11698         Fixes #79944.
11699
11700         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11701         Clear the error before returning to unmanaged code to prevent the
11702         runtime from being confused later on (fixes  80420).
11703         (ves_icall_type_from_name): Always call mono_loader_clear_error
11704         after parsing a type that could have failed.
11705         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11706
11707         * loader.c (mono_loader_clear_error): Fix indentation.
11708
11709 2006-12-28  Martin Baulig  <martin@ximian.com>
11710
11711         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11712
11713 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11714
11715         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11716         getting a token for an EnumBuilder.
11717
11718 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11719
11720         * reflection.c: be more careful in case resource generation
11721         fails to create the data array.
11722
11723 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11724
11725         * sgen-gc.c: write barrier for clone and fix unregister handles.
11726
11727 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11728
11729         * reflection.c: some fixes needed in the generics code for the moving GC.
11730
11731 2006-12-22  Robert Jordan  <robertj@gmx.net>
11732
11733         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
11734         account. Fixes bug #80299.
11735
11736 2006-12-21  Raja R Harinath  <rharinath@novell.com>
11737
11738         Fix WaitHandle usage in delegates.
11739         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
11740         * object.c (mono_wait_handle_new): Use the property set method to
11741         initialize the handle.
11742         (mono_wait_handle_get_handle): New.
11743         * threadpool.c (mono_async_invoke): Use it.
11744         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
11745         Likewise.
11746         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
11747
11748 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
11749
11750         * marshal.c (emit_marshal): Call emit_marshal_variant and
11751         emit_marshal_com_interface when applicable.
11752         (emit_marshal_variant, emit_marshal_com_interface): Add
11753         methods for this case and remove if's from emit_marshal_object.
11754         
11755 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
11756
11757         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
11758
11759 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
11760
11761         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
11762         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
11763         and GlobalFree on Windows. Remove FIXME.
11764
11765 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11766
11767         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
11768         implementation for managed objects.
11769
11770 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11771
11772         * object.c: implemented code to be used for checking
11773         that no reference field overlaps with non-references.
11774
11775 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11776
11777         * threadpool.c: fix queue code to be compatible with the
11778         moving GC.
11779
11780 2006-12-18  Miguel de Icaza  <miguel@novell.com>
11781
11782         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
11783         in structures by throwing ArgumentNullException.
11784
11785         (emit_marshal_safehandle): Also when they are null parameters.
11786
11787         (emit_marshal_safehandle): Add support for ref
11788         SafeHandles parameters
11789
11790 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11791
11792         * profiler.c: updated to use the mono-dl API instead of
11793         gmodule.
11794
11795 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11796
11797         * profiler.c: updated to use the mono-dl dynamic loading
11798         API instead of gmodule.
11799
11800 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11801
11802         * profiler.c: use readlink, older versions of glib don't have
11803         g_file_read_link ().
11804
11805 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11806
11807         * profiler.c: try to detect the path to mono if libc fails to provide
11808         a useful name (bug #80286).
11809
11810 2006-12-16  Raja R Harinath  <rharinath@novell.com>
11811
11812         Fix #80242
11813         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
11814         instance, use the generic type definition instead.
11815         (ves_icall_Type_GetNestedTypes): Likewise.
11816         * class.c (mono_class_create_generic): Always set the
11817         nested_classes of a generic instance to NULL, even if the generic
11818         type definition has nested types.
11819
11820 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
11821
11822         * marshal.c (mono_string_from_bstr): Revert previous Windows change
11823         and fix on Linux.
11824         
11825 2006-12-15  Miguel de Icaza  <miguel@novell.com>
11826
11827         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
11828         my arguments were in the wrong order.   I also fixed the Windows
11829         version which seems to have had the same issue.
11830
11831         (mono_free_bstr): On Unix, this is g_free.
11832         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
11833         conversions (for the tests in corlib to pass).
11834
11835 2006-12-14  Miguel de Icaza  <miguel@novell.com>
11836
11837         * marshal.c (emit_ptr_to_object_conv): For now, ignore
11838         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
11839         exception if a ref SafeHandle in a struct has changed).
11840         
11841         (emit_struct_conv): Do not perform layout checks for classes
11842         derived from SafeHandle, as those are specially handled. 
11843
11844         (emit_object_to_ptr_conv): Add support for
11845         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
11846
11847         (emit_marshal_safehandle): Implement conversion of return values
11848         of safehandles (MARSHAL_ACTION_CONV_RESULT).
11849         
11850         * threads.c: WaitHandle now is compiled with two different handles
11851         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
11852         for 2.0.
11853         
11854         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
11855         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
11856         these routines to cope with both kinds of fields.
11857
11858 2006-12-12  Miguel de Icaza  <miguel@novell.com>
11859
11860         * metadata.c (mono_type_to_unmanaged): Handle the case where
11861         type->data.klass is a SafeHandle, and in that case, return the
11862         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
11863         MONO_MARSHAL_CONV_SAFEHANDLE. 
11864
11865 2006-12-11  Miguel de Icaza  <miguel@novell.com>
11866
11867         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
11868         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
11869         calling emit_marshal_object.
11870
11871         (emit_marshal_safehandle): Implement marshalling of
11872         SafeHandle parameters (no ref support yet).
11873
11874         (MarshalAction): Document the defines as I implement
11875         them for SafeHandle.
11876
11877         (emit_marshal_object): indentation police.
11878
11879         * class-internals.h: Define MonoSafeHandle.
11880         Add safehandle_class to MonoDefaults type.
11881
11882         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
11883         list of classes to check for fields. 
11884
11885         * domain.c (mono_init_internal): Add SafeHandle to the list of
11886         mono_defaults loaded.
11887
11888 2006-12-15  Raja R Harinath  <rharinath@novell.com>
11889
11890         Fix #80253
11891         * reflection.c (mono_reflection_bind_generic_parameters): If the
11892         generic type definition is a type builder, ensure that it is fully
11893         initialized before instantiating it.  Kill some dead code.
11894
11895 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11896
11897         * object.c: clear the loader_error () before loading
11898         more metadata stuff (bug #80258).
11899
11900 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
11901
11902         * icall.c, icall-defs.h: type modifiers icalls for
11903         parameters and properties.
11904
11905 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11906
11907         * object.c, icall.c: fixed warnings.
11908
11909 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11910
11911         * marshal.c: fixed a couple of leaks and coding style in a few places.
11912
11913 2006-12-08  Dick Porter  <dick@ximian.com>
11914
11915         * process.c: Cope with NULL ProcessStartInfo arguments on windows
11916         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
11917         80173.
11918
11919 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11920
11921         * process.c: ProcessStartInfo may have only filename set and
11922         arguments can be NULL.
11923
11924 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11925
11926         * icall.c: fix leak found by Robert Jordan.
11927
11928 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11929
11930         * marshal.c, marshal.h: generate managed method to access an element
11931         of a multi-dimensional array.
11932
11933 2006-11-30  Paolo Molaro (lupus@ximian.com)
11934
11935         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
11936
11937 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11938
11939         * icall.c: back out GetFields () fix until the serialization code is
11940         fixed to not depend on the incorrect behaviour.
11941
11942 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11943
11944         * profiler.c: provide defaults if none are set.
11945
11946 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11947
11948         * Makefile.am, attrdefs.h: new public header file with
11949         constants for attributes for use by embedders.
11950
11951 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11952
11953         * icall.c: GetFields () fix for bug #80064.
11954
11955 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
11956
11957         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
11958         removed long unused icalls.
11959
11960 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
11961   
11962         * marshal.c: 
11963                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
11964                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
11965                 can be generated without a delegate class.
11966                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
11967         
11968         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11969
11970 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11971
11972         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
11973         #80069.
11974
11975 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11976
11977         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
11978         icall-def.h: added icalls needed by System.GC.
11979
11980 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
11981
11982         * loader.c: ensure the class in catch clauses is handled
11983         correctly for generics methods (fixes bug#79980).
11984
11985 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11986
11987         * monitor.h, monitor.c: added mono_locks_dump () function
11988         to help debug deadlocks involving managed locks.
11989
11990 2006-11-13  Dick Porter  <dick@ximian.com>
11991
11992         * file-io.c (get_file_attributes): If the file is a symlink try
11993         and get the stat data for the target, but also add the
11994         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
11995         the specs for the windows symlink support, but will probably have
11996         to be reworked when I have test data from a vista machine.  Fixes
11997         bug 79887.
11998
11999 2006-11-13  Dick Porter  <dick@ximian.com>
12000
12001         * gc.c (mono_domain_finalize): 
12002         * marshal.c (mono_delegate_begin_invoke): 
12003         * threadpool.c (socket_io_init, mono_thread_pool_init)
12004         (mono_thread_pool_finish): 
12005         * monitor.c (mono_monitor_try_enter_internal): 
12006         * threads.c (mono_thread_resume, mono_thread_init)
12007         (mono_thread_suspend_all_other_threads)
12008         (mono_thread_execute_interruption): 
12009         * appdomain.c (mono_domain_unload): Check for NULL error returns
12010         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
12011         75733.
12012
12013 2006-11-11  Miguel de Icaza  <miguel@novell.com>
12014
12015         * process.c
12016         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
12017         Only close the handle if the value of the handle is not
12018         INVALID_HANDLE_VALUE.  This just makes the process a bit more
12019         robust.
12020
12021         Improvement for #75733, so that we do not run into this problem. 
12022
12023         
12024         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
12025         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
12026         internal variables.  Fixes #79462 
12027         
12028
12029 2006-11-09  Dick Porter  <dick@ximian.com>
12030
12031         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12032         Use poll() not select().  Fixes bug 79397.
12033
12034 2006-11-09  Raja R Harinath  <rharinath@novell.com>
12035
12036         Fix #79872
12037         * assembly.c (mono_assembly_load_from_full): Check that the given
12038         image has an assembly manifest.
12039
12040 2006-11-09  Ankit Jain  <jankit@novell.com>
12041
12042         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
12043         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
12044         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
12045
12046 2006-11-07  Dick Porter  <dick@ximian.com>
12047
12048         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12049         Put the old resolver behaviour back for pre-2.0 profiles.
12050
12051 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
12052
12053         * threadpool.c: precise GC and locking fixes.
12054
12055 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12056
12057         * class.c: don't load types that have an explicit unaligned
12058         managed reference. Provide better info in the TypeLoad exception.
12059         Part of the fix for bug #79744.
12060         * object.c: use the correct check for class type load issues.
12061
12062 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12063
12064         * class.c: enforce alignment of fields with managed references
12065         even when Pack=1 is forced by the user (bug #77788).
12066
12067 2006-11-03  Dick Porter  <dick@ximian.com>
12068
12069         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12070         If the address reverse lookup fails, return it as the hostname
12071         anyway.  Fixes bug 79721.
12072
12073 2006-11-03  Dick Porter  <dick@ximian.com>
12074
12075         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
12076         Fix build on Windows.
12077
12078 2006-11-02  Dick Porter  <dick@ximian.com>
12079
12080         * icall-def.h: 
12081         * object-internals.h: 
12082         * exception.c (mono_get_exception_thread_interrupted): 
12083         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
12084         Fixes bug 74525.
12085
12086         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
12087         Check for pending Thread.Interrupt.
12088
12089 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
12090         * loader.c: Fixed bug 79684.
12091
12092 2006-10-27  Dick Porter  <dick@ximian.com>
12093
12094         * file-io.c (get_file_attributes): Force symlinks to directories
12095         to be returned as a regular file.  Fixes bug 79733.
12096 2006-10-26  Dick Porter  <dick@ximian.com>
12097
12098         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
12099         CreateFile to open a directory then we need to set the
12100         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
12101
12102 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12103
12104         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
12105         friends.
12106
12107 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12108
12109         * sgengc.c: small cleanup of timer code.
12110
12111 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12112
12113         * sgen-gc.c: fix some warnings and start adding support for
12114         complete object removal on domain unload.
12115
12116 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
12117
12118         * assembly.c: build_assembly_name should not consider a version
12119         number without build or revision number invalid. Fixes bug #79715.
12120
12121 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
12122
12123         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
12124         call kernel32 function OutputDebugString directly.
12125         
12126         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
12127         
12128 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
12129
12130         * reflection.c: small cleanup, using a function to insert a MonoString
12131         in the string heap.
12132
12133 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
12134
12135         * reflection.c: moving GC fixes.
12136
12137 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12138
12139         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
12140         all the objects with finalizers belonging to an unloading appdomain.
12141
12142 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12143
12144         * sgen-gc.c: added ability to allocate even when the nursery is fully
12145         pinned and fixed a couple of bugs.
12146
12147 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12148
12149         * threads.h: Revert the last change for now.
12150
12151         * threads.h (mono_thread_get_pending_exception): Rename this to
12152         mono_thread_get_undeniable_exception ().
12153
12154 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
12155
12156         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
12157         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
12158         when fname does not refer to valid assembly. This result in a more
12159         meaningful error message.
12160         * exception.c: added mono_get_exception_bad_image_format2 which 
12161         constructs a BadImageFormatException using the ctor taking a custom
12162         message and the file name. Passing in a NULL msg results in a default
12163         message.
12164         * exception.h: define mono_get_exception_bad_image_format2 function.
12165         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
12166         when file name pointed to an invalid IL image. Use 
12167         mono_get_exception_file_not_found2 to construct FileNotFoundException,
12168         as this results in a more meaningful error message.
12169
12170 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12171
12172         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
12173         #79465.
12174
12175 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12176
12177         * metadata.c (mono_type_size): Change the align parameter to guint32 for
12178         consistency with the other _size functions.
12179         (mono_type_stack_size): Ditto.
12180
12181         * class.c object.c icall.c: Fix warnings caused by the above change.
12182
12183         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
12184
12185         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
12186
12187         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
12188
12189 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
12190
12191         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
12192         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
12193         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
12194         threadpool.h, threads-types.h: mark more internal functions.
12195
12196 2006-10-11  Dick Porter  <dick@ximian.com>
12197
12198         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12199         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
12200         reproduce the bug even before applying the fix.)
12201
12202 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
12203
12204         * reflection.c: allow retrieving attributes for arguments in generic
12205         methods (bug #79241).
12206
12207 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
12208
12209         * debug-mono-symfile.c: properly check fopen () result (found by
12210         coverity).
12211
12212 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
12213
12214         * reflection.c: make error message clearer and fixed two
12215         issuelets found by Coverity.
12216
12217 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
12218
12219         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
12220
12221 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12222
12223         * object-internals.h, gc-internal.h, profiler-private.h:
12224         mark internal functions.
12225
12226 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12227
12228         * reflection.c: put data in the text section.
12229         * icall.c: recognize more types in type_from_typename ().
12230         * process.c, marshal.c: added some GC FIXMEs.
12231
12232 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12233
12234         * loader.c: check for NULL before initializing.
12235
12236 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
12237
12238         * gc.c (finalizer_thread): Use a non-alertable wait here.
12239
12240         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
12241         until the correct solution is found.
12242
12243 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12244
12245         * reflection.c (mono_module_get_object): Avoid an assert when operating on
12246         modules with no metadata. Fixes #79596.
12247
12248         * image.c (load_metadata_ptrs): Put back the error message when
12249         the #- heap is encountered since the support is not complete yet.
12250
12251 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12252
12253         * gc.c: do not allow the user to SuppressFinalize () a
12254         delegate because it would leak the trampoline if present.
12255
12256 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12257
12258         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
12259         PropertyPtr table.
12260
12261 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
12264
12265         * metadata.c (mono_metadata_get_param_attrs): Ditto.
12266
12267         * row-indexes.h: Add definitions for *Ptr tables.
12268
12269         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
12270
12271         * metadata.c (mono_metadata_translate_token_index): New helper function to
12272         translate table indexes used in uncompressed metadata.
12273         (mono_metadata_decode_table_row): Ditto.
12274         (mono_metadata_decode_table_row_col): Ditto.
12275
12276         * metadata.c: Add table schema for *Ptr tables.
12277
12278         * class.c loader.c: Use the new helper function to access the affected metadata
12279         tables.
12280         
12281         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
12282         #38532.
12283         
12284 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
12285
12286         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
12287         sequences which can be unbounded in size. Fixes #79583.
12288
12289 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
12292         static initialization.
12293
12294         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
12295
12296         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
12297
12298         * domain.c (mono_domain_free): Free up type_init_exception_hash.
12299
12300         * object.c (mono_runtime_class_init): Implement correct semantics when a static
12301         ctor fails, i.e. throw the same exception on subsequent accesses.
12302         
12303 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
12304
12305         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
12306         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
12307         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
12308         Handle marshalling of interfaces and VARIANTs contained in structs.
12309         
12310         Code is contributed under MIT/X11 license.
12311         
12312 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12313
12314         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
12315         
12316         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
12317         mempool.
12318
12319 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12320
12321         * console-io.c: ignore previous SIGINT handler.
12322
12323 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12324
12325         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
12326         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
12327         #79460, #79461, #79485.
12328
12329         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
12330
12331         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
12332         #79217.
12333
12334 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12335
12336         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
12337         could be generated from it.
12338
12339 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
12340
12341         * rand.c: fix read loop to correctly handle EINTR.
12342
12343 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12344
12345         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
12346         internal calls are defined to keep methods closer to the declaring
12347         type and allow a significant reduction in runtime relocations and
12348         memory usage.
12349
12350 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
12351
12352         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
12353         exception message to have FileNotFoundException use the default
12354         assembly load error message. Fixes bug #79426.
12355         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
12356
12357 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12358
12359         * threadpool.c: (start_thread_or_queue) use the root domain when
12360         creating the thread instead of the async object one.
12361
12362 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
12363
12364         * class.c, object.c, class-internals.h, reflection.c:
12365         for arrays, store element_size inside MonoClass (speedup
12366         for array object creation).
12367
12368 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
12369
12370         * icall.c: fixed CodeBase to use the file name and not the module
12371         name (bug #79365).
12372
12373 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12374
12375         * mono-debug.c, mono-debug.h: export find_method as
12376         mono_debug_find_method ().
12377
12378 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12379
12380         * debug-helpers.c, class-internals.h: added a few functions useful
12381         when debugging under gdb.
12382
12383 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12384
12385         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
12386         characters that need special handling.
12387
12388 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12389
12390         * mono-config.c: make the os/cpu specification more flexible,
12391         allowing lists and negation.
12392
12393 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
12394
12395         * marshal.c: COM Interop fixes. Handle case where method->klass.
12396         is interface. Handle BSTR/MonoString when null. Use CDECL as 
12397         calling convention on non-windows platforms. This is for
12398         compatibility with XPCOM and MainWin COM.
12399         
12400         Code is contributed under MIT/X11 license.
12401         
12402
12403 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
12406         correctly. Fixes #79217.
12407
12408         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
12409
12410 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
12411
12412         * mono-config.c: allow both an os and cpu attribute for dllmap
12413         and dllentry elemnets to enable a single config file to be used
12414         for multiple architectures.
12415
12416 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12417
12418         * loader.c: MonoLoaderError was cleared too soon on load failure.
12419         Fixes bug #79424.
12420
12421 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12422
12423         * icall.c: use the defining class vtable when accessing a
12424         static field, not a pobblibly derived class.
12425
12426 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12427
12428         * icall.c string-icalls.c: Remove references to unicode.h.
12429
12430         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12431
12432         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12433
12434         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12435         indicating the image where custom marshaller types should be looked up.
12436         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12437         custom marshallers, instead of corlib. Fixes #79425.
12438
12439 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12442
12443 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12444
12445         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12446         Implement Environment.ProcessorCount.
12447         
12448         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12449         Implement Environment.ProcessorCount.
12450         
12451         * icall.c: 
12452         Add Environment.ProcessorCount icall.
12453         
12454         Patch by Jason McFall.
12455
12456 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12457
12458         * assembly.c: don't append .exe/.dll when the filename already contains
12459         one of those extensions.
12460
12461 2006-09-12  Martin Baulig  <martin@ximian.com>
12462
12463         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12464         to array interfaces.
12465
12466 2006-09-11  Martin Baulig  <martin@ximian.com>
12467
12468         * reflection.c (mono_image_build_metadata): Create the
12469         MethodImpl's after emitting all types and methods, so we don't
12470         need another fixup pass for them.
12471
12472 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12473
12474         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12475         change.
12476
12477 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12478
12479         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12480         unload.
12481
12482 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12485         args is not set. Fixes #78926.
12486
12487 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12488
12489         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12490
12491         * image.c (load_class_names): Move this to class.c, and rename it to 
12492         'mono_image_init_name_cache'.
12493         (load_modules): Fix a warning.
12494
12495         * class.c icall.c image.c: Initialize image->name_cache lazily.
12496
12497         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12498         on its name using information in the AOT file.
12499
12500         * class.c (mono_class_from_name): Use the new hook function.
12501
12502 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12503
12504         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12505         correctly.
12506
12507         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12508         Fixes #79289.
12509         
12510 2006-09-06  Martin Baulig  <martin@ximian.com>
12511
12512         * icall.c (mono_lookup_internal_call): Small fix.
12513
12514 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12515
12516         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12517         double g_free.
12518
12519 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12520
12521         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12522         when --debug is specified.
12523
12524 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12525
12526         * class.c (setup_generic_array_ifaces): Fix a warning.
12527
12528 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12529
12530         * Temporarily remove the patch to assemly.c that checks the
12531         assembly versions as it breaks our gacutil.
12532
12533 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12534
12535         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12536
12537         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12538         a net 1.0 runtime.
12539
12540         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12541         created using the default ctor. Fixes #79152.
12542         (mono_string_builder_to_utf16): Ditto.
12543
12544 2006-09-01  Martin Baulig  <martin@ximian.com>
12545
12546         Fix handling of the generic array interfaces.
12547
12548         * class-internals.h
12549         (MonoDefaults): Removed `generic_array_class' and added
12550         `generic_ilist' class.
12551
12552         * class.c
12553         (mono_bounded_array_class_get): Add the new generic array interfaces.
12554         (setup_generic_array_ifaces): New static method; create vtable
12555         entries for each method in the generic array interfaces.
12556
12557         * metadata.c
12558         (select_container): Allow "parent-less" generic methods.
12559
12560         * marshal.c
12561         (mono_marshal_get_generic_array_helper): New public method.
12562
12563         * icall.c
12564         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12565         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12566         moved the interncall into System.Array.
12567
12568 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12569
12570         A few more cases of avoiding work on types with ->byref set.
12571         Has the real fix for #79238
12572         * icall.c (is_generic_parameter): New helper.
12573         (ves_icall_Type_GetGenericParameterPosition): Use it.
12574         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12575         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12576         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12577         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12578         reference types.
12579         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12580         reference types.
12581         (ves_icall_Type_get_IsGenericInstance): Likewise.
12582         (ves_icall_Type_get_IsGenericType): Likewise.
12583
12584 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12587         class if possible.
12588
12589         * mempool.h (mono_mempool_get_allocated): New helper function.
12590
12591         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12592         change.
12593
12594         * mempool.c: Fix warnings and the calculation of stats.
12595
12596         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12597
12598         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12599
12600         * loader.c (mono_get_method_from_token): Update method_count stat.
12601
12602         * class-internals.h (MonoStats): Add some stats.
12603
12604 2006-08-31 Robert Jordan  <robertj@gmx.net>
12605
12606         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12607         with managed variants.
12608         All code is contributed under the MIT/X11 license.
12609         
12610 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12613         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12614
12615         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12616
12617         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12618         with cycles in classes.
12619
12620         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12621
12622         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12623         missing a [MarshalAs] directive. Fixes #79203.
12624
12625         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12626         klass->marshal_info. Fixes #79217.
12627
12628 2006-08-30  Martin Baulig  <martin@ximian.com>
12629
12630         Committing a patch from Joachim Ante <joe@otee.dk>:
12631         Add support for binary data symbol stores.
12632
12633         * debug-mono-symfile.c
12634         (mono_debug_open_mono_symbol_file): Renamed into
12635         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12636         arguments.
12637
12638         * mono-debug.c
12639         (mono_debug_open_image): Added `raw_contents' and `size' args.
12640         (mono_debug_init_2_memory): New public function.
12641
12642 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12643
12644         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12645
12646 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12647
12648         * appdomain.c: implement support for ShadowCopyFiles.
12649
12650 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12651
12652         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12653         when value is NULL (and should remove CID #51).
12654
12655 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12656
12657         * image.c: moved 2 functions to ../utils.
12658
12659 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12660
12661         * gc.c: cope with the target object of a GC handle being NULL
12662         (bug #78877).
12663
12664 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12665
12666         * class.c: recursively check parent's explicit implementations
12667         of interface methods (fixes bug #79125).
12668
12669 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12670
12671         * filewatcher.c: Avoid warnings when building, do not redefine
12672         constants that are defined.
12673
12674         Remove warnings.
12675
12676 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12677
12678         * image.c: don't fail when the link points to an absolute path.
12679
12680 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12681
12682         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12683         Fix CID #3.
12684
12685 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12686
12687         * image.c (full_path): A new method used to obtain the actual path
12688         of an assembly even in the presence of symbolic links.  
12689
12690         This is necessary for the case where we are running a binary that
12691         has been GACed, but we are using the "published" path name
12692         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12693         file in the GAC.
12694
12695         This was the source of the failure for the `xsp' command with the
12696         recent AppDomain changes, as far as the runtime was concerned,
12697         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12698         $prefix/mono/gac/blah/version/blah.exe.
12699
12700         (do_mono_image_open): use full path
12701
12702 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12703
12704         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12705
12706 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12707
12708         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12709         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12710
12711 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12714         small structures. Fixes #78990.
12715
12716 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12717
12718         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12719
12720         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12721
12722 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12723
12724         * appdomain.c:
12725         * marshal.c: don't load all the assemblies from a domain into newly
12726         created ones. The new domains might have different rules and load
12727         assemblies from different locations. Fixes bug #76757.
12728
12729         Patch by Lluis. Conflicts resolved by Brian Crowell.
12730
12731 2006-08-16  Alp Toker  <alp@atoker.com>
12732
12733         * socket-io.c: First half of the fix for #79084.
12734         Set sa_size to the length of the content, not that of the struct.
12735         Don't add NULL suffix to the content, this should be done in
12736         managed code if needed.
12737
12738 2006-08-14  Raja R Harinath  <rharinath@novell.com>
12739
12740         Fix part of #79012
12741         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
12742         mono_metadata_parse_type returns NULL.
12743
12744 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
12745
12746         * normalization-tables.h : new file for string normalization data.
12747         * locales.c, locales.h, icall.c :
12748           added load_normalization_resource() for string normalization,
12749           and icall as well.
12750         * Makefile.am : added normalization-tables.h to the sources.
12751
12752 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
12753
12754         * marshal.c: Add more helper functions to reduce code duplication and use them
12755         everywhere.
12756
12757 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
12758
12759         * marshal.c: Fix non-x86 stdcall warnings.
12760         
12761         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
12762         them everywhere.
12763
12764 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
12765
12766         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
12767         type check on multi-dimensional arrays. Fixes #79000.
12768
12769 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12770
12771         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
12772         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
12773         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
12774         * class-internals.h: add is_com_object to class structure.
12775         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
12776         null checks to COM object marshalling. Fix .ctor call on RCW.
12777         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
12778         
12779         All code is contributed under the MIT/X11 license.
12780
12781 2006-08-09  Dick Porter  <dick@ximian.com>
12782
12783         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
12784         racing mono_monitor_allocator_lock() somewhere, so don't delete
12785         the critical section for now.  Found by running and exiting
12786         monodevelop.
12787
12788 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
12789
12790         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
12791         (ves_icall_System_ComObject_FindInterface): Ditto.
12792         (ves_icall_System_ComObject_CacheInterface): Ditto.
12793
12794         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
12795         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
12796
12797 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12798
12799         * threadpool.c: treat pipes from process asynchronous reads as sockets
12800         when reading from them, so we get select/poll or epoll to wait for
12801         data.
12802
12803 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
12804
12805         * loader.c: Fix a typo (CID #233) in the null check.
12806
12807 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
12808
12809         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
12810         Hopefully fixes #78949.
12811         
12812         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
12813         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
12814         bytes. Fixes #78972.
12815
12816 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12817
12818         * filewatcher.c: we need to set errno here.
12819
12820 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12821
12822         * filewatcher.c: let Win32Exception get the error value.
12823
12824 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12825
12826         * filewatcher.c: translate errno into win32 errors for Win32Exception
12827         to know what happened.
12828
12829 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12830
12831         * threadpool.c: Fix more warnings.
12832
12833         * assembly.c (search_loaded): Fix warnings.
12834
12835         * threadpool.c (mono_thread_pool_finish): Fix warnings.
12836         (mono_async_invoke): Ditto.
12837
12838 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
12839
12840         * object.c (mono_remote_class_vtable): Need to create proxy vtable
12841         entries for __ComObject type in addition to ComImport types.
12842         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
12843         about hash table.
12844         
12845         All code is contributed under the MIT/X11 license.
12846
12847 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12848
12849         * image.c: avoid tentative loading of modulerefs that contain
12850         no metadata (P/Invoke library names).
12851
12852 2006-07-28  Dick Porter  <dick@ximian.com>
12853
12854         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
12855         mono_loader_lock() somewhere, so don't delete the critical section
12856         for now.  Found by running and exiting monodevelop.
12857
12858 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12859
12860         * filewatcher.c: define the inotify syscalls when we're building on
12861         linux and have sys/syscall.h. The build system might not have support
12862         for inotify but the target system might have it.
12863
12864 2006-07-26  Miguel de Icaza  <miguel@novell.com>
12865
12866         * domain.c: Documentation updates.
12867
12868         * loader.c (mono_free_method): Do not release the method
12869         information if we are being profiled, as profilers will use this
12870         information at shut down to present some data to the user.
12871
12872         This is needed so that the profiler does not crash, as the
12873         profiler tends to keep MonoMethods around, and they might become
12874         invalid if we free these.
12875
12876         (mono_get_method_constrained): Return the original CIL stream
12877         method as well, so verification can be performed against it.
12878
12879 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12880
12881         * filewatcher.[ch]: support for inotify file system watcher.
12882         * icall.c: add new internal calls for the inotify file system watcher.
12883
12884 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12885
12886         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
12887         #78888.
12888
12889 2006-07-20  Dick Porter  <dick@ximian.com>
12890
12891         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
12892         warning.
12893
12894 2006-07-20  Dick Porter  <dick@ximian.com>
12895
12896         * threads.c (start_wrapper): Do the thread cleanup while we still
12897         hold a reference to its object.  Fixes bug 78123.
12898
12899 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
12900
12901         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
12902         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
12903           "managed-to-managed".
12904         * icall.c: Redirect string constructors that take sbyte* to
12905           ves_icall_System_String_ctor_RedirectToCreateString.
12906         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
12907           to CreateString () methods with matching signature.
12908         * reflection.c: Use original security informations for
12909           MONO_WRAPPER_MANAGED_TO_MANAGED.
12910         * security-manager.c: Use original security informations for
12911           MONO_WRAPPER_MANAGED_TO_MANAGED.
12912         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
12913           that is a placeholder and only its address should be used.
12914         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
12915           that is a placeholder and only its address should be used.
12916
12917 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12918
12919         Begin implementing COM Interop.
12920         * appdomain.c: Increment corlib version.
12921         * class.c: Set ComImport classes' parent to __ComObject.
12922         * loader.c: Mark cominterop methods as such.
12923         * domain.c: Add __ComObject class to MonoDefaults structure.
12924         * image.c: Add 2 hashtables to the image for COM Interop related methods
12925         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
12926         using the mempool allocator
12927         
12928         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
12929         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
12930         declaration for mono_metadata_type_dup_mp.
12931         
12932         * debug-helpers.c: Added strings for two additional wrapper types
12933         * object.c: Create proxy objects for ComImport classes
12934         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
12935         and added __ComObject class to MonoDefaults structure.
12936         
12937         * object-internals.h: Finish MonoRealProxy definition, and add definition of
12938         MonoComInteropProxy and MonoComObject.
12939         
12940         * marshal.c: Added support for COM Interop
12941         (signature_cominterop): Converts managed signature to corresponding
12942         unmanaged COM signature.
12943         (cominterop_get_function_pointer): gets unmanaged function pointer via
12944         COM object vtable
12945         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
12946         (cominterop_get_method_interface): returns interface type that method is defined on
12947         (mono_mb_emit_cominterop_call): emits native call to function pointer
12948         gotten from vtable
12949         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
12950         that matches signature of unmanaged function.
12951         (cominterop_get_native_wrapper): wrapper around adjusted method call.
12952         (cominterop_get_invoke): forwards call from proxy to __ComObject
12953         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
12954         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
12955         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
12956         
12957         * marshal.h: Added Marshal icall declarations.
12958         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
12959         so we can access them in finalizer
12960         
12961 2006-07-14  Dick Porter  <dick@ximian.com>
12962
12963         * object.c (mono_type_initialization_cleanup): Fix a race
12964         condition by temporarily commenting out the critical section
12965         deletion.
12966
12967 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
12968
12969         * reflection.c (create_custom_attr): Fix some warnings.
12970         (create_custom_attr_data): Ditto.
12971         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
12972         types. Fixes #78855.
12973
12974 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
12975
12976         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
12977
12978         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
12979
12980 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12981
12982         * reflection.c (resolve_object): Add support for DynamicMethod.
12983
12984         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
12985         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
12986
12987 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
12988
12989         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
12990         don't leak GPtrArray's pdata has we have no use (nor free) for it.
12991
12992 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
12993
12994         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
12995         Fixes #77888.
12996
12997 2006-06-30  Raja R Harinath  <rharinath@novell.com>
12998
12999         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
13000         slightly: remove a shadow local variable.
13001
13002 2006-06-29  Raja R Harinath  <rharinath@novell.com>
13003
13004         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
13005         definition that introduces the virtual function slot.
13006         Also fix Coverity #105.
13007
13008 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
13009
13010         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
13011         for dynamic assemblies. Fixes #78724.
13012
13013 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
13014
13015         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
13016         Fixes #78722.
13017
13018 2006-06-21  Martin Baulig  <martin@ximian.com>
13019
13020         * reflection.c
13021         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
13022         fixes #76484.
13023
13024 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
13025
13026         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
13027
13028 2006-06-20  Raja R Harinath  <rharinath@novell.com>
13029
13030         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
13031         nor TYPEREFs.
13032         * class.c (mono_class_create_from_typespec): Add 'context' argument.
13033         Inflate result if necessary.
13034         (mono_class_get_full): Remove old version.  Rename from
13035         'mono_class_get' and add 'context' argument.  Pass it to
13036         ..._create_from_typespec.
13037         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
13038         (mono_ldtoken): Revert change below.
13039
13040 2006-06-20  Martin Baulig  <martin@ximian.com>
13041
13042         * class.c (mono_ldtoken): Don't pass the generic context to
13043         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
13044
13045 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
13046
13047         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
13048         and later freeing it. Fixes #78638.
13049
13050 2006-06-15  Miguel de Icaza  <miguel@novell.com>
13051
13052         * icall.c (mono_class_get_throw): Revert over-zealous error
13053         throwing, the caller for mono_class_get_throw will cope with
13054         errors when classes are not properly initialized already.
13055
13056         The code still copes with loader exceptions though.
13057
13058         Fixes the regression in reftype1 and reftype3 from the CAS tests.
13059         
13060 2006-06-14  Miguel de Icaza  <miguel@novell.com>
13061
13062         Fixes the `make run1' version of RuntimeAbort (to be commited,
13063         source is in Bugzilla).
13064         
13065         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
13066         FALSE on class loading failure instead of returning true.
13067
13068         * class.c (mono_class_create_from_typedef): It is possible for
13069         mono_metadata_interfaces_from_typedef_full to fail if a class is
13070         not found, cope with this.
13071         
13072
13073 2006-06-14  Dick Porter  <dick@ximian.com>
13074
13075         * socket-io.c: 
13076         * process.c: Fix a bunch of signed/unsigned warnings from gcc
13077         4.1.1
13078
13079 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
13080
13081         * culture-info-table.h : oops, forgot to make it nsync with r61548.
13082
13083 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13084
13085         * icall.c: Another fix for building mono in Visual Studio.
13086
13087 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13088
13089         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
13090         
13091 2006-06-09  Martin Baulig  <martin@ximian.com>
13092
13093         * debug-mono-symfile.c: Put this back and really fix it this
13094         time. Sorry for all the trouble.
13095
13096 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13097
13098         * icall.c (mono_class_get_throw): Fix a warning.
13099         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
13100         ReflectionTypeLoadException if needed. Fixes #78606.
13101
13102         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
13103         (mono_class_init): Ditto.
13104
13105         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
13106         ref_only exceptions.
13107         (mono_loader_clear_error): Make this work even if there is no error.
13108
13109 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
13110
13111         * object-internals.h marshal.c marshal.h icall.c: Implement method 
13112         Marshal.GetComSlotForMethodInfo using internal call.
13113
13114 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
13115
13116         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
13117         a function for signalling it.
13118
13119         * class.c (mono_class_from_typeref): Use the new kind of loader error when
13120         a referenced assembly is not found.
13121
13122         * loader.c (mono_loader_error_prepare_exception): Add support for 
13123         LOADER_ERROR_ASSEMBLY. Fix formatting.
13124
13125 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
13126
13127         * domain.c appdomain.c class-internals.h marshal.c: Add support 
13128         for VARIANT marshalling on windows and increment corlib version
13129         since Variant struct was added.
13130
13131 2006-06-03  Miguel de Icaza  <miguel@novell.com>
13132
13133         * debug-mono-symfile.c: Revert Martin's previous patch which broke
13134         stack trace line information:
13135
13136         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
13137         (Martin) when looking up B which is between A and C, return A not C.
13138
13139         Bug is #78573.
13140
13141         Thanks to Alexander Olk for tracking this down.
13142
13143 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13144
13145         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
13146         
13147         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
13148         avoid clobbering its value.
13149         (mono_string_to_lpstr): Fix a warning on windows.
13150
13151 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13152
13153         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
13154
13155         * reflection.c loader.c: Removed references to 'dummy' flag.
13156
13157         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
13158
13159         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
13160         it gets GC tracking.
13161
13162         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
13163         GC tracking.
13164         
13165         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
13166
13167         * marshal.c threadpool.c: Update callers of mono_async_result_new.
13168
13169         * appdomain.c: Bump corlib version.
13170
13171 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13172
13173         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13174         CEE_STIND_REF when working with object references.
13175
13176 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13177
13178         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
13179         Fixes #78539.
13180
13181 2006-05-30  Miguel de Icaza  <miguel@novell.com>
13182
13183         * loader.c (method_from_memberref): Fix argument value for
13184         mono_loader_set_error_method_load (I was passing the MonoClass
13185         instead of the class name char *).
13186
13187 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13188
13189         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13190         CEE_STIND_REF when working with object references.
13191
13192 2006-05-30  Martin Baulig  <martin@ximian.com>
13193
13194         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
13195         mono_method_full_name() change and replace the ':' with a '.'
13196         here.
13197
13198 2006-05-30  Martin Baulig  <martin@ximian.com>
13199
13200         * debug-mono-symfile.c
13201         (mono_debug_symfile_lookup_location): Fix the algorithm:
13202         when looking up B which is between A and C, return A not C.
13203
13204 2006-05-29  Martin Baulig  <martin@ximian.com>
13205
13206         * mono-debug.h
13207         (MonoDebugMethodInfo): Make the typedef public.
13208         (MonoDebugSourceLocation): New public struct.
13209
13210         * mono-debug.c
13211         (mono_debug_source_location_from_address): Removed.
13212         (mono_debug_source_location_from_il_offset): Removed.
13213         (mono_debug_il_offset_from_address): Removed.
13214         (mono_debug_address_from_il_offset): Removed.
13215         (mono_debug_lookup_method): New public function.
13216         (mono_debug_lookup_source_location): New public function; replaces
13217         the old mono_debug_source_location_from_*() functions; see the
13218         inline documentation.
13219         (mono_debug_free_source_location): New public function.
13220         (mono_debug_print_stack_frame): New public function; see the
13221         inline documentation.
13222
13223         * debug-mono-symfile.c
13224         (mono_debug_find_source_location): Renamed into
13225         mono_debug_symfile_lookup_location(); only take a
13226         `MonoDebugMethodInfo *' and an `offset' argument; added inline
13227         documentation.
13228         (mono_debug_find_method): Renamed into
13229         mono_debug_symfile_lookup_method().
13230
13231 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13232
13233         * assembly.c (mono_assembly_open_full): Dont overwrite the status
13234         returned by mono_image_open_full ().
13235
13236         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
13237         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
13238         #78517.
13239
13240         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
13241         #78518.
13242
13243 2006-05-27  Miguel de Icaza  <miguel@novell.com>
13244
13245         * class.c (mono_class_from_typeref): handle missing images
13246         earlier, deals with bug #78418.   Refactor code; 
13247
13248         Fix a warning introduced in my previous commit (some stale code
13249         from before I revisited my patch).
13250
13251         * class.c (mono_class_create_from_typedef): On failure, remove the
13252         class from the MonoImage->class_cache as the class is not
13253         initialized;   Fixes the leak pointed out by Paolo.
13254
13255 2006-05-25  Dick Porter  <dick@ximian.com>
13256
13257         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
13258         DeleteCriticalSections until I figure out which one may still be
13259         sometimes locked when mono_thread_cleanup is called.
13260
13261 2006-05-24  Dick Porter  <dick@ximian.com>
13262
13263         * threads.c (mono_thread_cleanup): Move the threading cleanup out
13264         of mono_thread_manage and back into its own function, so it can be
13265         called after the finalizer thread has finished.
13266
13267         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
13268
13269 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
13270
13271         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
13272         Fixes #78495.
13273
13274         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
13275         with non-blittable elements.
13276         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
13277
13278 2006-05-24  Martin Baulig  <martin@ximian.com>
13279
13280         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13281         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
13282
13283         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
13284         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
13285         `mono_debugger_event_handler' to NULL.
13286
13287 2006-05-24  Martin Baulig  <martin@ximian.com>
13288
13289         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
13290
13291 2006-05-24  Martin Baulig  <martin@ximian.com>
13292
13293         * mono-debug-debugger.h
13294         (mono_debugger_create_notification_function): Added
13295         `MonoCodeManager *' argument.
13296
13297 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
13298
13299         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
13300
13301 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
13302
13303         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
13304         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
13305         implementation.
13306
13307 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
13308
13309         * icall.c: precise GC support: objects can't be stored in unmanaged
13310         memory anymore, even if they are kept alive by other references: since
13311         they can move the GC needs to be able to always find them.
13312
13313 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13314
13315         * object.c: precise GC support for static fields. Support
13316         for moving GCs: write barriers and pinned allocation for interned
13317         strings.
13318
13319 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
13320
13321         * domain.c, domain-internals.h: precise GC support for the MonoDomain
13322         structure.
13323
13324 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13325
13326         * class.c, gc.c: sgen and precise GC updates.
13327
13328 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13329
13330         * marshal.h, marshal.c: added write barrier wrapper and precise type
13331         fixes.
13332
13333 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
13334
13335         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
13336         support.
13337
13338 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13339
13340         * reflection.c: precise and sgen GC updates.
13341
13342 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13343
13344         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
13345
13346 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
13347
13348         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
13349
13350 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
13351
13352         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
13353         MONO_TYPE_OBJECT. Fixes #78462.
13354
13355 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13356
13357         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
13358         and blittable types.
13359
13360 2006-05-17  Miguel de Icaza  <miguel@novell.com>
13361
13362         * class.c (mono_class_get_exception_for_failure): Implement parts
13363         of a TODO: if the loader error is set (instead of the class
13364         error), we return a Loader exception that can be properly thrown
13365         elsewhere.
13366
13367         This was exposed by some Winforms 2.0 code that I tried to run
13368         (Atsushi pointed me to it).
13369
13370 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
13371
13372         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
13373         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
13374         
13375         * marshal.c (emit_marshal_vtype): Add limited support for 
13376         UnmanagedType.LPStruct. Fixes #78427.
13377
13378         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
13379         Applied a patch from kangaroo to fix #77523.
13380
13381 2006-05-17  Martin Baulig  <martin@ximian.com>
13382
13383         * threads.c
13384         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
13385         (debugger_thread_created): Removed.
13386         (debugger_thread_exited): Removed.
13387
13388 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
13389
13390         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13391
13392         * object-internals.h (MonoReflectionResource): Sync with managed version.
13393
13394 2006-05-12  Wade Berrier <wberrier@novell.com>
13395
13396         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
13397
13398 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
13399
13400         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
13401         functions try to allocate from the image mempool.
13402
13403 2006-05-12  Dick Porter  <dick@ximian.com>
13404
13405         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
13406
13407 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
13408
13409         * object.c: The FieldGetter and FieldSetter methods require the full
13410         name of the class, not only the name. Fixes bug #78277.
13411
13412 2006-05-11  Miguel de Icaza  <miguel@novell.com>
13413
13414         * loader.c (method_from_memberref): Do not pass the NULL klass to
13415         mono_loader_set_error_() methods.  Pass the non-NULL value
13416         (class). 
13417
13418 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13419
13420         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13421         (mono_assembly_close): Null out assembly->image->references after freeing it.
13422
13423         * image.c (mono_image_close): Free image->references.
13424         
13425         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13426
13427 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13428
13429         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13430         before checking if it's NULL (g_assert).
13431
13432 2006-05-10  Martin Baulig  <martin@ximian.com>
13433
13434         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13435         I thought I already killed that two months ago, but now it somehow reappeared.
13436
13437 2006-05-10  Martin Baulig  <martin@ximian.com>
13438
13439         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13440
13441 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13442
13443         * reflection.c: Allocate memory for dynamically created methods in the image
13444         mempools.
13445
13446 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13447
13448         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13449         don't use the ad pointer before checking if it's NULL (g_assert).
13450
13451 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13452
13453         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13454         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13455
13456         * marshal.c: Allocate all signatures from mempools.
13457
13458         * marshal.c: Allocate some more signatures from mempools.
13459
13460 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13461
13462         * object.c (mono_load_remote_field): The code used to provide a
13463         temporary variable for returning results if the user did not
13464         provide a result pointer.  But our temporary variable was allocted
13465         on the satck.
13466
13467         Fix calling code to always pass a result area.   Coverity ID 103.
13468
13469 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13472         value, not the old. Fixes #78312.
13473         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13474
13475         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13476         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13477         per-image cache.
13478
13479         * assembly.c (mono_assembly_close): Free image->references.
13480
13481         * assembly.c (mono_assembly_names_equal): Fix a warning.
13482         (mono_assemblies_cleanup): Cleanup more global data.
13483
13484         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13485
13486         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13487         ptr_cache and image->modules.
13488
13489         * image.c (mono_image_init): Allocate array_cache lazily.
13490         
13491 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13492
13493         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13494         behavior was changed recently and has bad side effects.
13495
13496 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13497
13498         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13499         
13500         * assembly.c (mono_assembly_close): Remove a debug printf.
13501
13502         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13503
13504         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13505         to also allow for temporary references between mono_image_open ()/close ().
13506
13507         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13508
13509 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13510
13511         * marshal.c: Fix support for dynamic methods.
13512
13513         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13514
13515         * marshal.c (mono_marshal_cleanup): New cleanup function.
13516
13517         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13518         image mempools.
13519
13520         * class.c (mono_class_init): Fix leaking class->nested_classes.
13521
13522         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13523
13524         * image.c (mono_image_init): Initialize the new cashes.
13525
13526         * image.c (mono_image_close): Destroy the new cashes.
13527
13528         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13529
13530         * mempool.c (mono_mempool_strdup): New helper function.
13531
13532         * class-internals.h: Add prototype for mono_loader_unlock ().
13533
13534         * domain.c (mono_jit_info_table_find): Fix a warning.
13535         (mono_debugger_check_runtime_version): Ditto.
13536
13537         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13538         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13539         functions to these modules.
13540
13541         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13542         metadata modules.
13543         
13544         * marshal.c (mono_free_bstr): Fix a warning.
13545
13546         * assembly.c (mono_assembly_open_full): Fix another small leak.
13547
13548         * object.c: Fix some unload leaks in the remoting code.
13549
13550         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13551         function.
13552
13553         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13554
13555         * reflection.c: Fix some unload leaks in dynamic assemblies.
13556
13557 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13558
13559         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13560         * marshal.h: Add BSTR support on Win32
13561         * icall.c: Add BSTR icalls
13562         * metadata.h: Add BSTR enums
13563
13564 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13565
13566         Work to catch the crash from #76795 and turn it into an
13567         exception.   As I stubbed out pieces of the VisualBasic support,
13568         I found a number of places where the code was failing and I added
13569         checks to those places. 
13570         
13571         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13572         function return a status code.  If we fail to parse the signature
13573         from mono_metadata_parse_generic_inst, return FALSE.
13574
13575         * loader.c (mono_get_method_from_token): If we fail to load the
13576         method (mono_class_get) return NULL.   
13577
13578         * (method_from_memberref): Return NULL if we are unable to parse
13579         the method signature
13580
13581         (mono_loader_error_prepare_exception): Since we now use the
13582         loader_error flag internally to stop processing, and obtaining
13583         exceptions that might be thrown will walk this code path the
13584         proper way of going from a MonoLoaderError into a
13585         MonoException was convoluted.   This new routine encapsulates the
13586         process of turning the error into an exception and *clearing* the
13587         error afterwards.
13588         
13589 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13590
13591         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13592         with missing assemblies), and to cope with:
13593
13594                 * Missing fieldref from a non-existing assembly.
13595                 * Missing methodref from a non-existing assembly.
13596
13597         The first batch of work to address *some* of the issues from 76661.
13598         
13599         * object.c (mono_class_create_runtime_vtable): If we fail to
13600         initialize the class raise the exception here. 
13601
13602         * metadata.c (mono_class_get_overrides_full): If any methods fail
13603         to load return the failure to the caller.
13604
13605         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13606         flagging assemblies that failed to load.   
13607
13608         Do not crash if we are unable to load the assembly.
13609
13610         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13611         assemblies. 
13612
13613         * loader.c (mono_loader_set_error_type_load): Change the
13614         convention to always pass unallocated strings, so we make our own
13615         copies (I know our own code had duplicated strings before, but
13616         this keeps the normal conventions).
13617         (method_from_memberref): Call mono_loader_set_error_method_load
13618         for all possible failures of loading the class. 
13619         Remove assert, turn into a loader error.
13620
13621         (mono_loader_error_to_exception): Move this routine from mini
13622         (mini_loader_error_to_exception) there was no need to have that in
13623         mini. 
13624
13625         * class.c (mono_class_from_typeref): If we were not able to load
13626         the assembly with mono_assembly_load_reference, call the
13627         mono_loader_set_error_type_load to register the problem.
13628
13629         (mono_class_setup_fields): If we fail to load the type from
13630         mono_metadata_parse_type_full, call mono_class_set_failure and
13631         break from the loop.
13632
13633         If class->exception_type is set, we do not layout the fields as
13634         that might crash the runtime, and instead return (from breaking
13635         from the previous loop).
13636
13637         (mono_class_setup_vtable): This now returns a boolean indicating
13638         whether the table was properly setup.   The decision is driven by
13639         mono_class_get_overrides_full which might run into non-existing
13640         methods. 
13641         
13642         (mono_class_init): Returns TRUE on success or FALSE if there was a
13643         problem in loading the type (incorrect assemblies, missing
13644         assemblies, methods, etc).
13645
13646         When we call mono_class_setup_fields we also check for a potential
13647         error inside this call (either a class exception or a general
13648         loader exception).
13649
13650         (mono_class_create_from_typedef): If the parent fails to load
13651         (calling mono_class_get_full) return NULL.
13652         
13653         ** Important **
13654
13655         calls to mono_metadata_parse_type_full should be checked
13656         everywhere and set the mono_class_set_failure
13657         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13658
13659         The current patch checks the places where my manually constructed
13660         tests show the errors are showing up, but we should do it
13661         everywhere. 
13662
13663         ** Important2 **
13664
13665         mono_class_init return values should be tested everywhere, like
13666         the previous case this is something that we should audit
13667         everywhere and not only on the cases exposed by the tests I
13668         created. 
13669
13670 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13671
13672         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13673         boolean parameter and instead pass the information on `options'
13674         parameter (FileOptions).
13675
13676         * icall.c: Register the new signature for MonoIO.Open.
13677
13678         * debug-helpers.c (dis_one): Trying to understand how coverity
13679         works.  Fix Run 5, item 78.
13680
13681 2006-04-26  Dick Porter  <dick@ximian.com>
13682
13683         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13684         dereference.
13685
13686 2006-04-25  Martin Baulig  <martin@ximian.com>
13687
13688         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13689
13690         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13691         debugger_thread_created().
13692         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13693         special way.
13694         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13695         (mono_debugger_finalize_threads): New function; undo the effects
13696         of mono_debugger_init_threads().
13697         (mono_debugger_create_all_threads): Removed.
13698
13699 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13700
13701         * image.c (mono_image_close): Tidy up trace messages.
13702
13703         * assembly.c (mono_assembly_close): Ditto.
13704
13705         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13706         no longer references an already freed assembly. Fixes #78168.
13707
13708 2006-04-21  Dick Porter  <dick@ximian.com>
13709
13710         * threads.c (mono_thread_detach): Fix reference counting when
13711         detaching threads.
13712
13713 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13714
13715         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13716         #78155.
13717
13718 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13719
13720         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13721         (mono_type_to_stind): Ditto.
13722
13723         * marshal.c: Use the new helper functions to simplify code.
13724
13725         * image.c (mono_image_close): Add some code for help debug assembly unloading
13726         problems.
13727
13728         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13729         image mempool.
13730
13731         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
13732         assembly was already loaded in another appdomain. Fixes #78083.
13733
13734 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
13735
13736         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
13737         referenced assemblies.
13738         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
13739
13740         * domain.c (mono_domain_free): Add a trace message.
13741
13742         * appdomain.c (add_assemblies_to_domain): Ditto.        
13743
13744         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
13745         field.  
13746
13747 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13748
13749         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
13750
13751 2006-04-12  Martin Baulig  <martin@ximian.com>
13752
13753         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
13754         `USE_INCLUDED_LIBGC'.   
13755
13756 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13757
13758         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
13759         the patch contains ../ and a small directory name later. Hopefully fixes
13760         #78035.
13761
13762 2006-04-10  Martin Baulig  <martin@ximian.com>
13763
13764         Clean up the debugger's thread-handling code.
13765
13766         The debugger's thread-handling code has been moved from
13767         ../mini/debug-debugger.c to threads.c.  We now iterate directly
13768         over the `threads' hash, keep track of exiting threads and also
13769         use proper locking.
13770
13771         We can now debug XSP and XSP based applications with the debugger.
13772
13773         * object-internals.h (MonoThread): Added `gpointer end_stack'.
13774
13775         * threads.h
13776         (MonoThreadCallbacks): Removed; this was only used by the debugger.
13777         (mono_install_thread_callbacks): Likewise.      
13778
13779         * threads.c (mono_thread_callbacks): Removed.
13780         (debugger_thread_created, debugger_thread_exited): New static functions.
13781         (start_wrapper): Call debugger_thread_created().
13782         (thread_cleanup): Call debugger_thread_exited().
13783         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
13784         (mono_debugger_init_threads): New public function.
13785         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
13786         iterate directly over the `threads' hash and also use proper locking.
13787
13788         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
13789
13790         * mono-debug-debugger.h
13791         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
13792
13793 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13794
13795         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
13796         argument type=array. Fixes #78057.
13797
13798 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
13799
13800         * culture-info-table.h : regenerated. Fixed bug #69652.
13801
13802 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13803
13804         * loader.c metadata.c: Reapply a variant r59116.
13805         
13806         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
13807
13808         * class.c (mono_class_setup_interface_offsets): New internal function.
13809
13810         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
13811         interfaces too. Fixes #77398.
13812
13813         * reflection.c (encode_cattr_value): Add support for 
13814         parameter type=object, argument type=array.
13815         (load_cattr_value): Ditto. Fixes #77916.
13816
13817         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
13818         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
13819
13820         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
13821         a byval char array and CharSet is Ansi.
13822
13823         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
13824
13825 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
13826
13827         * metadata.c: Add some locking comments.
13828         
13829         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
13830         mempool.
13831         (mono_metadata_free_method_signature): Don't free the signature itself.
13832
13833         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
13834
13835         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
13836         reference the same MonoImage.
13837         (mono_assembly_load_from_full): Add an assert.
13838
13839 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13840
13841         * image.c (mono_image_close): Don't put the image we are about to free into the
13842         loaded_images_guid_hash.
13843
13844         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
13845         to reduce code duplication.
13846
13847         * marshal.c: Register the native functions called by this module as icalls, to
13848         somewhat centralize the creation of MonoMethodSignature's.
13849
13850         * loader.c (mono_method_signature): Add a cache for method signatures.
13851
13852         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
13853         the parameter attributes of a method.
13854         (mono_metadata_parse_method_signature_full): Refactored the computation of
13855         parameter attributes into a separate function. Also avoid one allocation in
13856         most cases.
13857
13858         * assembly.c (mono_assembly_close): Ditto.
13859
13860         * image.c (mono_image_close): Log trace messages with INFO level.
13861
13862         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
13863
13864         * image.c reflection.c: Correct reference counting of image modules.
13865         
13866         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
13867         of this function from the image mempool.
13868         
13869         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
13870         to allow more cached types to be used.
13871
13872         * mono-debug.c (mono_debug_add_method): Appled patch from
13873         David S. Miller  <davem@sunset.davemloft.net>: Access 
13874         minfo->lexical_blocks[] entry elements using read32().
13875
13876 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13877
13878         * loader.c (mono_free_method): No longer free the method header for non-dynamic
13879         methods as it is allocated from the mempool.
13880
13881         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
13882         image mempool.
13883
13884         * metadata-internals.h: Add comments describing the reference counting scheme
13885         used for MonoImage and MonoAssembly.
13886
13887         * image.c assembly.c reflection.c: Rework reference counting of images and 
13888         assemblies so they are freed when the runtime is shut down. Free some 
13889         additional memory structures when an image is unloaded.
13890         
13891 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * class.c loader.c reflection.c: Allocate more data structures in
13894         the image mempool.
13895
13896 2006-03-31  Miguel de Icaza  <miguel@novell.com>
13897
13898         * icall.c
13899         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
13900         build on pre glib 2.4 systems.
13901
13902 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13903
13904         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
13905
13906         * icall.c: Fix some warnings.
13907
13908 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
13909
13910         * culture-info-table.h : regenerated.
13911
13912 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
13913
13914         * threads.c, object-internals.h, verify.c: changed the culture caching
13915         code to use a normal MonoArray for storage so the GC can keep track of
13916         them easily. Fixed bits of the cache logic, too and simplified the
13917         code.
13918
13919 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
13920
13921         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
13922         thread for non-Boehm GCs.
13923
13924 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
13925
13926         * domain.c, object.c, domain-internals.h: reduce the amount of memory
13927         needed to keep track of the data for static fields.
13928
13929 2006-03-29  Raja R Harinath  <rharinath@novell.com>
13930
13931         Fix #75172
13932         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
13933         for interface classes.  Use 'num_methods' instead.
13934         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
13935         before using '->vtable_size' field.
13936
13937 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13938
13939         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
13940         doesn't contain managed pointers, so use a normal hashtable.
13941
13942 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13943
13944         * reflection.c, class-internals.h, domain.c: fixed handling of types
13945         used as values for objects in custom attributes (bug #77915):
13946
13947 2006-03-24  Martin Baulig  <martin@ximian.com>
13948
13949         * class.c (mono_class_setup_fields): Added support for generic
13950         instances; fixes #77580.
13951
13952 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13953
13954         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
13955
13956 2006-03-24  Dick Porter  <dick@ximian.com>
13957
13958         * file-io.c (get_file_attributes): More stat macro breakage.
13959         Fixes bug 77759.
13960
13961 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
13962
13963         * profiler.c: added the file=filename option in the default profiler
13964         to output the profile data to filename.
13965
13966 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13967
13968         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
13969         bug #77877.
13970
13971 2006-03-22  Martin Baulig  <martin@ximian.com>
13972
13973         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
13974         allocated `MonoClassField *' in `fb->handle'.
13975
13976 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13977
13978         * class.c, image.c, metadata-internals.h: implemented new mechanism to
13979         allocate interface ID to save memory and allow better ID reuse on
13980         appdomain unload. setup_generic_vtable () removal from Martin.
13981
13982 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13983
13984         * object.h, appdomain.c, domain.c, exception.c, icall.c,
13985         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
13986         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
13987         write barriers for reference stores with managed objects accessed with
13988         C structures in the runtime and in embedding programs.
13989
13990 2006-03-20  Raja R Harinath  <rharinath@novell.com>
13991
13992         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
13993         'interface_id' and 'max_interface_id' fields of MonoClasses
13994         representing open generic types.
13995
13996 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
13997
13998         * object.h, object.c, icall.c: added functions to deal with
13999         storing valuetypes that contain references in managed objects.
14000         * reflection.c, string-icalls.c, threads.c, marshal.c: small
14001         fixes and comments around uses of mono_array_addr ().
14002
14003 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
14004
14005         * object.h, icall.c, monitor.c: object.GetHashCode ()
14006         implementation that supports the moving garbage collector.
14007
14008 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14009
14010         * icall.c, threads-types.h, threads.c: implemented finalizer for
14011         LocalDataStoreSlot.
14012
14013 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14014
14015         * metadata.c (mono_type_size): Add a fixme.
14016         (mono_type_stack_size): Ditto.
14017
14018         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
14019         'type_forwarders' field.
14020
14021         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
14022         attribute from net 2.0.
14023
14024         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
14025         from class.c.
14026
14027         * class.c (mono_class_setup_fields): Fix a warning.
14028         
14029         * class.c (mono_class_from_name): Add support for assemblyref entries
14030         in the EXPORTEDTYPE table.
14031
14032         * reflection.c: Add support for handling type forwarders under net 2.0.
14033
14034         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
14035         
14036 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14037
14038         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
14039         overwriting entries in ModuleBuild->types, also clean up the code
14040         a little. Fixes #77774.
14041
14042 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14043
14044         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
14045         load friend assembly info when present.
14046
14047 2006-03-14  Raja R Harinath  <rharinath@novell.com>
14048
14049         Fix crasher on gtest-158.cs.
14050         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
14051         the return value if the MonoClass we want is yet in an
14052         inconsistent state.
14053         * class.c (mono_class_create_from_typedef): Add an comment
14054         explaining an order dependency between mono_class_setup_parent and
14055         mono_class_setup_mono_type.
14056
14057 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14058
14059         * class.c: documentation updates and events bug fix.
14060
14061 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
14062
14063         * class.c: some cleanup, locking fixes.
14064
14065 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14066
14067         * class.c: fix the generics code to setup nested
14068         type info to the instantiated type (bug #77770).
14069
14070 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14071
14072         * marshal.c: fixed a few type correctness issues.
14073
14074 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14075
14076         * loader.c: the Set/Get/Addrtess array methods should be public.
14077
14078 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14079
14080         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
14081         
14082         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
14083         info->wrapper.
14084
14085 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14086
14087         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
14088
14089         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
14090
14091         * mempool.c (mono_mempool_alloc): Speed this up a bit.
14092         (mono_mempool_alloc0): Ditto.
14093
14094 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14095
14096         * socket-io.c:
14097         (create_object_from_sockaddr): it was allocating 4 extra bytes
14098         for the AF_UNIX data. Fixes bug #77747.
14099
14100 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14101
14102         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
14103
14104 2006-03-09  Dick Porter  <dick@ximian.com>
14105
14106         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
14107         Fixes bug 76966 again.
14108
14109 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
14110
14111         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
14112         names from r57532
14113         * appdomain.c: Bumped corlib version to 48 (due to r57532)
14114
14115 2006-03-07  Martin Baulig  <martin@ximian.com>
14116
14117         * object.c
14118         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
14119
14120 2006-03-07  Martin Baulig  <martin@ximian.com>
14121
14122         * class.c
14123         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
14124         regression introduced in r56970; see gtest-252.cs.
14125
14126         * loader.c (mono_get_method_constrained): Correctly handle generic
14127         methods; see gtest-253.cs.
14128
14129 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14130
14131         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
14132
14133 2006-03-04  Martin Baulig  <martin@ximian.com>
14134
14135         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
14136         compute the parent type at runtime, just like we're already doing
14137         it for interfaces.
14138
14139         * reflection.c
14140         (mono_reflection_bind_generic_parameters): Don't compute the
14141         parent type anymore.
14142
14143         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
14144
14145 2006-03-04  Martin Baulig  <martin@ximian.com>
14146
14147         * mono-debug-debugger.h
14148         (mono_debugger_create_notification_function): Allocate memory at
14149         runtime and return a pointer to it.
14150
14151 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
14152
14153         * assembly.c: Fix windows build.
14154         
14155         * assembly.c: Fix build.
14156
14157         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
14158
14159         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
14160         
14161 2006-03-03  Dick Porter  <dick@ximian.com>
14162
14163         * process.c
14164         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14165         Check parameters before dereferencing them.  Fixes Aaron's part of
14166         bug 77393.
14167
14168 2006-03-03  Raja R Harinath  <rharinath@novell.com>
14169
14170         Fix performance regression.
14171         * loader.c (find_method_in_class): Add 'from_class' argument.
14172         Rename 'klass' argument to 'in_class'.  The signature is compared
14173         against the method in 'in_class', and the corresponding method is
14174         returned from 'from_class'.
14175         (find_method): Walk both 'in_class' and 'from_class' in parallel.
14176         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
14177         type definition and generic instantiation in parallel.
14178         (mono_get_method_constrained): Update to changes.
14179
14180 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14181
14182         * threads.c: make sure the domain is correct, too when doing
14183         mono_thread_attach ().
14184
14185 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
14186
14187         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
14188         windows. Fixes #77683.
14189
14190 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14191
14192         * object.h, *: introduced specific way to set elements of an array
14193         of references to be used as write barrier. Still need to audit the
14194         uses of mono_array_addr.
14195
14196 2006-03-01  Miguel de Icaza  <miguel@novell.com>
14197
14198         * object-internals.h: New field to cache the assmebly name, patch
14199         from Tambet Ingo (tambet@ximian.com)
14200
14201 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14202
14203         * decimal.h, class-internals.h, metadata-internals.h,
14204         file-io.h: mark a few function declarations as internal, to
14205         reduce the number of PLT entries.
14206
14207 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14208
14209         * file-io.c: fix typo in warning message.
14210
14211 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
14212
14213         * loader.c: on unix, lookup the "*A" version of a function
14214         if charset is auto as a second option before failing.
14215
14216 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14217
14218         * class.h (mono_class_inflate_generic_method): Revert to two
14219         argument version.
14220         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
14221         (mono_class_inflate_generic_method_full): Add.
14222         * class.c (mono_class_inflate_generic_method_full): Rename from
14223         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
14224         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
14225         * loader.c, reflection.c: Update to changes.
14226
14227 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14228
14229         * icall.c: const fixes and small improvements.
14230
14231 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14232
14233         * threadpool.c: for asynchronous connect(), enable the same workaround
14234         for BSD 6 as for the Mac. Fixes bug #77637.
14235
14236 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14237
14238         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
14239         formatted classes. Fixes #77524.
14240
14241 2006-02-24  Raja R Harinath  <rharinath@novell.com>
14242
14243         * class.c (inflate_generic_type): Add a couple more
14244         micro-optimizations.
14245         (inflate_generic_context): Don't use the 'gmethod' from
14246         'inflate_with'.
14247         (mono_class_inflate_generic_method): If the method has generic
14248         parameters, but the passed-in context doesn't have a 'gmethod',
14249         create one.  Use the possibly simplified generic instantiation
14250         from the declaring class instead of the one passed in.
14251
14252 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14253
14254         Make generic method signature and method header handling lazy.
14255         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
14256         (inflate_generic_header): Likewise.
14257         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
14258         parameter to avoid inflating types.
14259         (mono_get_inflated_method): Empty out.
14260         * class.h (mono_class_inflate_generic_method): Update to changes.
14261         * loader.c (mono_get_method_from_token): Don't parse signature for
14262         generic methods, nor methods of generic classes.
14263         (mono_method_signature): Rename from 'mono_method_signature'.
14264         Inflate signature on demand.
14265         (mono_method_get_header): Inflate method header on demand.
14266         * reflection.c: Update to changes.
14267
14268 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14269
14270         * metadata.c (mono_metadata_inflate_generic_inst): If the
14271         instantiation is closed, don't bother expanding it in the new
14272         context.
14273         * class.c (inflate_generic_class): If the generic instantiation
14274         doesn't change after inflation, return the argument itself.
14275         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
14276         Add bounds checks.
14277         (inflate_generic_context): If neither the generic class nor the
14278         generic method instantiations change, return the original context.
14279         * reflection.c (mono_method_get_object): Do
14280         'mono_get_inflated_method' before accessing the ->klass field.
14281         (inflate_mono_method): Don't create a MonoGenericMethod unless
14282         necessary.
14283         (inflate_method): Don't pass a constructed type as the declaring
14284         type of a methodbuilder.
14285
14286 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
14287
14288         * object.c: fix memory overwrite.
14289
14290 2006-02-22  Dick Porter  <dick@ximian.com>
14291
14292         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
14293         it doesn't work any more.
14294         (mono_threads_request_thread_dump): Fix unused variable warnings.
14295
14296 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14297
14298         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
14299         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
14300         the public header file.
14301
14302 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
14303
14304         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
14305
14306 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14307
14308         * class-internals.h, object.c: reduce the size of MonoVTable
14309         and store the interface_offsets array at negative offsets.
14310
14311 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14312
14313         * metadata.c: tweak table descriptors data structures to reduce
14314         size and runtime relocations.
14315
14316 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14317
14318         * marshal.c: fix some types and opcodes to be type-safe
14319         in marshaling wrappers.
14320
14321 2006-02-21  Ankit Jain  <jankit@novell.com>
14322
14323         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
14324
14325 2006-02-21  Raja R Harinath  <rharinath@novell.com>
14326
14327         * metadata.c (get_constraints): Relax debugging checks for monodis.
14328
14329 2006-02-21  Ankit Jain  <jankit@novell.com>
14330
14331         * metadata.c (mono_metadata_load_generic_params): Move the code
14332         checking for ambiguous generic params from here to mono/dis/get.c
14333         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
14334
14335 2006-02-21  Raja R Harinath  <harinath@gmail.com>
14336
14337         Fix assertion triggered when compiling nemerle.
14338         * class.c (mono_get_shared_generic_inst): Rename from
14339         get_shared_inst and make non-static.
14340         * loader.c (mono_get_shared_generic_method): New.  Used to create
14341         the MonoGenericContext-equivalent of a MonoGenericContainer.
14342         (mono_get_method_from_token): Initialize the 'context' field of
14343         the created MonoGenericContainer.
14344         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
14345         * metadata.c (get_constraints): Add sanity check.
14346         * class-internals.h: Add new internal methods.
14347
14348         * reflection.c (verify_safe_for_managed_space): New sanity check.
14349         Currently checks that owner-less generic parameters aren't allowed
14350         in managed space.
14351         (mono_type_get_object): Use it.
14352         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
14353         that are now in mono_type_get_object.
14354         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
14355
14356 2006-02-19  Raja R Harinath  <harinath@gmail.com>
14357
14358         * metadata.c (mono_type_create_from_typespec): Rename from
14359         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
14360         argument and caching of types in the generic container.
14361         (unwrap_arrays, find_generic_param): Remove.
14362         * metadata-internals.h: Update.
14363         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
14364
14365 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
14366
14367         * class.c (mono_class_get_exception_for_failure): Fix a warning.
14368
14369         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
14370         return values. Fixes #77581.
14371
14372         * class.c (mono_fnptr_class_get): Switch name and name_space.
14373
14374         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
14375         classes and add support for [In, Out] attributes.
14376         (mono_marshal_free_asany): Ditto. Fixes #77524.
14377
14378 2006-02-18  Raja R Harinath  <harinath@gmail.com>
14379
14380         * class.c (mono_class_from_generic_parameter): Make more robust to
14381         incomplete MonoGenericContainers from monodis.
14382
14383 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14384
14385         * class-internals.h: added some more exception types.
14386         * class.c, metadata.c: added a few checks to handle missing
14387         types.
14388
14389 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14390
14391         Use owner-less generic-params some more.
14392         * class.c (my_mono_class_from_generic_parameter): Remove.
14393         (mono_class_from_generic_parameter): Handle null image,
14394         param->name and param->owner.
14395         (mono_class_from_mono_type): Update.
14396         (mono_class_create_from_typespec): Remove 'container' parameter.
14397         If that parameter is non-null, the result is always inflated by
14398         'mono_class_get_full' anyway.
14399         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
14400         parameter.
14401         (mono_class_get_full): Update.
14402
14403         * class.c (inflate_generic_type) [GENERICINST]: If the generic
14404         instance is not open, don't bother inflating.
14405         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
14406         parse metadata for inflated classes.
14407         (_mono_class_get): Change GenericContext* parameter to
14408         GenericContainer*.
14409         (mono_class_create_from_typespec): Likewise.  Simplify, and
14410         implement trivially.  All the cases are handled in
14411         mono_class_from_mono_type.  Don't inflate returned class.
14412         (mono_class_get_full): Delegate GENERICINST optimization to
14413         inflate_generic_type.
14414         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
14415
14416 2006-02-16  Dick Porter  <dick@ximian.com>
14417
14418         * socket-io.c (create_object_from_sockaddr): Fix typo.
14419         (create_sockaddr_from_object): Check array lengths before
14420         potentially accessing items off the end.
14421         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14422         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14423         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14424         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14425         length checks to avoid wraparound overflows.
14426         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14427         contents of the array of sockets
14428         (hostent_to_IPHostEntry2)
14429         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14430         Check return value of inet_ntop ().
14431         (addrinfo_to_IPHostEntry): Fix typo
14432
14433 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14434
14435         Type metadata parsing doesn't use generic-instantiation information.
14436         * metadata.c (mono_metadata_parse_array_full): Change
14437         MonoGenericContext* parameter to MonoGenericContainer*.
14438         (mono_metadata_parse_type_full): Likewise.
14439         (mono_type_create_from_typespec_full): Likewise.
14440         (mono_metadata_parse_mh_full): Likewise.
14441         (mono_metadata_parse_generic_inst): Likewise.
14442         (do_mono_metadata_parse_generic_class): Likewise.
14443         (do_mono_metadata_parse_type): Likewise.
14444         * metadata-internals.h: Update to changes.
14445         * class.c (mono_class_find_enum_basetype): Likewise.
14446         (mono_class_setup_fields): Likewise.
14447         (mono_class_create_from_typespec): Likewise.
14448         * loader.c (method_from_methodspec): Likewise.
14449         (mono_get_method_from_token): Likewise.
14450         (mono_method_get_header): Likewise.
14451
14452 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14453
14454         * marshal.c: handle additional GENERICINST case (patch from
14455         Thong Nguyen <tum@veridicus.com>).
14456         Fix a few cases where LDIND_I/STIND_I was used for references.
14457
14458 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14459
14460         * reflection.c (mono_reflection_get_token): Remove unused variable.
14461
14462 2006-02-16  Martin Baulig  <martin@ximian.com>
14463
14464         * reflection.c (mono_reflection_get_token): Add support for fields
14465         in instantiated generic types.
14466
14467         * icall.c
14468         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14469
14470 2006-02-15  Martin Baulig  <martin@ximian.com>
14471
14472         * icall.c
14473         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14474         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14475         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14476         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14477
14478 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14479
14480         * class.c, metadata.c, metadata.h, object.c, icall.c,
14481         marshal.c: changed mono_type_get_underlying_type () to do
14482         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14483         Fixed handling of instantiated generic valuetypes (bug #75479).
14484
14485 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14486
14487         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14488         Delegate to mono_metadata_decode_value, and work on the returned value.
14489
14490         * icall.c (ves_icall_MonoType_GetGenericArguments):
14491         Add consistency check here too.
14492         
14493 2006-02-15  Ankit Jain  <jankit@novell.com>
14494
14495         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14496         char/short etc.
14497
14498 2006-02-15  Ankit Jain  <jankit@novell.com>
14499
14500         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14501         signed values, used only for representing lower bounds of arrays.
14502         (mono_metadata_parse_array_full): Use new
14503         mono_metadata_decode_signed_value to decode lower bounds.
14504
14505 2006-02-14  Martin Baulig  <martin@ximian.com>
14506
14507         * reflection.c
14508         (mono_reflection_get_token): Support "MonoGenericMethod" and
14509         "MonoGenericCMethod" and allow generic instances / methods.
14510
14511 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14512
14513         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14514         to obtain the terminal size using an ioctl.
14515
14516         * object.c (mono_nullable_init): Revert this as nullable reference
14517         types are not valid.
14518         (mono_nullable_box): Ditto.
14519
14520 2006-02-09  Dick Porter  <dick@ximian.com>
14521
14522         * threads.c (mono_thread_detach): Drop a reference to the thread
14523         we're detaching.
14524
14525 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14526
14527         * object.c (mono_nullable_init): Handle nullable reference types.
14528         (mono_nullable_box): Ditto. Fixes #77446.
14529
14530 2006-02-07  Martin Baulig  <martin@ximian.com>
14531
14532         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14533
14534 2006-02-07  Ankit Jain  <jankit@novell.com>
14535
14536         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14537         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14538         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14539         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14540         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14541         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14542
14543 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14544
14545         * class.c (mono_class_create_generic): Set type_token as well.
14546
14547         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14548         compatible with MS.
14549
14550 2006-02-02  Martin Baulig  <martin@ximian.com>
14551
14552         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14553         has never been used so far.
14554
14555 2006-02-02  Martin Baulig  <martin@ximian.com>
14556
14557         * mono-debug-debugger.h: Changed comment at the top of this file;
14558         the header is not installed, but it's safe to #include it from
14559         within the JIT.
14560
14561         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14562         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14563
14564 2006-02-02  Martin Baulig  <martin@ximian.com>
14565
14566         * mono-debug.h
14567         (MonoSymbolTable): Removed the `metadata_info' field.
14568
14569         * mono-debug.c
14570         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14571
14572         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14573         (mono_debugger_add_builtin_types): Removed.
14574         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14575         (mono_debugger_create_notification_function): We now operate on a
14576         pre-allocated area; take a `gpointer' and return `void'.
14577
14578         * mono-debug-debugger.c
14579         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14580         (mono_debugger_add_builtin_types): Removed.
14581
14582 2006-02-02  Martin Baulig  <martin@ximian.com>
14583
14584         * threads.c (mono_debugger_create_all_threads): New public method.
14585
14586 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14587
14588         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14589         breaks on several platforms.
14590
14591 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14592
14593         * assembly.c: the VS.NET build doesn't supply default values for
14594         MONO_ASSEMBLIES and MONO_CFG_DIR.
14595
14596 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14597
14598         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14599         helper function.
14600
14601         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14602
14603         * loader.c (method_from_memberref): Fix a warning.
14604
14605         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14606
14607         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14608         with explicit layout. Fixes #77433.
14609
14610 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14611
14612         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14613         max_interface_id is initialized before using it. Fixes #77398.
14614         (ves_icall_Type_GetInterfaces): Ditto.
14615
14616 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14617
14618         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14619         allocate memory for parameter attributes when parsing memberref
14620         signatures.
14621         * loader.c (mono_loader_set_error_method_load): Don't warn.
14622         (method_from_memberref): Ensure MissingMethodException gets thrown
14623         if method is not found.  Make warning more informative.
14624
14625 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14626
14627         Fix #77397
14628         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14629         return true if is byref.
14630         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14631         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14632         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14633
14634 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14635
14636         Fix tests/find-method.2.il
14637         * loader.c (find_method, find_method_in_class): Remove is_inflated
14638         argument.  Revert 2006-01-18 change.
14639         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14640         is generic, search for method in its generic definition.
14641         * class.c (mono_class_setup_vtable_general): Print generic
14642         arguments of generic types in debugging printf.
14643
14644 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14645
14646         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14647
14648         * threads.c (mono_threads_request_thread_dump): New helper function.
14649
14650 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14651
14652         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14653
14654 2006-01-25  Ankit Jain  <jankit@novell.com>
14655
14656         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14657         move definition to ..
14658         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14659         
14660 2006-01-25  Ankit Jain  <jankit@novell.com>
14661             Raja R Harinath  <rharinath@novell.com>
14662
14663         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14664         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14665         as necessary.
14666
14667 2006-01-25  Martin Baulig  <martin@ximian.com>
14668
14669         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14670         `MonoDebuggerThread' into debug-debugger.c.
14671
14672 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14673
14674         * profiler.c: fix printing of data.
14675
14676 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14677
14678         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14679           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14680
14681 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14682
14683         * object.c: fix deadlock related to string interning.
14684
14685 2006-01-23  Martin Baulig  <martin@ximian.com>
14686
14687         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14688
14689         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14690
14691 2006-01-23  Martin Baulig  <martin@ximian.com>
14692
14693         * mono-debug.h: Moved the prototypes of some functions which are
14694         used by the JIT here from mono-debug-debugger.h.
14695
14696 2006-01-21  Martin Baulig  <martin@ximian.com>
14697
14698         * Makefile.am: Don't install mono-debug-debugger.h.
14699
14700 2006-01-21  Martin Baulig  <martin@ximian.com>
14701
14702         * mono-debug-debugger.h: Enforce the private status of this header
14703         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14704         Moved some stuff from mono-debugger-jit-wrapper.h here.
14705
14706 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14707
14708         * class.c (mono_class_from_typeref): Add a sanity test to help
14709         catch lack of assembly load/search hooks.
14710
14711 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14712
14713         * marshal.c (emit_struct_conv): Relax the fields with same offset
14714         check even more. Fixes #77230.
14715
14716 2006-01-18  Martin Baulig  <martin@ximian.com>
14717
14718         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14719         argument; if false, we compare the uninstantiated signatures.
14720         (method_from_memberref): Compare the uninstantiated signatures;
14721         fixes #76417.
14722
14723 2006-01-18  Robert Jordan  <robertj@gmx.net>
14724
14725         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14726         Clear the weak link. Fixes bug #77170.
14727
14728         * gc.c (mono_gchandle_free):
14729         Reflect *-gc.c changes (tiny optimization).
14730
14731 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
14732
14733         * metadata.c (mono_metadata_signature_dup): Applied patch from
14734         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
14735         Fixes #77288.
14736
14737 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14738
14739         * marshal.c (emit_struct_conv): Allow fields with the same offset when
14740         marshalling from native to managed code. Fixes #77230.
14741
14742 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14743
14744         * threadpool.c: fix problem (Mac only) when more than one asynchronous
14745         connect. Fixes bug #77020.
14746
14747 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14748
14749         * class.c: fixed id assignement for nested interfaces (bug #77275).
14750         Added also better info for --print-vtable debugging.
14751
14752 2006-01-12  Martin Baulig  <martin@ximian.com>
14753
14754         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
14755         interfaces on-the-fly; fixes #76625.
14756
14757         * class-internals.h
14758         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
14759         don't need that anymore.
14760
14761 2006-01-12  Miguel de Icaza  <miguel@novell.com>
14762
14763         * socket-io.c
14764         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14765         To avoid initing the nested_classes when not needed I turned the
14766         PeerCredData as a toplevel internal class, as it has to be shared
14767         anyways. 
14768
14769         Fixes the CASA issue.
14770
14771 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14772
14773         * domain.c: Accessors for MonoJitInfo
14774
14775         * profiler-private.h: Add jitinfo to the end jit hook
14776
14777         * profiler.[ch]: Define new hooks, called after jitting which give
14778         the MonoJitInfo that was compiled
14779
14780 2006-01-10  Martin Baulig  <martin@ximian.com>
14781
14782         * class.c (mono_class_setup_events): Add support for generic
14783         classes; fixes #76440.
14784
14785 2006-01-06  Raja R Harinath  <rharinath@novell.com>
14786
14787         Fix #77160.
14788         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
14789         on passed-in method.
14790
14791 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14792
14793         * object.c (mono_runtime_invoke_array): Add Nullable support.
14794
14795         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
14796
14797 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
14798
14799         * file-io.c: Don't consider sockets as directory and avoid an endless
14800         loop. Fix bug #76966.
14801
14802 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14803
14804         * object.c (mono_nullable_init): New helper function.
14805         (mono_nullable_box): Ditto.
14806
14807         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
14808
14809         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
14810
14811         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
14812         
14813 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
14814
14815         * class.c (mono_class_is_assignable_from): Make T assignable to 
14816         Nullable<T>.
14817
14818 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
14819
14820         * appdomain.c: Bump corlib version to 46.
14821         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
14822         serialization purpose) and changed ves_icall_System_Reflection_
14823         Assembly_get_code_base signature to accept a boolean (to escape, or 
14824         not, the assembly code base).
14825
14826 2005-12-23  Dick Porter  <dick@ximian.com>
14827
14828         * icall.c: 
14829         * threads-types.h: 
14830         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
14831         CreateEvent icall now returns "created" boolean parameter.
14832
14833 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14834
14835         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
14836         #76967.
14837
14838         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
14839         when attr_klass is an interface. Fixes #77045.
14840
14841 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
14842
14843         * marshal.c (emit_struct_conv): Fix previous patch.
14844         
14845         * marshal.c (emit_struct_conv): Add a check for fields with the same
14846         offset.
14847
14848 2005-12-20  Raja R Harinath  <rharinath@novell.com>
14849
14850         Fix regression in Mono.C5.
14851         * class.c (mono_class_create_generic): If 'klass' is an interface
14852         set up the interface offsets.
14853         (mono_class_is_assignable_from): Don't throw away generic arguments.
14854
14855 2005-12-19  Raja R Harinath  <rharinath@novell.com>
14856
14857         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
14858         type parameters.
14859
14860 2005-12-15  Raja R Harinath  <rharinath@novell.com>
14861
14862         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
14863         dead store.
14864         (do_mono_metadata_parse_generic_class): Don't pass the current
14865         generic context when parsing the type being instantiated: it
14866         cannot use it, anyway.
14867
14868         * loader.c (method_from_memberref): Don't inflate a signature if
14869         it doesn't contain any type parameters.
14870
14871 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14872
14873         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
14874
14875 2005-12-14  Martin Baulig  <martin@ximian.com>
14876
14877         * class.c
14878         (mono_type_get_name_recurse): Don't return null for type
14879         parameters and open generic classes.
14880         (mono_class_setup_methods): Don't exclude generic instances.
14881         (mono_get_unique_iid): Use different IDs for different
14882         instantiations of the same generic type.
14883         (mono_class_setup_vtable): Only use setup_generic_vtable() for
14884         open generic instances; create a normal vtable for closed generic
14885         instances.
14886         (mono_class_setup_vtable_general): We're now also called for
14887         closed generic instances.
14888
14889         * reflection.c
14890         (mono_reflection_bind_generic_parameters): Correctly use
14891         mono_metadata_lookup_generic_inst() everywhere.
14892
14893 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
14894
14895         * object.c (mono_class_create_runtime_vtable): Call 
14896         mono_class_setup_vtable ().
14897
14898         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
14899         function.
14900         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
14901         #76959.
14902
14903         * loader.c (mono_loader_set_error_type_load): Print the type load
14904         warnings to the console so they are more visible to the user.
14905         (mono_loader_set_error_method_load): Ditto.
14906
14907         * reflection.c (ensure_runtime_vtable): Revert the last change as it
14908         is still broken.
14909         
14910         * reflection.c (ensure_runtime_vtable): Fix build.
14911
14912         * reflection.c (ensure_runtime_vtable): Disable an optimization which
14913         doesn't work in all cases.
14914
14915 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
14916
14917         * object.c (mono_array_new_full): Treat a single dimensional array
14918         with 0 lower bounds as an szarray. Fixes #76973.
14919
14920         * reflection.c (custom_attr_visible): Really fix this.
14921
14922 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
14923
14924         * reflection.c (custom_attr_visible): Allow nested public attributes
14925         as well.
14926
14927         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
14928         interface check.
14929
14930 2005-12-12  Raja R Harinath  <harinath@gmail.com>
14931
14932         * class.c (set_generic_param_owner): Delete.
14933         (mono_class_create_from_typedef): Don't set ->owner field of
14934         generic parameters to "param containers" of enclosing classes.
14935         * reflection.c (mono_reflection_initialize_generic_parameter):
14936         Likewise.
14937
14938 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
14939
14940         * reflection.c (custom_attr_visible): Fix build.
14941
14942 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
14943
14944         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
14945         private attributes.
14946         
14947         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
14948         handling of null parameter defaults.
14949
14950 2005-12-09  Raja R Harinath  <rharinath@novell.com>
14951
14952         * class.c (mono_class_from_generic_parameter): Don't set
14953         klass->generic_container.
14954         (my_mono_class_from_generic_parameter): Likewise.
14955
14956 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14957
14958         * reflection.c (load_public_key): Fix a warning.
14959         (method_encode_code): Fix unaligned accesses.
14960
14961 2005-12-07  Martin Baulig  <martin@ximian.com>
14962
14963         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
14964
14965         * reflection.c
14966         (write_generic_param_entry): Encode our custom attrs.
14967
14968         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
14969
14970 2005-12-07  Martin Baulig  <martin@ximian.com>
14971
14972         * reflection.c (encode_new_constraint): Removed; we don't use the
14973         `NewConstraintAttribute' anymore.
14974
14975 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14976
14977         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
14978         not fire a TypeResolve event when Assembly.GetType () is called.
14979
14980 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14981
14982         Beginning of support for nullable types in the runtime. Parts of
14983         this patch are from Martin.
14984
14985         * appdomain.c (MONO_CORLIB_VERSION): Bump
14986
14987         * domain.c (mono_init_internal): get the nullable type
14988
14989         * class.c (mono_class_is_nullable): New method
14990         (mono_class_get_nullable_param): New mehod
14991         (mono_class_create_generic): In types T? set cast_class to T
14992
14993         * class-internals.h (MonoDefaults): new nullable default class
14994         (mono_class_get_nullable_param, mono_class_get_nullable_param):
14995         new methods.
14996
14997 2005-12-05  Raja R Harinath  <rharinath@novell.com>
14998
14999         * metadata.c (select_container): New.  Refactor code to select the
15000         appropriate GenericContainer given the type of generic parameter
15001         we are looking for.
15002         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
15003         not a MonoGenericContext.  Use select_container.  Update parameters.
15004         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
15005         and MONO_TYPE_MVAR.
15006         (unwrap_arrays): Remove duplicate tests.
15007         (find_generic_param): Rename from 'has_same_context'.  Now walks a
15008         generic instantiated class to find any arguments that are generic
15009         parameters.
15010         (mono_type_create_from_typespec_full): Use find_generic_param to
15011         avoid evicting some generic instantiations from the typespec
15012         cache.
15013
15014 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
15015
15016         * reflection.c: fixed writing of doubles on ARM FPA.
15017
15018 2005-12-02  Robert Jordan  <robertj@gmx.net>
15019
15020         * icall.c: Fixed EventInfo.ReflectedType (#76829).
15021
15022 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15023
15024         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
15025         least on SUSE 10 they are not the same (on debian, they are just the
15026         same thing).
15027
15028 2005-12-01  Raja R Harinath  <rharinath@novell.com>
15029
15030         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
15031         DeclaringType for VARs and MVARs.
15032         * class.c (set_generic_param_owner): Fix initialization of owner
15033         fields.
15034
15035 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
15036
15037         * icall.c: fixed Enum.ToObject() to correctly convert the values.
15038
15039 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15040
15041         * threadpool.c: workaround for a bug that shows up on the Mac:
15042         select()+connect() on a blocking socket is not like it should
15043         be, so we proceed to connect() in that case, wasting the I/O
15044         threadpool thread until connect succeedes. Fixes bug #75436.
15045
15046 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15047
15048         * threadpool.c: fix typo when setting file descriptor states.
15049
15050 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15051
15052         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
15053         * metadata.c (mono_metadata_parse_method_signature_full): Don't
15054         create a temporary signature container.
15055         (mono_metadata_parse_generic_param): Update to changes.
15056         (mono_type_create_from_typespec_full): Update to changes.
15057         * loader.c (method_from_memberref): Don't use a
15058         MonoGenericContainer while parsing a memberref signature.
15059         (method_from_methodspec): Remove dead-store of the 'container'
15060         variable.  It's overwritten before use.
15061
15062         * metadata.c (mono_type_create_from_typespec_full): Make debugging
15063         checks tighter.
15064         (mono_metadata_parse_generic_param): Likewise.
15065         * loader.c (find_method_in_class): Does not need a
15066         MonoGenericContainer.  Use 'mono_method_signature' rather than
15067         'mono_method_signature_full'.
15068         (find_method, mono_get_method_constrained, method_from_memberref):
15069         Update to changes.
15070
15071         * metadata.c (mono_type_create_from_typespec_full): Ensure that
15072         owner-less generic-parameters are never evicted from the typespec
15073         cache.
15074
15075         * loader.c (method_from_memberref): Don't use the current context
15076         when parsing signatures.
15077         (method_from_methodspec, mono_get_method_from_token): Update to changes.
15078
15079         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
15080         side-effects in g_assert.
15081         * loader.c (mono_get_method_from_token): Resolve klass earlier so
15082         that we don't potentially lose information.
15083
15084 2005-11-26  Dick Porter  <dick@ximian.com>
15085
15086         * icall.c:
15087         * threads.c: icalls to implement basic (ie, not named)
15088         System.Threading.Semaphore.
15089
15090 2005-11-24  Dick Porter  <dick@ximian.com>
15091
15092         * process.c
15093         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
15094         Use GetProcessId() if it's available.
15095
15096 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
15097
15098         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
15099
15100 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15101             Ankit Jain  <jankit@novell.com>
15102
15103         * loader.c (mono_get_method_from_token): Initialize 'method' field
15104         of all generic parameters before parsing the signature.  Remove
15105         code that "fixed"-up MVAR references.
15106
15107 2005-11-23  Ankit Jain  <jankit@novell.com>
15108
15109         * metadata.c (mono_metadata_has_generic_params):
15110         (mono_metadata_load_generic_param_constraints):
15111         (mono_metadata_load_generic_params): Move duplicate code ...
15112         (mono_metadata_get_generic_param_row): ... here. Returns the
15113         first row-id in GenericParam table for a given owner (token).
15114         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
15115         prototype.
15116
15117 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15118             Ankit Jain  <jankit@novell.com>
15119
15120         * metadata.c (mono_metadata_class_equal): Pass signature_only when
15121         comparing VARs too.
15122         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
15123         type->data.generic_param only if the type is an MVAR.
15124         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
15125         leak owner-less VARs and MVARs into managed space.
15126
15127 2005-11-21  Martin Baulig  <martin@ximian.com>
15128
15129         * class-internals.h
15130         (MonoMethod): Moved the `generic_container' here from
15131         `MonoMethodNormal' since we now also need it for
15132         `MonoMethodPInvoke';
15133         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
15134         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
15135         an union containing both `MonoMethodNormal' and
15136         `MonoMethodPInvoke'.
15137
15138         * loader.c
15139         (mono_get_method_from_token): Allow implementing generic methods
15140         as interncalls.
15141
15142         * threads.c
15143         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
15144         icall.
15145
15146 2005-11-17  Dick Porter  <dick@ximian.com>
15147
15148         * icall.c: 
15149         * process.h: 
15150         * process.c: Split the Process Start_internal icall into
15151         ShellExecuteEx_internal and CreateProcess_internal, which are
15152         called depending on whether UseShellExecute is true.  Fixes bug
15153         76670.
15154
15155         * appdomain.c (MONO_CORLIB_VERSION): Incremented
15156
15157 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15158
15159         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
15160         'msize' parameters, use the information in 'mspec' instead.
15161         (emit_object_to_ptr_conv): Ditto.
15162
15163         * marshal.c (emit_struct_conv): Handle explicit layout structs with
15164         fields out of order. Fixes #76733.
15165
15166 2005-11-17  Ankit Jain  <jankit@novell.com>
15167
15168         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
15169
15170 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
15171
15172         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
15173           bug #76575.
15174
15175 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15176
15177         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
15178         for types with non-auto layout. Fixes #76717.
15179
15180 2005-11-16  Ankit Jain  <jankit@novell.com>
15181
15182         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
15183         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
15184         if generic_context is null.
15185           (mono_metadata_generic_param_equal): param->owner can be null.
15186           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
15187         null.
15188
15189 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15190
15191         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
15192         the correct value.
15193
15194 2005-11-15  Martin Baulig  <martin@ximian.com>
15195
15196         * object.c (set_value): Use mono_class_from_mono_type() instead of
15197         the hack for generic instances; fixes #76136.
15198
15199 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
15200
15201         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
15202         fields.
15203
15204         * image.c (load_metadata_ptrs): Initialize the new fields.
15205
15206         * reflection.c (create_dynamic_mono_image): Ditto.
15207
15208         * reflection.c (build_compressed_metadata): Use the new fields.
15209
15210         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
15211         icall.
15212
15213         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
15214         icall.
15215         
15216 2005-11-15  Ankit Jain  <jankit@novell.com>
15217             Raja R Harinath  <harinath@gmail.com>
15218
15219         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
15220         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
15221         new per-generic_container cache if the cached MonoType's context matches
15222         the current context.
15223           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
15224         to the expected context.
15225           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
15226
15227 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15228
15229         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
15230         we changed the signature of an icall.
15231         * icall.c: Modify to mono_double_ParseImpl return true/false 
15232         depending on the success, instead of throwing the exception. This will
15233         help us in Double.TryParse methods.
15234         
15235 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
15236
15237         * marshal.c (emit_marshal_object): Throw an exception when
15238         marshalling 'object' instead of crashing. Fixes #76696.
15239
15240 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15241
15242         * class-internals.h: Add prototype for mono_type_get_full_name ().
15243
15244 2005-11-11  Dick Porter  <dick@ximian.com>
15245
15246         * threads.c (mono_thread_manage): Make sure the main thread has
15247         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
15248
15249 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15250
15251         * loader.c (mono_loader_set_error_type_load): Log a warning to the
15252         console about the missing type.
15253         (mono_loader_set_error_method_load): Ditto.
15254
15255 2005-11-09  Miguel de Icaza  <miguel@novell.com>
15256
15257         * mono-config.c (mono_get_config_dir): Set the system defaults if
15258         none is specified.
15259
15260         * assembly.c (mono_set_dirs): New API entry point to set the
15261         assembly and the config directory in one call
15262
15263 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
15264
15265         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
15266         the ftnptr was created from a delegate in a domain other than the
15267         current domain. Fixes #75377.
15268
15269         * exception.h exception.c: Add mono_get_exception_not_supported ().
15270
15271 2005-11-08  Martin Baulig  <martin@ximian.com>
15272
15273         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
15274
15275 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
15276
15277         * security-manager.h: Added definitions to deal with strongname key 
15278         pairs bigger (and smaller) than 1024 bits.
15279         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
15280         adjust wrt the public key length being used.
15281
15282 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
15283
15284         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
15285           Windows build (r51396-51397).
15286
15287 2005-11-03  Martin Baulig  <martin@ximian.com>
15288
15289         * class.c (mono_class_setup_vtable_general): Also add generic
15290         methods to the vtable; fixes #76581.
15291
15292 2005-11-01  Miguel de Icaza  <miguel@novell.com>
15293
15294         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
15295         sure that we lookup GetString method from the System.Text.Encoding
15296         class, not the derived class or we get an empty method.
15297
15298         Fixed class #76612.
15299
15300 2005-10-25  Miguel de Icaza  <miguel@novell.com>
15301
15302         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
15303         if it has been previously set (embedders). 
15304
15305         Make mono_set_rootdir available also on Unix.
15306
15307 005-10-24  Robert Jordan  <robertj@gmx.net>
15308
15309         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
15310
15311 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15312
15313         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
15314         only calls which are made to native code use this flag.
15315
15316         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
15317
15318 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15319
15320         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
15321         Add support for FieldBuilders.
15322
15323 2005-10-29  Martin Baulig  <martin@ximian.com>
15324
15325         * mono-debug.c
15326         (mono_debug_using_mono_debugger): New public method; returns
15327         whether we're running inside the debugger.
15328
15329 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
15330
15331         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
15332         for Method/Constructor/FieldBuilders.
15333
15334 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15335
15336         * reflection.c (module_add_cattrs): Save custom attributes for global methods
15337         and fields as well.
15338
15339 2005-10-26  Martin Baulig  <martin@ximian.com>
15340
15341         * mono-debug-debugger.c
15342         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
15343
15344 2005-10-24  Raja R Harinath  <harinath@gmail.com>
15345
15346         * icall.c (base64_to_byte_array): Don't pass an out-of-range
15347         integer to isspace.
15348
15349 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15350
15351         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
15352         when passing valuetypes byref. Fixes #76502.
15353
15354 2005-10-19  Jackson Harper  <jackson@ximian.com>
15355
15356         * profiler.c: Don't put a . in front of types that are not in a
15357         namespace.
15358
15359 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15360
15361         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
15362
15363 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
15364
15365         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
15366         #76436.
15367         (mono_marshal_get_ldflda_wrapper): Fix a warning.
15368
15369 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15370
15371         * assembly.c metadata-internals.h icall.c: Define an additional
15372         parameter for mono_assembly_name_parse_full, so we can avoid creating
15373         S.R.AssemblyName.Version when no version info wasn't passed.
15374         
15375 2005-10-09  Miguel de Icaza  <miguel@novell.com>
15376
15377         * class.c (mono_type_get_full_name): Reimplement method that was
15378         removed. 
15379
15380         * image.c: Some docs
15381
15382 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15383
15384         * profiler.c (output_newobj_profile): Fix printing of Total memory
15385         on x86.
15386
15387 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15388
15389         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
15390
15391 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
15392
15393         * threads.c: remove debug output.
15394
15395 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15396
15397         * threads.c (mono_thread_manage): Fix crashes if more than 64
15398         threads need to be aborted. Hopefully fixes #75899.
15399
15400         * assembly.c (mono_stringify_assembly_name): New helper function.
15401
15402         * class.c: Use mono_stringify_assembly_name instead of the similar
15403         static function.
15404
15405         * assembly.h assembly.c: Add support for calling a postload search 
15406         hook if an assembly cannot be loaded.
15407
15408         * appdomain.c: Register new search hooks which call the AssemblyResolve
15409         events in AppDomain. Fixes #75231
15410
15411 2005-10-07  Martin Baulig  <martin@ximian.com>
15412
15413         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
15414         methods without debug info.
15415
15416 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15417
15418         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15419         wrappers.
15420
15421 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15422
15423         * file-io.c: now that we return symlinks, use lstat and, when the file
15424         is a symbolic link, stat, to get the file attributes. Also avoid the
15425         conversion to/from utf16/external.
15426
15427 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15428
15429         * class.c (mono_class_layout_fields): Compute klass->has_references
15430         correctly if an embedded valuetype is not yet initialized. Fixes
15431         #76331.
15432
15433 2005-10-04  Martin Baulig  <martin@ximian.com>
15434
15435         * metadata.c
15436         (mono_metadata_load_generic_param_constraints): New public
15437         function; splitted the constraints loading out from
15438         mono_metadata_load_generic_params().
15439
15440         * class.c (mono_class_create_from_typedef): Call
15441         mono_metadata_load_generic_param_constraints() after setting up
15442         the type and creating our parent; fixes #75329.
15443
15444 2005-10-04  Martin Baulig  <martin@ximian.com>
15445
15446         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15447         non-dynamic parent classes.
15448
15449 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15450
15451         * file-io.c : win32 build fix (ETXTBSY seems not found).
15452
15453 2005-10-04  Martin Baulig  <martin@ximian.com>
15454
15455         * reflection.c
15456         (mono_image_get_methodspec_token): Make the cache actually work;
15457         fixes #75974.
15458
15459 2005-10-04  Martin Baulig  <martin@ximian.com>
15460
15461         * class.c (mono_class_name_from_token): Removed the unneccessary
15462         `MonoGenericContext *' argument.
15463
15464 2005-10-04  Martin Baulig  <martin@ximian.com>
15465
15466         * loader.c
15467         (method_from_methodspec): Make the caching work again; fixes the
15468         performance regression from #76262.
15469
15470 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15471
15472         * file-io.c:
15473         * file-io.h:
15474         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15475         GetFileSystemEntries that performs the same work but without going
15476         into io-layer, locking, etc.
15477
15478 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15479
15480         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15481         ThreadState_Stopped as well. Fixes #76047.
15482
15483 2005-09-29  Martin Baulig  <martin@ximian.com>
15484
15485         * class.c
15486         (inflate_generic_context): If the new context has a `gmethod', set
15487         its `container' that that gmethod's `container'.
15488
15489         * metadata.c
15490         (mono_metadata_parse_generic_param): Simplify things;
15491         `generic_container = generic_context->container;' is just fine.
15492
15493         * loader.c (method_from_methodspec): Code cleanups.
15494
15495 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15496
15497         * decimal.c: fix warning (and let gcc generate correct
15498         code on ARM with optimizations).
15499
15500 2005-09-28  Martin Baulig  <martin@ximian.com>
15501
15502         * loader.c
15503         (method_from_memberref): Added `MonoGenericContext *class_context'
15504         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15505         (method_from_methodspec): If we're a memberref, use the enclosing
15506         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15507
15508 2005-09-28  Martin Baulig  <martin@ximian.com>
15509
15510         * object.c (mono_runtime_invoke_array): Added support for
15511         MONO_TYPE_GENERICINST; fixes #75917.
15512
15513 2005-09-27  Martin Baulig  <martin@ximian.com>
15514
15515         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15516         `k->byval_arg.type' to determine the actual type.
15517
15518         * loader.c (method_from_methodspec): Removed some hacks.
15519
15520 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15521
15522         * class-internals.h (mono_field_is_deleted): Do the test for
15523         rtspecialname before we check the actual name of the field. This
15524         prevents us from dereferencing a pointer into the string table,
15525         saving us from accessing a few pages
15526
15527         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15528         macros. This will allow a deadlock debugger to easily be plugged
15529         in.
15530
15531 2005-09-27  Martin Baulig  <martin@ximian.com>
15532
15533         * loader.c (method_from_methodspec): Create a "signature"
15534         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15535
15536 2005-09-27  Martin Baulig  <martin@ximian.com>
15537
15538         * class.c
15539         (inflate_generic_class): Correctly set the new context's
15540         container.
15541
15542         * loader.c
15543         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15544         instead of a `MonoGenericContext *'.
15545         (mono_method_signature_full): Take a `MonoGenericContainer *'
15546         instead of a `MonoGenericContext *'.
15547
15548         * metadata.c
15549         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15550         instead of a `MonoGenericContext *'.
15551         (mono_metadata_parse_method_signature_full): Likewise.
15552
15553 2005-09-26  Martin Baulig  <martin@ximian.com>
15554
15555         * class.c
15556         (mono_class_from_generic_parameter): Set `klass->generic_container'
15557         (mono_class_from_generic_parameter): Likewise.
15558         (mono_bounded_array_class_get): We inherit the generic container
15559         from the element class.
15560
15561         * loader.c
15562         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15563         argument rather than computing it here.
15564         (method_from_memberref): Correctly set the generic context before
15565         parsing the signature.  Fixes #75681.
15566
15567 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15568
15569         * object.c (mono_class_has_special_static_fields): Fix warnings.
15570
15571 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15572
15573         * assembly.c: Add parse_public_key function, to
15574         par the public keys. Also added mono_assembly_name_parse_full,
15575         to define it the parsed key should be freed or not.
15576         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15577         to parse a long format assembly name.
15578         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15579         private, since calling it to preserve the key requires
15580         freeing it manually.
15581         
15582 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15583
15584         * locales.c : removed HAVE_ICU part.
15585
15586 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15587
15588         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15589         field_is_special_static if the klass has no special static fields.
15590
15591         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15592         (MonoCachedClassInfo): Likewise.
15593
15594         * object.c (mono_class_has_special_static_fields): New helper function.
15595
15596 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15597
15598         * class.c (mono_class_create_from_typedef): Don't call 
15599         interfaces_from_typedef_full for enums.
15600         (mono_class_create_from_typedef): Compute the base types of enums directly
15601         without calling mono_class_setup_fields ().
15602         (mono_class_find_enum_basetype): New helper function.
15603
15604         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15605         one place inside the string heap.
15606         
15607 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15608
15609         * class.c: locking fixes, code cleanups, some docs added.
15610         Allocate some data structures in the image mempool.
15611
15612 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15613
15614         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15615         the example code.
15616         
15617 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15618
15619         * class-internals.h, class.c, reflection.c: reduce memory taken by
15620         MonoClass.
15621
15622 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15623
15624         * metadata.c, metadata.h, loader.h: documentation updates, code and
15625         API cleanups.
15626
15627 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15628
15629         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15630         the example code.
15631
15632         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15633         page faults caused by the runtime while reading metadata.
15634
15635 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15636
15637         * socket-io.c: the field names were changed 3 months ago and no one
15638         realized until bug #76077 got filed!
15639
15640 2005-09-20  Martin Baulig  <martin@ximian.com>
15641
15642         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15643
15644 2005-09-20  Martin Baulig  <martin@ximian.com>
15645
15646         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15647         write the rank into the class entry.
15648
15649 2005-09-20  Martin Baulig  <martin@ximian.com>
15650
15651         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15652
15653 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15654
15655         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15656
15657         * icall.c (custom_attrs_defined_internal): New icall.
15658
15659         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15660         function.
15661         (mono_custom_attrs_construct_by_type): New helper function.
15662
15663 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15664
15665         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15666         terminate the resulting string. Fixes #76123.
15667
15668 2005-09-16  Martin Baulig  <martin@ximian.com>
15669
15670         * mono-debug.c
15671         (mono_debug_add_method): Ignore inflated methods for the moment.
15672
15673 2005-09-14  Martin Baulig  <martin@ximian.com>
15674
15675         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15676
15677 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15678
15679         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15680         return a success/failure indication.
15681         (mono_metadata_interfaces_from_typedef_full): Ditto.
15682         (get_constraints): Ditto.
15683
15684 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15685
15686         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15687         
15688         * marshal.c (emit_marshal_array): Add support for returning string
15689         arrays from delegates. Fixes #76063.
15690
15691         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15692
15693 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15694
15695         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15696         icall.
15697
15698 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15699
15700         * reflection.c icall.c: Fix after mono_get_exception_type_load
15701         signature change.
15702
15703         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15704         (mono_assembly_load_reference): Use the new helper.
15705
15706         * class-internals.h (MonoLoaderError): New structure containing 
15707         information about type loading errors.
15708
15709         * class-internals.h loader.c: Add APIs to store per-thread loader
15710         error information.
15711
15712         * loader.c class.c: Set the loader error if needed.
15713
15714         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15715
15716 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15717
15718         * decimal.c: fixed to handle the broken ARM fp format.
15719
15720 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15721
15722         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15723         broken.
15724
15725 2005-09-06  Martin Baulig  <martin@ximian.com>
15726
15727         * domain.c (supported_runtimes): Added v2.0.50727.
15728
15729 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15730
15731         * culture-info.h: reduce the size of some structures.
15732
15733 2005-09-05  Martin Baulig  <martin@ximian.com>
15734
15735         Reflect latest API changes in the August CTP.
15736
15737         * icall.c
15738         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
15739         ("MonoType.HasGenericArguments"): Removed.
15740         ("MonoMethod.BindGenericParameters"): Renamed to
15741         "MakeGenericMethod".
15742         ("MethodBuilder.BindGenericParameters"): Renamed to
15743         "MakeGenericMethod".    
15744
15745 2005-09-05  Martin Baulig  <martin@ximian.com>
15746
15747         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
15748
15749 2005-09-05  Martin Baulig  <martin@ximian.com>
15750
15751         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15752
15753         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
15754         generic_container is non-NULL.
15755
15756 2005-09-05  Martin Baulig  <martin@ximian.com>
15757
15758         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15759
15760         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
15761
15762 2005-08-29  Michal Moskal  <malekith@nemerle.org>
15763
15764         * reflection.c (encode_locals,
15765         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
15766         for large generic types.
15767
15768 2005-09-05  Martin Baulig  <martin@ximian.com>
15769
15770         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15771
15772         * class.c (mono_dup_array_type): New public method.
15773         (mono_metadata_signature_deep_dup): New public method.
15774         (dup_type): Correctly duplicate array and function types.
15775
15776 2005-09-05  Martin Baulig  <martin@ximian.com>
15777
15778         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15779
15780         * reflection.c (get_default_param_value_blobs): Handle generic types
15781         and generic methods.
15782
15783 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
15784
15785         * class.c: Fixed error reporting (method/class were inversed) for 
15786         inheritance demands.
15787         * security-manager.c|h: Added the AppDomain when calling the managed
15788         System.Security.SecurityManager.InheritanceDemand method.
15789
15790 2005-09-01  Raja R Harinath  <rharinath@novell.com>
15791
15792         * reflection.c (encode_marshal_blob): 'marshaltype' and
15793         'marshaltyperef' are alternate sources for the custom marshaler
15794         name.
15795
15796 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
15797
15798         * class.c: fix creation of array classes with rank == 1
15799         (patch by Ankit Jain <jankit@novell.com>).
15800
15801 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
15802
15803         * object.c: fix check for creating the bound data for arrays vs
15804         szarrays.
15805
15806 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15807
15808         * object.c: configuration file name is now based on the executable name,
15809         not the image name. Fixes bug #75931.
15810
15811 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15812
15813         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
15814         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
15815
15816 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15817
15818         * rand.c: Use wincrypt.h instead of WinCrypt.h.
15819
15820 2005-08-24  Ankit Jain  <jankit@novell.com>
15821             Raja R Harinath  <rharinath@novell.com>
15822
15823         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
15824           called by it recursively.
15825           (mono_class_init): Remove special case in pending_init handling, since it's
15826           superseded by the fix to mono_class_from_typeref.
15827
15828 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15829
15830         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
15831         BROKEN_THREAD_START stuff.
15832
15833 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15834
15835         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
15836         trampoline.
15837
15838         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
15839         
15840         * object.c (mono_delegate_ctor): Replace the original function address with
15841         a delegate trampoline.
15842
15843 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
15844
15845         * icall.c: add boolean argument to base64_to_byte_array and 
15846         InternalFromBase64String to control whether a whitespace-only string
15847         is allowed (or should casue a FormatException to be thrown). We need
15848         this as the behavior has changed between MS.NET 1.x and 2.0, and we
15849         to match the MS behaviour in both profiles.
15850         * appdomain.c: Bump corlib version.
15851
15852 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15853
15854         This patch implements a big portion of publisher policy
15855         support, used to bind assembly versions and redirect
15856         one assembly from version A to version B.
15857
15858         * assembly.c:
15859         New GSList loaded_assembly_bindings, for storing the cached
15860         assembly bindings.
15861         (assembly_binding_maps_name): New static function for checking if a 
15862         assembly binding information maps an assembly name.
15863         (mono_assembly_binding_info_free): New function for freeing
15864         assembly binding information resources.
15865         (get_publisher_policy_info): New static function for retrieving 
15866         assembly binding information from a MonoImage.
15867         (compare_versions): New static function for comparing an assembly
15868         binding information data and the version of an assembly name.
15869         (check_policy_versions): New static function for checking if an
15870         assembly binding info mapping an assembly name is valid for it.
15871         (mono_assembly_load_publisher_policy): New static function for
15872         loading the 'policy.major.minor.MyAssembly' image for an assembly
15873         with an assembly name 'aname'.
15874         (mono_assembly_bind_version): New static function for updating
15875         assembly redirection.
15876         (mono_assembly_apply_binding): New static function for applying
15877         assembly binding.
15878         (search_binding_loaded): New static function for searching 
15879         loaded assembly binding infos in the cache domain.
15880         (mono_assembly_load_full): Don't apply assembly binding for
15881         reflection only assemblies.
15882
15883         * metadata-internals.h: Add MonoAssemblyBindingInfo,
15884         which contains information about assembly binding. Also
15885         declare signature for mono_config_parse_publisher_policy ()
15886         function, used to retrieve pub policy info.
15887         
15888         * mono-config.c:
15889         (publisher_policy_start): New static function used to parse publisher 
15890         policy config files.
15891         (publisher_policy_parser): New static MonoParseHandler containing 
15892         the functions used when parsing config files.
15893         (mono_config_parse_publisher_policy): New function for parsing
15894         publisher policy files.
15895         
15896 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15897
15898         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
15899
15900         * marshal.c (mono_delegate_free_ftnptr): Ditto.
15901
15902         * object.c (mono_get_addr_from_ftnptr): New helper function.
15903
15904         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
15905
15906         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15907
15908 2005-08-19  Dick Porter  <dick@ximian.com>
15909
15910         * threads.c, threads.h, appdomain.c, appdomain.h,
15911         profiler-private.h, monitor.c, object.c, object-internals.h,
15912         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
15913         store the thread ID, so it can hold a 64 bit value if needed.
15914
15915 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15916
15917         * reflection.c (mono_reflection_create_dynamic_method): Store the
15918         handle class into the method references as well so ldtoken works in
15919         dynamic methods.
15920
15921         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
15922         types.
15923
15924 2005-08-19  Ankit Jain <jankit@novell.com>
15925
15926         Fix #75847.
15927         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
15928           here rather than using the method signature of a arbitrary function
15929           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
15930           two arguments.
15931           Hack done with Harinath.
15932
15933 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15934
15935         * threadpool.c: disable printing stack traces when we get a exception
15936         in a threadpool thread. I need to do more testing to figure out which
15937         cases actually print this. Fixes bug #75828.
15938
15939 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15940
15941         * icall.c: there might be ignored whitespace after the last '='. This
15942         fixes length computation and bug #75840.
15943
15944 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
15945
15946         * assembly.c (mono_assembly_load_full): Consider .exe extension as
15947         well. Fixes #75809.
15948
15949         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
15950         #75784.
15951         
15952         * reflection.c (create_custom_attr_data): Ditto.
15953
15954 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
15955
15956         * locales.c, culture-info.h : removed RegionLCIDMap.
15957         * culture-info-tables.h : regenerated.
15958
15959 2005-08-16  Martin Baulig  <martin@ximian.com>
15960
15961         * class.c (mono_type_get_name_recurse): Small fix.
15962
15963 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
15964
15965         * locales.c : indentation fixie.
15966
15967 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
15968
15969         * object-internals.h,
15970           locales.h,
15971           locales.c,
15972           culture-info.h,
15973           icall.c : added RegionInfo table support.
15974         * culture-info-table.h : regenerated for region support.
15975
15976 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
15977
15978         * reflection.c (resolve_object): handle all kinds of MonoMethod
15979         including generic ones
15980
15981 2005-08-12  Ankit Jain <jankit@novell.com>
15982
15983         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
15984           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
15985
15986 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
15987
15988         * process.c: Don't close a thread handle when it's NULL. This is a
15989         workaround for bug #75733.
15990
15991 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15992
15993         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
15994
15995 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
15996
15997         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
15998
15999 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16000
16001         * threadpool.c: if a work item in the thread pool has a callback that
16002         catches a exception, don't propagate it after invoking the callback.
16003         Fixes bug #75336.
16004
16005 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16006
16007         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
16008
16009         * class-internals.h (MonoCachedClassInfo): Add some new fields.
16010
16011         * class.c (mono_class_init): Load field info lazily in the AOT case.    
16012
16013         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
16014
16015 2005-08-03  Ankit Jain  <jankit@novell.com>
16016
16017         Fix #75683.
16018         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
16019           PInvoke calling convention is 0.
16020
16021 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
16022
16023         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
16024         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
16025
16026 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
16027
16028         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
16029         to handle threads not started by the GC (patch by Michael Meeks
16030         <michael.meeks@novell.com>).
16031
16032 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
16033
16034         * reflection.c: Make buffer used in emitting types larger for some
16035         big generic types (patch by Michal Moskal).
16036
16037 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16038
16039         * mono-debug.c: Fix some (not all) alignment problems.
16040
16041 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16042
16043         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
16044         Invoke mono_image_load_from_data_full passing the refonly
16045         parameter.
16046
16047         * assembly.c
16048         (mono_assembly_open_from_bundle): Add the refonly argument, 
16049         in order to pass it to other methods it calls to.
16050         (do_mono_assembly_open): Add the refonly argument, in order 
16051         to pass it to other methods it calls to.
16052         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
16053         the refonly parameter to it.
16054
16055         * image.c: Add loaded_images_refonly_hash and
16056         loaded_images_refonly_guid_hash to cache the reflection
16057         only loaded images.
16058         (mono_images_init): Initialize the hash tables used for
16059         caching the reflection only images.
16060         (load_modules): Invoke mono_image_open_full passing the refonly
16061         parameter to load the modules the correct way.
16062         (build_guid_table): Add the refonly argument, to re-build the 
16063         correct hash table.
16064         (do_mono_image_open): Added the refonly argument, in order to
16065         define it for the loaded image.
16066         (mono_image_loaded_full): New function, which receives an
16067         additional parameter to look for the image in the refonly or
16068         non-refonly section.
16069         (mono_image_loaded): Updated, using mono_image_loaded_full.
16070         (mono_image_loaded_by_guid_full): The same case that happens
16071         with mono_image_loaded_full.
16072         (mono_image_loaded_by_guid): Likewise.
16073         (register_image): Use the ref_only variable inside MonoImage
16074         to decide in which hash table store the current image.
16075         (mono_image_open_from_data_full): Rename
16076         mono_image_open_from_data to mono_image_open_from_data_full,
16077         adding the refonly argument, to define the ref_only variable 
16078         inside MonoImage.
16079         (mono_image_open_from_data): Return 
16080         mono_image_open_from_data_full.
16081         (mono_image_open_full): Rename mono_image_open to
16082         mono_image_open_full, receiving the new refonly argument,
16083         to pass it to inner methods.
16084         (mono_pe_file_open): Update this function, to open
16085         a MonoImage as a non-refonly image.
16086         (mono_image_close): Use the refonly variable inside
16087         MonoImage to remove the image from the correct caches.
16088
16089         * image.h: Add the signatures of mono_image_open_full,
16090         mono_image_open_from_data_full, mono_image_loaded_full,
16091         mono_image_loaded_by_guid_full.
16092
16093         * metadata-internals.h: Add the ref_only field to 
16094         MonoImage.
16095         
16096 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16097
16098         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
16099         Fix the last behavior, which used to load the assemblies and
16100         extract MonoReflectionAssemblyName information, instead of
16101         extract it from the metadata tables. Needed for Reflection
16102         Only assemblies.
16103         
16104 2005-07-29  Martin Baulig  <martin@ximian.com>
16105
16106         * mono-debug-debugger.c
16107         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
16108         not initialized.
16109
16110         * mono-debug.c
16111         (mono_debug_address_from_il_offset): Check whether we have
16112         debugging support before attempting to take the lock.
16113         (mono_debug_source_location_from_address): Likewise.
16114         (mono_debug_source_location_from_il_offset): Likewise.
16115         (mono_debug_il_offset_from_address): Likewise.
16116         (mono_debug_address_from_il_offset): Likewise.
16117
16118 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
16119
16120         * class.c (mono_class_from_name_case): Add support for dynamic images.
16121         Fixes #75650.
16122
16123         * object.c (mono_class_compute_gc_descriptor): Add a workaround
16124         for #75479.
16125
16126 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16127         
16128         * reflection.c (mono_method_get_object): Fix warning.
16129
16130 2005-07-28  Martin Baulig  <martin@ximian.com>
16131
16132         * mono-debug.c
16133         (mono_debug_add_wrapper): Also write the wrapper type.
16134
16135 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16136
16137         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
16138         
16139         * class.c (mono_class_init): Avoid reading nested classes if the AOT
16140         data indicates the class has none.
16141
16142 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
16143
16144         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
16145         loader lock with the debugger lock. Prevents deadlocks for beagle.
16146
16147         Beagle can now run on an smp box for a weekend without any
16148         issues. Woohoo!
16149
16150 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
16153         in a module. Fixes #75629.
16154
16155 2005-07-26  Martin Baulig  <martin@ximian.com>
16156
16157         * mono-debug.c (mono_debug_add_wrapper): New static method.
16158         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
16159         interncall or a wrapper.
16160
16161         * mono-debug.h (MonoDebugWrapperData): New public typedef.
16162         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
16163         (MONO_DEBUGGER_VERSION): Bump to 51.
16164
16165         * mono-debug-debugger.c
16166         (mono_debugger_add_type): Removed this empty function.
16167         (mono_debugger_add_method): Likewise.
16168
16169 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16170
16171         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
16172         before accessing method->slot.
16173
16174 2005-07-21  Jb Evain  <jbevain@gmail.com>
16175
16176         * reflection.c (method_encode_clauses/class): Handle filters clauses.
16177         Fixes #75010.
16178
16179 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16180
16181         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
16182         #75587.
16183
16184 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16185
16186         * image.h image.c: Add mono_image_get_guid () API function.
16187
16188 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
16189
16190         There were issues when multiple threads tried to load
16191         assemblies. A deadlock was created between assemblies_mutex and
16192         mono_domain_assemblies_lock. This fixes the issue by making the
16193         assembly ref counting be lock free. See bug 75586.
16194         
16195         * image.c (mono_image_close): The add ref function here was using
16196         Interlocked operations while the unref was using a mutex and a
16197         --. I don't think this was ever a bug that would be exposed in a
16198         non-pendantic way (ie, by an embedder doing a ref on one thread
16199         and an unref on another), but for the sake of correctness, this is
16200         now Interlocked.
16201
16202         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
16203         (mono_assembly_load_reference): Call mono_assembly_addref rather
16204         than touching the refcount ourselves.
16205         (mono_assembly_close): Use InterlockedDecrement to unref the
16206         assembly. Don't acquire the lock unless it is actually needed.
16207
16208 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16209
16210         * class.c (mono_class_layout_fields): Fix calculation of has_references
16211         for generic types.
16212
16213 2005-07-12  Martin Baulig  <martin@ximian.com>
16214
16215         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16216
16217         * metadata.c
16218         (mono_type_hash): Provide better hashing for generic instances.
16219         (mono_generic_inst_hash): Improve hashing.
16220         (mono_generic_class_hash): Likewise.
16221
16222         * reflection.c (mymono_metadata_type_hash): Improve hashing for
16223         generic instances.
16224
16225 2005-07-12  Martin Baulig  <martin@ximian.com>
16226
16227         * reflection.c (mono_reflection_create_runtime_class): Remove the
16228         hack for generic type definitions and non-`Run' assemblies.
16229         (mono_reflection_bind_generic_parameters): Also use
16230         `klass->wastypebuilder' to check for TypeBuilders.
16231
16232 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16233
16234         * class.c (mono_class_layout_fields): Fix calculation of has_references
16235         for generic types.
16236
16237         * class.c (inflate_generic_class): Fix a leak.
16238         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
16239         for generic types.
16240
16241 2005-07-11  Martin Baulig  <martin@ximian.com>
16242
16243         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
16244         on error.
16245
16246 2005-07-11  Martin Baulig  <martin@ximian.com>
16247
16248         * loader.c (find_method): Also lookup in
16249         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
16250
16251 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16252
16253         * appdomain.c (mono_domain_unload): Don't free the error message
16254         before passing it to mono_get_exception_...
16255
16256         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
16257         
16258 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
16259
16260         * threads.c: try to better guess an available RT signal (bug #75387).
16261
16262 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16263
16264         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
16265         and CACHE_OBJECT.
16266
16267 2005-07-07  Martin Baulig  <martin@ximian.com>
16268
16269         * class.c (mono_type_get_name_full): Return NULL for
16270         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
16271         fixes #75408.
16272
16273 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16274
16275         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
16276         exit the appdomain as well being aborted.
16277
16278         * threadpool.c: Create all threadpool threads inside the root appdomain, and
16279         change back to the root domain after calling managed code. This enables
16280         appdomains using threadpools to be unloaded.
16281
16282 2005-07-07  Martin Baulig  <martin@ximian.com>
16283
16284         * class-internals.h
16285         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
16286         into `MonoDynamicGenericClass' since we only need it for dynamic
16287         types.
16288
16289         * reflection.c (mono_class_bind_generic_parameters): We don't need
16290         to compute the `parent' here.
16291
16292 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
16293
16294         * culture-info-table.h : regenerated.
16295
16296 2005-07-06  Martin Baulig  <martin@ximian.com>
16297
16298         * icall.c
16299         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
16300
16301         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
16302
16303 2005-07-06  Martin Baulig  <martin@ximian.com>
16304
16305         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
16306         we're doing a signature-only comparision; fixes #74945.
16307
16308 2005-07-06  Martin Baulig  <martin@ximian.com>
16309
16310         * class-internals.h (MonoGenericClass): Moved some things out into
16311         a new `MonoInflatedGenericClass' type.  
16312         (MonoInflatedGenericClass): New type; the `klass' of a
16313         `MonoGenericClass' is now computed lazyly in
16314         mono_get_inflated_generic_class().      
16315
16316         * class.c (mono_get_inflated_generic_class): New public function.
16317         (mono_class_inflate_generic_method): Removed the unused
16318         `MonoClass *' argument.
16319         (setup_generic_vtable): Don't call mono_get_inflated_method() on
16320         all the methods.
16321         (mono_class_create_generic): Make this static and merge it with
16322         mono_class_create_generic_2(); we're now called automatically from
16323         mono_get_inflated_generic_class().
16324
16325         * loader.c (mono_method_signature): Call
16326         mono_get_inflated_method() here.
16327
16328 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
16329
16330         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
16331         type of fields with RVA.
16332
16333         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
16334         for this pseudo class.
16335         (my_mono_class_from_generic_parameter): Likewise.
16336         (mono_class_init): Allow interfaces to have cctors.
16337
16338 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16339
16340         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
16341         lazily for AOT methods.
16342
16343 2005-07-05  Martin Baulig  <martin@ximian.com>
16344
16345         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
16346         returns FALSE for a successful match, not TRUE.
16347
16348 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16349
16350         * loader.c (mono_method_get_index): Optimize this a bit.
16351
16352 2005-07-04  Martin Baulig  <martin@ximian.com>
16353
16354         * class.c
16355         (class_compute_field_layout): Move the check for generic type
16356         definitions into mono_class_layout_fields().  Fixes #74684.
16357         (mono_class_from_generic_parameter): Correctly compute
16358         `klass->parent'; fixes #75457.
16359
16360         * reflection.c (register_assembly, register_module): Make sure
16361         `domain->rejobject_hash' is already created.
16362
16363 2005-07-02  Martin Baulig  <martin@ximian.com>
16364
16365         * class-internals.h
16366         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
16367         `MonoDynamicGenericClass'.      
16368
16369 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
16370
16371         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
16372         returned by a field getter is null, since null is a valid value.
16373
16374 2005-07-01  Martin Baulig  <martin@ximian.com>
16375
16376         * reflection.c (mono_reflection_generic_class_initialize): Update
16377         the `dgclass->fields [i].parent' to the correct class.
16378         (mono_image_get_fieldref_token): Use the declaring type, not the
16379         reflected type.
16380
16381 2005-07-01  Martin Baulig  <martin@ximian.com>
16382
16383         * loader.c (find_method): Also look in the interfaces; fixes #75429.
16384
16385 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
16386
16387         * threads.c (thread_cleanup): assert that thread != NULL
16388         (wait_for_tids_or_state_change): We were using the wrong variable
16389         when accessing wait->threads. `i' was always out of the bounds of
16390         the array.
16391
16392 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16393
16394         * loader.c: map user32 and kernel32 to libMonoSupportW
16395
16396 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16397
16398         * appdomain.c (unload_thread_main): Mark this as WINAPI.
16399
16400 2005-06-28  Martin Baulig  <martin@ximian.com>
16401
16402         * loader.c (method_from_methodspec): Fix #75334.
16403
16404 2005-06-28  Martin Baulig  <martin@ximian.com>
16405
16406         Fix #74953 - Arrays now implement the generic IList<T> interface
16407         on the 2.0 platform.
16408
16409         * class-internals.h (MonoDefaults): Added `generic_array_class'.
16410
16411         * reflection.c (mono_class_bind_generic_parameters): New public
16412         function; similar to mono_reflection_bind_generic_parameters(),
16413         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
16414
16415         * domain.c (mono_init_internal): Try to initialize.
16416         `mono_defaults.generic_array_class' here; this'll only succeed if
16417         we're using the 2.0 corlib.
16418
16419         * icall.c
16420         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16421         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16422         (mono_lookup_internal_call): Added support for nested classes.
16423
16424         * loader.c
16425         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16426         we're an interncall and have generic arguments.
16427
16428         * class.c
16429         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16430         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16431         instance of System.Array.InternalArray<T> for arrays, so they
16432         implement the generic IList<T> interface.
16433
16434 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16435
16436         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16437         (chastamar@yahoo.com). Fixes #75374.    
16438
16439 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16440
16441         * culture-info-table.h: regenerated.
16442
16443 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16444
16445         * icall.c: handle spaces correctly for base64 strings.
16446
16447 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16448
16449         * *.c: Kill some warnings.
16450
16451 2005-06-23  Duncan Mak  <duncan@novell.com>
16452
16453         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16454         that this builds on Solaris 10 (x86).
16455
16456 2005-06-23  Martin Baulig  <martin@ximian.com>
16457
16458         * class.c
16459         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16460         generic type definitions.
16461
16462 2005-06-23  Martin Baulig  <martin@ximian.com>
16463
16464         Fix #75331.
16465
16466         * metadata.c (mono_class_get_overrides): Renamed to
16467         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16468         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16469         pass it to mono_get_method_full().
16470
16471 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16472
16473         * reflection.c (mono_reflection_create_runtime_class): take the
16474         mono_domain_lock in this method. Prevents deadlocks
16475
16476 2005-06-22  Martin Baulig  <martin@ximian.com>
16477
16478         * loader.c (method_from_methodspec): Fix #75330.
16479
16480 2005-06-22  Martin Baulig  <martin@ximian.com>
16481
16482         * reflection.c (type_get_qualified_name): Use
16483         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16484         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16485         argument; use it if we don't have an assembly name.
16486
16487 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16488
16489         * object.c: In mono_message_init, set "copy out" flag for in
16490         parameters with the [Out] flag.
16491
16492 2005-06-21  Martin Baulig  <martin@ximian.com>
16493
16494         * class.c
16495         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16496         and MONO_TYPE_PTR.
16497
16498 2005-06-21  Martin Baulig  <martin@ximian.com>
16499
16500         * class.c (mono_class_init): Don't initialize `class->fields' for
16501         generic instances since they're initialized again in
16502         compute_field_layout(). 
16503         (compute_field_layout): Set the field's `generic_info' here; fix
16504         #75320. 
16505
16506 2005-06-21  Martin Baulig  <martin@ximian.com>
16507
16508         * class-internals.h
16509         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16510
16511         * metadata.c (mono_metadata_generic_method_equal): Also
16512         distinguish the `generic_class'; fixes #75334.
16513
16514 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16515
16516         * domain.c:
16517         * appdomain.c:
16518         * domain-internals.h:
16519         * reflection.c: 'domain_assemblies' field is now protected by its own
16520         lock. Don't call into managed code to run the AssemblyLoad event if we
16521         now there are no registered delegates for it.
16522
16523 2005-06-20  Martin Baulig  <martin@ximian.com>
16524
16525         * class.c (mono_class_is_assignable_from): Use a custom version of
16526         mono_class_has_parent() to make things work for generic instances;
16527         fix #75300.
16528
16529 2005-06-20  Martin Baulig  <martin@ximian.com>
16530
16531         * loader.c (method_from_methodspec): Apply a patch from
16532         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16533
16534 2005-06-20  Martin Baulig  <martin@ximian.com>
16535
16536         * class.c (mono_class_init): Reverted Zoltan's last change; it
16537         breaks generics.
16538
16539 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16540
16541         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16542
16543 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16544
16545         * socket-io.c: fix the index in the socket array for writable/error
16546         sockets. Fixes bug #75306.
16547
16548 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16549
16550         * class.c (mono_class_init): Allow interfaces to have static ctors.
16551
16552 2005-06-17  Martin Baulig  <martin@ximian.com>
16553
16554         * loader.c (method_from_methodspec): Use `context->container' when
16555         parsing the `gmethod->inst'.
16556
16557 2005-06-17  Martin Baulig  <martin@ximian.com>
16558
16559         * class.c (mono_type_get_name_recurse): Don't add the assembly
16560         name for type arguments.
16561
16562 2005-06-15  Martin Baulig  <martin@ximian.com>
16563
16564         * reflection.c (mono_image_get_inflated_method_token): Encode
16565         correct klass; fixes #75260.
16566
16567 2005-06-13 Michal Moskal <malekith@nemerle.org>
16568
16569         * icall.c: Make GetCorrespondingMethod/Constructor take
16570         MonoReflectionMethod method not MonoMethod. Removed
16571         MonoType.GetCorrespondingField, and make
16572         MonoGenericType.GetCorrespondingField take name not
16573         MonoClassField.
16574
16575 2005-06-13  Michal Moskal <malekith@nemerle.org>
16576
16577         * reflection.c (field_encode_signature, encode_locals):
16578          Make sizes of buffers for types larger (for big generic types).
16579          (create_generic_typespec,
16580          mono_reflection_sighelper_get_signature_local,
16581          mono_reflection_sighelper_get_signature_field):
16582          Add asserts for too small buffers.
16583
16584 2005-06-15  Martin Baulig  <martin@ximian.com>
16585
16586         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16587         if our parent is not a dynamic type.
16588
16589 2005-06-15  Martin Baulig  <martin@ximian.com>
16590
16591         * class-internals.h (MonoTypeNameFormat): New enum.
16592
16593         * class.c
16594         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16595         (mono_type_get_full_name): Removed.
16596         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16597         argument instead of the boolean's.
16598
16599         * icall.c (ves_icall_System_MonoType_getFullName):
16600         Added `gboolean assembly_qualified'.    
16601
16602         * reflection.h
16603         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16604
16605         * reflection.c (mono_reflection_parse_type): Parse the new type
16606         name format.
16607
16608 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16609
16610         * icall.c: no need to convert from utf16 to utf8 and then back again
16611         after the call to GetLogicalDrives.
16612
16613 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16614
16615         * icall.c: frombase64. Fix problems exposed by new tests.
16616
16617 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16618
16619         * icall.c: added internal calls for converting char [] and strings in
16620         base64 into byte [].
16621
16622 2005-06-10  Martin Baulig  <martin@ximian.com>
16623
16624         * class.c (mono_class_create_generic_2): Read the nested classes
16625         from the metadata rather than from `gklass->nested_classes' since
16626         `gklass' might not be initialized yet.
16627
16628 2005-06-09  Duncan Mak  <duncan@novell.com>
16629
16630         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16631         all public headers. Fixes #74919.
16632
16633 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16634
16635         * domain.c: The key for proxy_vtable_hash is now a pointer
16636         array. Added new GHashFunc and GCompareFunc functions for this.
16637
16638         * class.h: The list of interfaces in MonoRemoteClass is known in
16639         advance and can't grow (we create a new MonoRemoteClass if needed),
16640         so now the interface array can be allocated together with
16641         MonoRemoteClass.
16642         
16643         * object.c: Added a new method create_remote_class_key.
16644         Fixed mono_remote_class so it does not depend on
16645         mono_upgrade_remote_class.
16646         Removed extend_interface_array.
16647         Added new method clone_remote_class(), which makes a copy of a remote
16648         class and adds a new interface or class to it.
16649         mono_upgrade_remote_class() now creates a new remote class (or gets
16650         it from the cache) if an vtable upgrade is needed. In this way
16651         we make sure that other objects sharing the same remote class
16652         don't get the new vtable with unwanted interfaces.
16653         
16654         * object-internals.h:
16655         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16656         
16657         * marshal.c: Track changes in mono_upgrade_remote_class().
16658
16659 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16660         * icall.c: Add runtime methods for obtaining members of inflated
16661         class, which were created from supplied non-inflated members. It
16662         is used in internal Get{Method,Constructor,Field} methods in
16663         System.Type
16664
16665 2005-06-09  Martin Baulig  <martin@ximian.com>
16666
16667         * reflection.c
16668         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16669
16670 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16671         * reflection.c (mono_image_basic_init): Define
16672         Version in MonoDynamicAssembly. 
16673         
16674 2005-06-08  Martin Baulig  <martin@ximian.com>
16675
16676         Fix #75136.
16677
16678         * loader.c
16679         (mono_method_signature_full): New public method; takes a
16680         `MonoGenericContext *'.
16681         (find_method): Use mono_method_signature_full() and pass the
16682         klass'es context to it.
16683
16684         * class.c (mono_class_is_inflated_method): Use
16685         mono_method_signature_full() and pass the context to it.
16686
16687 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16688
16689         * object.c: add proper locking in mono_remote_class_vtable(),
16690         fixes possible memory corruption.
16691
16692 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16693
16694         * marshal.c (mono_remoting_marshal_init): set
16695         initialized after initialization.
16696
16697 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16698
16699         * locales.c : hush.
16700
16701 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16702
16703         * object.c (extend_interface_array): fix really silly
16704         memory corrupting / comparison bug.
16705
16706 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16707
16708         * reflection.c: Functions added to support the creation
16709         of CustomAttributeData, which includes Attribute data
16710         used by ReflectionOnly methods.
16711
16712         * reflection.h:  mono_reflection_get_custom_attrs_data and
16713          mono_custom_attrs_data_construct added (functions exposed).
16714
16715          * icall.c: Added mono_reflection_get_custom_attrs_data
16716          as icall.
16717         
16718 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16719
16720         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16721         lupus's request.
16722
16723 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16724
16725         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16726
16727         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16728         dynamic DllImportAttribute.
16729
16730         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16731         dynamic DllImportAttribute.
16732
16733         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
16734         Fixes #75162.
16735
16736 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16737
16738         * threads.c: avoid segfault when an unstarted thread is aborted.
16739
16740 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
16741
16742         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
16743         Returns the name and version of the runtime for reporting.
16744
16745 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16746
16747         * appdomain.c: bump corlib version.
16748         * object-internals.h: new field in MonoReflectionAssembly.
16749
16750 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16751
16752         * object-internals.h: Carlos forgot to add this field.
16753
16754 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16755
16756         * icall.c: Added create_version to create instances
16757         of Version of MonoReflectionAssemblyName. This change helps
16758         the AssemblyName tests to keep running fine.
16759         
16760 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
16761   
16762         * object.c (mono_method_return_message_restore): A somehow less
16763         intrusive fix for #75138.
16764
16765 2005-06-03  Raja R Harinath  <rharinath@novell.com>
16766
16767         * object.c (mono_method_return_message_restore): Fix computation
16768         of expected number of out args.
16769
16770 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16771
16772         * reflection.c (mono_image_get_method_info): Fix the case when the
16773         charset is empty.
16774
16775 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
16776
16777         * object.c: Added missing null check in
16778           mono_method_return_message_restore.
16779
16780 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16781
16782         * reflection.c (mono_image_get_method_info): Handle the case when
16783         dllentry is empty.
16784
16785 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
16786
16787         * object.c: When creating the vtable for a proxy, take into account
16788         all inherited interfaces, not only the ones registered in
16789         iclass->interfaces. This fixs bug #74996.
16790         Also, in mono_method_return_message_restore, verify that the array
16791         of out args has the expected lengh.
16792
16793 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16794
16795         * socket-io.c: update the timeout in Poll when the call is interrupte.
16796
16797 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16798
16799         * socket-io.c: support abort/suspend in Select_internal after last
16800         change.
16801
16802 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16803
16804         * threadpool.c: remove warning.
16805
16806 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16807
16808         * icall.c:
16809         * socket-io.[ch]: Select_internal uses poll() now when available, thus
16810         removing the 1024 limit from select(). Runtime part of the fix for
16811         bug #71203.
16812
16813 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16814
16815         * socket-io.c: when resolving the addresses for the same
16816         host returned by gethostname(), get the local IPs from the interface
16817         list. Loopback addresses are discarded if the are interfaces up with
16818         non-loopback ones. Fixes bug #63265.
16819
16820 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
16821
16822         * appdomain.c, verify.c, object-internals.h, reflection.c:
16823         bumped corlib number to 36, and added new extra_flags field
16824         to ReflectionMethodBuilder and friends.  Fixes #75060.
16825
16826 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
16827
16828         * gc.c: register a new weak link only if the object is non-null
16829         (fixes bug#75047).
16830
16831 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16832
16833         * culture-info.h : short time pattern too.
16834
16835 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16836
16837         * culture-info.h : expand long time pattern string length.
16838
16839 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16840
16841         * culture-info-table.h : update (more French date format; #72788).
16842
16843 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
16844
16845         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
16846         the method is static. Fixes #75029.
16847
16848 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
16849
16850         * reflection.c: Update the table_idx field of method builders after
16851         saving the module, since it can change. This is a workaround for
16852         bug #74914. 
16853
16854 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16855
16856         * culture-info-table.h : update (additional French date format).
16857
16858 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16859
16860         * icall.c (ves_icall_type_Equals): Revert last change.
16861         
16862         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
16863
16864         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
16865
16866 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
16867
16868         * class-internals.h: Added executioncontext_class field to 
16869         MonoDefaults structure.
16870         * domain.c: Cache System.Threading.ExecutionContext class in 
16871         mono_defaults.
16872         * object.c: Capture the ExecutionContext for asynchroneous calls in
16873          mono_async_result_new.
16874         * object-internals.h: Added execution_context and original_context 
16875         fields to MonoAsyncResult. Added execution_context to MonoThread.
16876         * security-manager.c|.h: Added mono_get_context_capture_method to 
16877         return the capture method (if required by the security manager or by
16878         the framework version used).
16879         * threadpool.c: Apply capture (if present) ExecutionContext in 
16880         mono_async_invoke and revert to original context after it completes.
16881
16882 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
16883
16884         * culture-info-table.h : updated (real hacky solution for zh-CHT).
16885
16886 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
16887
16888         * culture-info-table.h : zh-CHT related workaround.
16889
16890 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16891
16892         * marshal.c (emit_marshal_custom): Add some error checking and call the
16893         methods in the ICustomMarshaler interface. Fixes #74875.
16894         
16895         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
16896         native->managed wrappers.
16897
16898 2005-05-12  Martin Baulig  <martin@ximian.com>
16899
16900         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
16901         here and use the loader lock.
16902
16903         * mono-debug.c: Properly lock when the debugger is not attached.
16904         (mono_debug_init): Release the initial lock if we're not running
16905         in the debugger.
16906
16907 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16908
16909         * marshal.c (emit_marshal_custom): Pass through NULL values without
16910         calling the custom marshalling routines.
16911
16912         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
16913         conversion in structures. Fixes #74882.
16914
16915 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
16916
16917         * culture-info-table.h : zh-* cultures were missing.
16918
16919 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
16920
16921         * threads.c: Added a new event background_change_event which is signaled
16922         when a thread changes its background mode.
16923         Moved here several checks previously done in managed code. The checks
16924         require the thread lock, and using the thread lock in managed code
16925         can result in deadlocks.
16926         Merged Start_internal and Thread_internal into a single method. Now 
16927         Thread_internal does all work of creating and starting a thread.
16928         Added icalls for setting and getting the state of the object. Moved from
16929         managed code to avoid locking there.
16930         Added wait_for_tids_or_state_change() which is called instad of
16931         wait_for_tids when waiting for non-backround threads to end. This method
16932         will return if one of the threads ends or the background_change_event
16933         is signaled.
16934         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
16935         the background mode. This method signals the background_change_event
16936         event.
16937         * icall.c:
16938         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
16939         removed Start_internal.
16940         
16941 2005-05-11  Martin Baulig  <martin@ximian.com>
16942
16943         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
16944         to order of some fields to get proper alignment on 64-bit machines.
16945
16946 2005-05-11  Martin Baulig  <martin@ximian.com>
16947
16948         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
16949         changes as they're broken and completely fuck up the debugger.
16950
16951         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
16952
16953 2005-05-10  Martin Baulig  <martin@ximian.com>
16954
16955         * reflection.c (mono_reflection_generic_class_initialize): Don't
16956         call mono_class_setup_parent() here.
16957
16958 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16959
16960         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
16961         send/receive timeout use an integer in milliseconds. We were using a
16962         struct timeval.
16963
16964 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16965
16966         * locales.c:
16967         (internal_get_cultures): reserve the first slot of the array for the
16968         InvariantCulture, which will be filled in managed code.
16969
16970 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
16971
16972         * reflection.c (mono_image_fill_module_table): Initialize the
16973         GENERATION field as well.
16974
16975 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16976
16977         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
16978         Monitor.Enter on the object.
16979
16980 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16981
16982         * threads.c: Enable the wait for running threads when exiting.
16983         * icall.c: Suspend all threads before exiting.
16984
16985 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16986
16987         * assembly.c (mono_assembly_load_reference): Fix warning.
16988
16989 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16990
16991         * threadpool.c: changed the default number of threads per cpu. From now
16992         on, the default will be 20 + (5 * number of cpus) instead of 50.
16993
16994 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
16995
16996         * loader.c (mono_method_get_signature_full): Add locking here.
16997
16998 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
16999
17000         * appdomain.c: Moved methods for parsing and freeing assembly
17001         names to assembly.c.
17002         * assembly.c, domain-internals.h: Created public methods for parsing
17003         assembly names. Fixed mono_assembly_load_with_partial_name:
17004         it now finds the best match, taking into account the version,
17005         token and culture specified in the partial name. Also return
17006         the latest version if no version information is specified.
17007
17008 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
17009
17010         * threadpool.c: replace check for SocketAsyncCall class.
17011
17012 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17013
17014         * threadpool-internals.h:
17015         * Makefile.am: added threadpool-internals.h
17016
17017         * threadpool.c: call mono_unhandled_exception on exceptions not handled
17018         that happen in threadpool threads (tested on MS).
17019         (mono_thread_pool_remove_socket): new function that dispatch any pending
17020         AIO call on a socket that is closing. By now only epoll really needs it,
17021         as select/poll wake up when the socket closes.
17022
17023
17024         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
17025
17026 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
17027
17028         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
17029
17030 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
17031
17032         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
17033
17034 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
17035
17036         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
17037         has an abort request, convert it into a suspend request.
17038
17039 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
17040
17041         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
17042         warning for the usage of `UnmanagedFunctionPointerAttribute' which
17043         is not supported yet.
17044
17045 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17046
17047         * image.c: register assemblies loaded from data (bundles) in the loaded
17048         assemblies hash. Fixes bug #74772.
17049
17050 2005-04-29  Martin Baulig  <martin@ximian.com>
17051
17052         * class.c (mono_type_get_name_recurse): Update to the new naming
17053         schema from the latest .NET 2.x beta2.
17054         (mono_class_setup_vtable_general): If we're a generic instance,
17055         copy the vtable from our generic type definition and inflate all
17056         the methods in it.
17057
17058         * loader.c (find_method): Update to the new naming schema from the
17059         latest .NET 2.x beta2.
17060
17061 2005-04-29  Raja R Harinath  <harinath@gmail.com>
17062
17063         * class.c (mono_class_init): Add a mono_loader_unlock to the
17064         #74734 fix.
17065
17066 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17067
17068         * icall.c (ves_icall_System_Environment_Exit): Remove the 
17069         suspend_all_other_threads () call for the time being, since it can hang.
17070
17071         * threads.c (mono_thread_manage): Similarly, disable the waiting for
17072         the background threads to exit, since it can also hang.
17073
17074         * class.c (mono_class_init): Applied patch from Ankit Jain 
17075         (radical@gmail.com). Avoid pending init errors when a field refers
17076         to a nested class using a typeref. Fixes #74734.
17077
17078         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
17079         this for dynamic modules.
17080
17081 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17082
17083         * threads.c: don't wait for threads that are in the process of aborting
17084         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
17085         and waiting for background threads to finish. This makes xsp and
17086         mod-mono-server exit without random length delays and/or hangs.
17087
17088 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17089
17090         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
17091
17092 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
17093
17094         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
17095         dynamic types to prevent infinite loops. Fixes #74727.
17096
17097         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
17098         ..._is_assignable_to.
17099
17100 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
17101
17102         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
17103
17104 2005-04-25  Martin Baulig  <martin@ximian.com>
17105
17106         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
17107
17108         * domain.c
17109         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
17110
17111         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
17112
17113         * reflection.c (build_compressed_metadata): Set metadata header
17114         version to 2.0.
17115
17116 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17117
17118         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
17119         number into an integral and a decimal part. Fixes #70473.
17120
17121         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
17122
17123 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
17124
17125         * culture-info-table.h : reflected the latest locale-builder output.
17126
17127 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17128
17129         * threadpool.c: check for SuspendRequested too when deciding if
17130         mono_thread_interruption_checkpoint should be called.
17131
17132 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17133
17134         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
17135         * threads.c: remove interruption_mutex and use Interlocked instead. When
17136         suspending all the threads, wait for all the suspended events at once.
17137         If we're shutting down and get an APC that is going to be queued,
17138         call mono_thread_execute_interruption immediately, as the thread might
17139         be sleeping on a pthread condition or mutex.
17140
17141         * icall.c: call mono_runtime_set_shutting_down before suspending the
17142         threads.
17143
17144         Fixes bug #74693. And now xsp is happier when exiting.
17145
17146 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17147
17148         * loader.c (mono_stack_walk): Fix #74690.
17149
17150 2005-04-22  Martin Baulig  <martin@ximian.com>
17151
17152         * mono-debug.h (MonoDebugMethodJitInfo): Added
17153         `MonoDebugMethodJitInfo *jit'.
17154
17155         * mono-debug.c (mono_debug_read_method): Cache the
17156         MonoDebugMethodJitInfo in `address->jit'.
17157         (mono_debug_free_method_jit_info): New public method.
17158
17159 2005-04-22  Martin Baulig  <martin@ximian.com>
17160
17161         * class.c (mono_class_is_assignable_from): Disallow
17162         type parameter -> interface.
17163
17164 2005-04-21  Dick Porter  <dick@ximian.com>
17165
17166         * threads.c (mono_thread_create): Turn an assertion into an error.
17167
17168 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17169
17170         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
17171         
17172         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
17173         Fix some gcc 4.0 warnings.
17174
17175 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
17176
17177         * file-io.c: fix alt dir separator char on unix systems
17178         and cleanup (fixes bug #71214).
17179
17180 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
17181
17182         * marshal.c: Use CALLVIRT instead of CALL when dispatching
17183         a call to a remote domain, since the method may be an
17184         interface method in the client domain. This fixes bug #74192.
17185
17186 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17187
17188         * threadpool.c: recv/send are now performed before going back to managed
17189         code to save one transition.
17190
17191 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17192
17193         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
17194
17195         * metadata/threadpool.c: removed hack to workaround the bug above.
17196
17197         Fixes bug #74618.
17198
17199 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17200
17201         * reflection.c reflection.h: Fix handling of parameter defaults in
17202         dynamic methods. Also fixes handling of parameter attributes.
17203         Fixes #74609.
17204
17205         * mono-debug.c (mono_debug_close_image): Fix warning.
17206
17207 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17208
17209         * socket-io.h: replaced old unused field with new 'blocking'.
17210         * threadpool.c: restore socket blocking state on windows(tm).
17211
17212 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
17213
17214         * icall.c: don't return the codebase in the AssemblyName[] returned by
17215         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
17216         * object-internals.h: Removed FIXME (fields were presents) and fixed
17217         versioncompat declaration.
17218
17219 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17220
17221         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
17222         not closed, so don't cleanup when it happens.
17223
17224 2005-04-13  Chris Toshok  <toshok@ximian.com>
17225
17226         * mono-debug-debugger.h: change prototype for
17227         mono_debugger_lookup_type.
17228
17229         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
17230         this function, although it should probably be named
17231         mono_debugger_init_type.
17232
17233 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17234
17235         * threadpool.c: fix non-AIO case.
17236
17237 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17238
17239         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
17240         the built-in profiler to measure just JIT compilation times.
17241
17242 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17243
17244         * threadpool.c: the epollfd might be closed by another thread at
17245         any time, so ignore EBADF at treat it as a "we're closing" sign.
17246
17247 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17248
17249         * threadpool.c: release the semaphores with a count equals to the number
17250         of working threads in both IO and regular pools. Fixed typo that messed
17251         up the count of IO pool threads. Don't initialize the pipe handles if
17252         we're using epoll.
17253
17254 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17255
17256         * threadpool.c: some systems don't like a NULL when deleting the socket
17257         from epoll.
17258
17259 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17260
17261         * threadpool.c: fix semaphore allocation.
17262
17263 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17264
17265         * threadpool.c: added epoll() based implementation for asynchronous IO
17266         that is used instead of the default poll() when available.
17267         It can be disabled by setting MONO_DISABLE_AIO.
17268
17269 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17270
17271         * threadpool.c: windows needs 'closesocket' and instead of returning
17272         0 when the stream is closed while in select, it returns -1. Fixes bug
17273         #74573.
17274
17275 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
17276
17277         * class.c (class_compute_field_layout): Fix the regression caused by
17278         the previous try.
17279
17280 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17281
17282         * threadpool.c: separate pool for socket async. IO.
17283         * threadpool.h: mono_max_worker_threads is not a global any more.
17284
17285 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17286
17287         * class.c (class_compute_field_layout): Fix #74549.
17288
17289 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17290
17291         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
17292         use 2 connected sockets instead.
17293
17294 2005-04-08  Miguel de Icaza  <miguel@novell.com>
17295
17296         * mono-config.c: Add new entry point for mkbundle
17297         mono_config_parse_memory. 
17298
17299 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17300
17301         * threadpool.c: removed another unused function.
17302
17303 2005-04-08  Ankit Jain  <radical@corewars.org>
17304
17305         * reflection.c (get_default_param_value_blobs): Add 'types'
17306         parameter to get the types encoded in the constant table.
17307         (mono_param_get_objects): Use the type from the constant table,
17308         not the type of the parameter, when creating default values.
17309         Handle null default values correctly.
17310
17311 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17312
17313         * file-io.c:
17314         * file-io.h:
17315         * threadpool.c:
17316         * threadpool.h:
17317         * icall.c:
17318         * socket-io.c: removed dead code for async IO.
17319
17320 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17321
17322         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
17323
17324         * threadpool.c: intercept socket async. calls and pass them to a thread
17325         that is polling and dispatching the job items to the threadpool as
17326         socket become ready. Fixes bugs #71217, #71933.
17327
17328         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
17329         between char and short/ushort arrays.
17330
17331         * socket-io.c: remove dead code.
17332
17333 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17334
17335         * locales.c,
17336           icall.c : removed InternalToUpper_Comp() and
17337           InternalToLower_Comp().
17338
17339 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17340
17341         * char-conversions.h : The tables were incorrectly generated. Should
17342           be generated against invariant culture.
17343
17344 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17345
17346         * object.c (mono_runtime_invoke_array): Fix return value when 
17347         passing pre-created valuetype objects to ctors.
17348
17349         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
17350         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
17351         Fixes #74338.
17352
17353 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
17354
17355         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
17356         only used with --security and hides the wrong corlib version error.
17357
17358 2005-03-30  Joshua Tauberer  <tauberer@for.net>
17359
17360         * class.c: Changed mono_class_name_from_token so that types
17361         outside of a namespace don't have an initial period.  Improved
17362         the g_warning message used in _mono_class_get when loading
17363         fails.
17364         * assembly.c: In mono_assembly_load_reference, when an assembly
17365         can't be found, "No such file or directory" is misleading and
17366         unhelpful because a few paths were checked for the presence of
17367         the assembly.  When that happens (ENOENT), display a nicer
17368         message indicating the directories that were searched.  In all
17369         cases, the warning is made easier to read for non-hackers.
17370
17371 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17372
17373         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
17374         project/solution.
17375         * appdomain.h|domain.c: Removed inline from functions.
17376         * appdomain.c: Reduced warnings when compiling on windows.
17377         * icall.c: Fixed output_debug declaration to gunichar2*.
17378         * mono-config.c: Reduced warnings when compiling on windows.
17379         * rand.c: Added missing "windows.h". Added missing return value.
17380         * rawbuffer.c: Added missing winsock2.h for windows.
17381         * sysmath.h: Added mono-compiler.h header to allow/ease 
17382         compilation with non-GCC compilers.
17383         * threads.c: Fixed declarations to compile with VS.NET C compiler.
17384         Removed cast warnings.
17385
17386         Adapted from the work of J Lothian (for VC6).
17387
17388 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17389
17390         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
17391         from default_path.
17392
17393 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17394
17395         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
17396         the 2.0 profile.
17397
17398 2005-03-27  Raja R Harinath  <harinath@gmail.com>
17399
17400         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
17401         has to be in $(exec_prefix).  $(prefix) is for arch-independent
17402         stuff, and it would probably use $(prefix)/share rather than
17403         $(prefix)/lib.
17404
17405 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17406
17407         * console-io.c: added 2 includes that might be missing.
17408
17409 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17410
17411         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
17412         profile.
17413
17414         * reflection.c (create_custom_attr): Allocate the params array using
17415         alloca so it gets GC tracking.
17416
17417 2005-03-23  Chris Toshok  <toshok@ximian.com>
17418
17419         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17420         out some spew.
17421
17422 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17423
17424         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17425         changes to pick up any changes in prefix, etc.
17426
17427 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17428
17429         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17430         
17431         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17432         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17433
17434 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17435
17436         * class-internals.h object-internals.h class.c reflection.c: Extend the
17437         mono_lookup_dynamic_token () function to return the class of the
17438         token as well. 
17439
17440         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17441         well. Fixes #73848.
17442
17443 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17444
17445         * security-manager.c: Skip inheritance checks for intra-corlib
17446         class inheritance and method overrides. This skips a lot of checks
17447         and (anyway) permissions cannot work until corlib is loaded.
17448
17449 2005-03-23  Martin Baulig  <martin@ximian.com>
17450
17451         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17452         MONO_TYPE_GENERICINST.  
17453
17454 2005-03-23  Martin Baulig  <martin@ximian.com>
17455
17456         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17457
17458 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17459
17460         * class.c: added locking comments to some functions.
17461         Cache the interface offsets arrays (saves about 20 KB
17462         of runtime memory in a typical app).
17463         Reduce the time overhead in mono_class_setup_supertypes ().
17464
17465 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17466
17467         * icall.c: speedup and fix leaks in GetMethodsByName and
17468         GetPropertiesByName.
17469
17470 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17471
17472         * reflection.c: some locking fixes.
17473
17474 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17475
17476         * metadata.c: added missing break in case statement.
17477
17478 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17479
17480         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17481         typedbyref return values. Fixes #73941.
17482
17483 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17484
17485         * security-manager.c|h: Added demandunmanaged method and 
17486         suppressunmanagedcodesecurity class to MonoSecurityManager.
17487         Renamed aptc class to allowpartiallytrustedcallers.
17488
17489 2005-03-17  Martin Baulig  <martin@ximian.com>
17490
17491         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17492
17493 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17494
17495         * file-io.c: disabled file async. IO using aio_*. It uses the
17496         threadpool now. Workaround for bug #73718.
17497
17498 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17499
17500         * assembly.h, mono-config.c: added code to deal with bundled configs
17501         for bundled assemblies.
17502
17503 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17504
17505         * *.c, private.h: cleanup, removing old private.h header file.
17506
17507 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17508
17509         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17510         and throw_on_unmappable_char attributes.
17511
17512 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17513
17514         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17515         _ProcessName_internal.
17516
17517 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17518
17519         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17520         #73631.
17521
17522         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17523         are no longer used.
17524
17525 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17526
17527         * object.c (compute_class_bitmap): Add support for generics. Fixes
17528         #73527.
17529
17530 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17531
17532         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17533
17534 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17535
17536         * filewatcher.c: commented out the code for windows watcher, as we don't
17537         use it (we use the managed implementation instead).
17538
17539 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17540
17541         * object-internals.h (MonoThread): Remove 'unused1' field.
17542
17543         * appdomain.c: Bump corlib version.
17544
17545         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17546
17547         * reflection.c (mono_reflection_create_runtime_class): Remove the
17548         AssemblyBuilder.Save optimization since it causes too many problems.
17549
17550 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17551
17552         * exception.c|h: Added mono_get_exception_reflection_type_load to
17553         create a ReflectionTypeLoadException object.
17554         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17555         to return NULL is a InheritanceDemand fails during reflection. Updated
17556         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17557         ReflectionTypeLoadException if an InheritanceDemand fails during 
17558         reflection. Added icall mapping for GetLinkDemandSecurity.
17559         * security-manager.c|h: Added ves_icall_System_Security_
17560         SecurityManager_GetLinkDemandSecurity internal call to return the
17561         class and methods permissions set for a LinkDemand. Removed unused
17562         fields in MonoSecurityManager.
17563
17564 2005-03-10  Martin Baulig  <martin@ximian.com>
17565
17566         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17567         it's a generic instance.
17568
17569 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17570
17571         * reflection.c (mono_get_object_from_blob): Applied patch from
17572         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17573
17574         * class.c (mono_class_is_assignable_from): Another try at fixing 
17575         #73469 without breaking anything.
17576
17577 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17578
17579         * class.c: (mono_class_is_assignable_from): Revert the last changes
17580         since they don't work with generics.
17581         
17582         * class.c (mono_class_is_assignable_from): Fix build bustage.
17583
17584         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17585         the managed IsAssignableFrom method. Fixes #73469.
17586
17587         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17588         function.
17589
17590 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17591
17592         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17593         memory when the remoting callback does not sets the out arguments.
17594         Fixes #73007.
17595
17596         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17597         by mistake.
17598
17599         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17600
17601         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17602
17603         * appdomain.c: Bump corlib version.
17604
17605 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17606
17607         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17608         function.
17609
17610         * threads.c (mono_thread_attach): Detect threads which are not started
17611         by the GC pthread wrappers.
17612
17613 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17614
17615         * icall.c: Added new icall for RNG.
17616         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17617         single handle on Linux to access /dev/urandom and fix #73183.
17618
17619 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17620
17621         * object.c: setting the new vtable in a transparent proxy object must
17622         not change the GC descriptor.
17623
17624 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17625
17626         * object.c: fixed compilation without GCJ support.
17627         * reflection.c: for runtime-created types ensure klass->has_references
17628         is correct (bug #73215).
17629
17630 2005-03-02  Martin Baulig  <martin@ximian.com>
17631
17632         * class.c (mono_class_is_assignable_from): Make this work if
17633         `oklass' is a generic instance; fixes #72831.
17634
17635 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17636
17637         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17638         with hasthis set.
17639         
17640         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17641
17642         * marshal.c: Reorganize native->managed marshalling code to also use
17643         the emit_marshal_... functions.
17644
17645 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17646
17647         * object.c: typed allocs have issues with bitmap sizes > 30,
17648         so check for max_set >= 30.
17649
17650 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17651
17652         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17653         managed code. Fixes #73012.
17654
17655         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17656
17657         * metadata.c reflection.c: Load/Emit elem_mult as well.
17658         
17659         * metadata.h (MonoMarshalSpec): Add comment.
17660
17661         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17662
17663         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17664         num_elem to -1 if not given.
17665
17666         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17667
17668         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17669         given values.
17670
17671 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17672
17673         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17674
17675 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17676
17677         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17678
17679         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17680
17681 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17682
17683         * object.c: generalized the reference bitmap creation
17684         and added hooks for the new GC.
17685         * class-internals.c: removed the gc_bitmap field from MonoClass.
17686
17687 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17688
17689         * domain.c: help the compiler to produce better code
17690         in mono_jit_info_table_find ().
17691
17692 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17693
17694         * object.c: make all allocations look typed.
17695
17696 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17697
17698         * socket-io.c: load Mono.Posix if it's not loaded already
17699         (fixes bug#73033).
17700
17701 2005-02-24  Martin Baulig  <martin@ximian.com>
17702
17703         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17704         * reflection.c (dup_type): Likewise.
17705
17706 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17707
17708         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17709         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17710
17711 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17712
17713         * domain.c, threads.c, object-internals.h: make the critical thread
17714         local vars use the fast access mode (even when we're compiled in
17715         a lib). Provide accessors to be used by the jit during codegen.
17716
17717 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17718
17719         * appdomain.c: Changed hook functios behavior to include
17720         support for the reflection only assemblies. Some icalls were changed
17721         to support the mentioned assemblies too. Signatures of static methods
17722         try_assembly_resolve and real_load now have an additional parameter:
17723         refonly.
17724
17725         * assembly.c: General changes to mono_assembly_ methods to support
17726         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17727         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17728         suffix, to support an additional gbool parameter to specify whether
17729         the assembli is reflection only or not. Created some new hook functions 
17730         to add support for reflection only assemblies. Signatures of static 
17731         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
17732         have now an additional parameter: refonly.
17733
17734         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
17735         indicating whether the assembly is reflection only or not.
17736
17737         * exception.c: Add mono_get_exception_invalid_operation.
17738
17739         * icall.c: Throw an InvalidOperationException when trying to invoke
17740         a property/method/event, or trying to set/get the value of a field.
17741         Also add an icall to retrieve the ref_only flag to the
17742         MonoReflectionAssembly.
17743
17744 2005-02-23  Chris Toshok  <toshok@ximian.com>
17745
17746         Part of fix for #72827.
17747         * mono-debug.c (mono_debug_add_method): add lexical block data to
17748         the info we write.  Kind of a hack at the moment - we copy the
17749         lexical block info from the MonoDebugMethodInfo to the
17750         MonoDebugMethodJitInfo here, before writing it.
17751         (mono_debug_read_method): read the lexical block info.
17752
17753         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
17754
17755         * debug-mono-symfile.h: add lexical block support.
17756
17757         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
17758         support.
17759
17760 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17761
17762         * loader.c (mono_lookup_pinvoke_call): Fix warning.
17763
17764         * object.c (mono_runtime_free_method): Call mono_free_method () and
17765         put the TODOs there.
17766
17767         * loader.c (mono_free_method): Free up most memory allocated for 
17768         dynamic methods.
17769
17770 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17771
17772         * reflection.c: properly flag a Type argument to a
17773         named custom attr value (bug #72248).
17774
17775 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17776
17777         * reflection.c: reduce code duplication in named custom
17778         attribute encoding.
17779
17780 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
17781
17782         * reflection.c: properly encode custom attrs of type object
17783         (bug #72649).
17784
17785 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17786
17787         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
17788
17789 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
17790
17791         * socket-io.c: load System.dll if it's not loaded already
17792         (bug #72850 and #70477).
17793
17794 2005-02-21  Martin Baulig  <martin@ximian.com>
17795
17796         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17797         generic instances.
17798
17799 2005-02-21  Martin Baulig  <martin@ximian.com>
17800
17801         * reflection.c (mono_image_build_metadata): We also need to
17802         "fixup" the MethodImpl table after we computed the final method
17803         indices.  Call fixup_methodimpl() to do that.
17804         (fixup_methodimpl): New private method.
17805
17806 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17807
17808         * assembly.c: special case mscorlib.dll (bug#72536),
17809         patch from Carlos Alberto Cortez.
17810
17811 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17812
17813         * threads-types.h threads.c: Fix build bustage.
17814
17815         * threads.c: Use a union for long<->double conversions.
17816
17817         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
17818         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
17819
17820         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
17821         containing the checkpoint call with NOT_TAKEN.
17822         
17823         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
17824         checkpoint before pushing the arguments, so they won't have to be
17825         spilled to stack.
17826
17827 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17828
17829         * domain.c, assembly.c, domain-internals.h: make some data
17830         const and relocation-free.
17831
17832 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17833
17834         * object.c, appdomain.c, class-internals.h: introduce the
17835         MonoClassRuntimeInfo structure to hold the info needed to
17836         use a class at runtime. Made mono_class_vtable() lock-free
17837         for all the appdomains.
17838
17839 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
17840
17841         * metadata-internals.h, image.c: introduce a per-image mempool to
17842         be used for memory that has the same lifetime as the image.
17843
17844 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
17845
17846         * domain.c: In mono_init_internal(), instead of selecting the first
17847         runtime version supported by an executable, get a list of all
17848         supported versions and select the one for which an mscorlib exists
17849         (since even if the runtime supports a given version, it doesn't mean
17850         that the framework for that version is installed).
17851         Modified get_runtimes_from_exe to support this behavior.
17852         In supported_runtimes, added information about additional system
17853         assembly versions.
17854         
17855         * assembly.c: Added support for more than one system assembly version
17856         per runtime version. Updated the assembly list.
17857         In mono_assembly_remap_version, removed the initial version check,
17858         since we don't know to which version we need to compare until we
17859         get the version set on which the assembly is based.
17860         Moved the code for loading corlib into the new method
17861         mono_assembly_load_corlib(), so it can be used by the initialization
17862         code.
17863         
17864         * domain-internals.h: Updated data structures and added declaration
17865         for mono_assembly_load_corlib.
17866
17867 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17868
17869         * reflection.c (resolve_object): Fix the creation of the signature in 
17870         the SignatureHelper case.
17871
17872         * assembly.c (mono_assembly_remap_version): Fix binary search.
17873         
17874 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
17875  
17876         * class.c: Added inheritance check when a method is overloaded (from a
17877         virtual method or when implementing an interface) and when a class is
17878         inherited. Added functions to set a failure for a class and to 
17879         retreive the exception from a failure.
17880         * class-internals.h: Added fields to MonoClass to keep the exception
17881         information status for inheritance (or other exceptions) to be thrown
17882         later (i.e. not at load time).
17883         * object.c: Throw the inheritance SecurityException when a type is to 
17884         be created with either class or method inheritance violations.
17885         * reflection.c|h: Fix when getting declsec from a class. Removed 
17886         unrequired code for class. Improved sanity in parameter naming.
17887         * security-manager.c|h: Added functions to check for class and method
17888         inheritance.
17889
17890 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
17893         and has_finalize in dynamic types as well.
17894
17895 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
17896
17897         * culture-info-table.h : fixed currency format for en-GB (and so on).
17898
17899 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
17900
17901         * gc.c: ensure the GC handles never have 0 as a value.
17902
17903 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17904
17905         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
17906         a pointer to a struct to unmanaged code. Fixes #72625.
17907
17908 2005-02-16  Martin Baulig  <martin@ximian.com>
17909
17910         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
17911
17912 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17913
17914         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
17915
17916 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17917
17918         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
17919
17920         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
17921         UnmanagedFunctionPointerAttribute, use it for determining calling convention
17922         etc. Fixes #71471.
17923
17924         * reflection.c (mono_custom_attrs_get_attr): New helper function.
17925
17926         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
17927
17928 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
17929
17930         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
17931         changes to make the current context a field in MonoThread.
17932
17933 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17934
17935         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
17936         the last change.
17937         
17938         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
17939         extracted from mono_marshal_get_native_wrapper.
17940
17941         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
17942         to create wrappers around native functions.
17943
17944         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
17945         delegates for arbitrary function pointers. Fixes #71472.
17946
17947 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17948
17949         * threads.c: cleaned up the code a little.
17950
17951 2005-02-15  Martin Baulig  <martin@ximian.com>
17952
17953         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
17954         the data table.
17955
17956         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
17957         allocate larger chunks if needed.
17958
17959 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17960
17961         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
17962         in by mistake.
17963
17964 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
17965
17966         * domain.c: keep the domains in an array and ensure the domain ids
17967         are kept small, so they can be used as indexes to domain-specific data
17968         with a small memory overhead.
17969
17970 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17971
17972         * icall.c: Handle byref types in Type icalls. Fixes #72544.
17973
17974 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
17975
17976         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
17977
17978 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17979
17980         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
17981
17982         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
17983         values.
17984
17985         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
17986         
17987 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17988
17989         * domain-internals.h: add the hashtable here.
17990
17991         * class-internals.h: Remove `info' from MonoMethod
17992
17993         * domain.c: Add a new hashtable, jit_trampoline_hash
17994
17995 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17996
17997         * object.c: don't set the value of static fields
17998         (fixes bug#72494).
17999
18000 2005-02-11  Martin Baulig  <martin@ximian.com>
18001
18002         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
18003         (mono_debug_add_method): Silently ignore the method if it's too big.
18004         (mono_debug_add_type): Likewise.
18005
18006 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
18007
18008         * threads.c, appdomain.c: remove #ifdefs from the code.
18009
18010 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18011
18012         * metadata-internals.h: Added flags to MonoAssembly to cache the most
18013         common security informations. This allows us to stay in unmanaged code
18014         when doing LinkDemand and it's special cases (except for the first 
18015         time for initialization). The flags a very much used with --security.
18016         * reflection.c|h: Added code to get declarative security attributes 
18017         for LinkDemand and InheritanceDemand. This required to refactor the
18018         existing code for Demand.
18019         * security-manager.c|h: Added new method fields for the special cases
18020         of LinkDemand.
18021
18022 2005-02-10  Martin Baulig  <martin@ximian.com>
18023
18024         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
18025         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
18026
18027 2005-02-10  Martin Baulig  <martin@ximian.com>
18028
18029         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
18030         debugging code; this is almost a complete rewrite.
18031
18032         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
18033
18034 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18035
18036         * domain.c, object.h: expose mono_string_equal () and 
18037         mono_string_hash ().
18038         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
18039         it's implemented in managed code.
18040
18041 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18042
18043         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
18044         lo leak objects between appdomains.
18045
18046 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18047
18048         * assembly.c: old compilers compilation fix from 
18049         robertj@gmx.net (Robert Jordan).
18050
18051 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
18052
18053         * class-internals.h: Little reminder for the future.
18054
18055         * debug-helpers.c: Fix up wrapper_type_names
18056
18057 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18058
18059         * image.c, metadata-internals.h: when loading an image from a file,
18060         mmap all of it and use the same codepaths as when using a
18061         in-memory image: the code is simpler and we use less memory
18062         (both writable and readonly).
18063
18064 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18065
18066         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
18067         API to alloc runtime data structures that need to be tracked by the
18068         GC and contain pointers.
18069         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
18070         make the code more readable and eventually use a different GC.
18071
18072 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
18073
18074         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
18075         for out arguments.
18076         
18077 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
18078
18079         * object.c: In release_type_locks(), don't release the cctor lock
18080         if it has already been released. This fixes a crash in the
18081         thread5 test.
18082
18083 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18084
18085         * gc.c, marshal.c, icall.c: register a delegate for finalization
18086         only when the native function pointer has been allocated for it.
18087
18088 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18089
18090         * object.c: cleaned up some code, allocate objects that are
18091         pointer free with the atomic malloc variant. Allocate memory
18092         for static data from the mempool if it's pointer-free.
18093         Allocate the bounds array at the end of the array data, when needed.
18094         * object-internals.h, object.h: move a private function in a private
18095         header.
18096         * class.c: handle missing case in tracking references in fields.
18097
18098 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18099
18100         * class.c, class-internals.h: keep track if a type has
18101         reference fields in either the instance or static fields.
18102
18103 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
18104
18105         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
18106         and renamed to MonoRuntimeInfo. Added fields to store the expected
18107         framework assembly version. Changed mono_get_framework_version and
18108         mono_get_runtime_version for a single mono_get_runtime_info method.
18109         
18110         * assembly.c: Added method to remap system assembly versions to the
18111         current executing runtime version. Removed old mapping code.
18112         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
18113         
18114         * icall.c, reflection.c: Track api changes.
18115
18116 2005-02-06  Miguel de Icaza  <miguel@novell.com>
18117
18118         * loader.c (method_from_memberref): Improve error reporting,
18119         produce the class name instead of the typeref/typedef index. 
18120
18121 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
18122
18123         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
18124
18125 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18126
18127         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
18128         stdcall and charset name mangling.  Reorganize the code and add
18129         some tracing stuff.
18130
18131 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18132
18133         * monodiet.c: More iters!
18134
18135         * marshal.c: Iter usage.
18136
18137         * icall.c: Iter usage.
18138
18139         * object.c: Use iters.
18140
18141         * debug-helpers.c: More iters
18142
18143 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18144
18145         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
18146         under win32.
18147
18148 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18149
18150         * mono-debug-debugger.c: use iters
18151
18152         * class.c, class-internals.h: mono_class_setup_events is static
18153         now
18154
18155         * All callers: use iters
18156
18157 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18158
18159         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
18160         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18161
18162 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18163
18164         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
18165
18166         * marshal.h: Add prototypes for ldfld/stfld_remote.
18167
18168         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
18169         this is called during startup.
18170         
18171 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18172
18173         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
18174         MonoThreadsSync struct private in monitor.c. Changed the way
18175         MonoThreadsSync is allocated so it's faster and there is no
18176         need to keep track of it with a finalizer and it uses less memory.
18177         This also finally allows us to allocate mono objects as ptrfree when
18178         there are no reference fields.
18179
18180 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
18181
18182         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
18183         disappearing link to the GC interface and use them to simplify
18184         the gchandles code.
18185
18186 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18187
18188         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
18189         stfld_remote which call mono_load/store_field_new. This allows methods
18190         calling ldfld/stfld wrappers to be AOTed.
18191
18192         * console-io.c: Include sys/filio.h under solaris.
18193         
18194         * console-io.c: Include curses.h if needed correctly.
18195
18196 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18197         
18198         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
18199         method->klass as well.
18200
18201         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
18202
18203         * class.c (mono_class_init): Switch on lazy initialization of 
18204         methods.
18205
18206         * class.c (mono_class_get_finalizer): Handle the case when the 
18207         finalizer is inherited.
18208
18209 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18210
18211         * console-io.c: <curses.h> is needed by term.h on solaris.
18212
18213 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
18214
18215         * icall.c, class-internals.h, monodiet.c, class.c: Remove
18216         mono_class_setup_properties where possible. Remove this ftn from
18217         the header file, and make it static.
18218
18219 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18220
18221         * loader.c: Add missing setup_... call.
18222
18223         * class.c: Add missing setup_... calls.
18224
18225         * class.c (mono_class_init): Switch on lazy initialization of 
18226         the generic vtable.
18227         
18228         * class.c (mono_class_init): Fix generics broken by the recent changes.
18229
18230         * monodiet.c (handle_type): Add missing setup_... calls.
18231
18232         * class.c: Back out garbage in previous patch.
18233         
18234         * class.c: Add missing setup_... calls.
18235
18236         * class.c (mono_class_get_method_from_name_flags): Avoid calling
18237         mono_class_setup_methods () if possible.
18238
18239         * class-internals.h (MonoClass): Add 'has_cctor' flag.
18240
18241         * class-internals.h (MonoCachedClassInfo): New structure.
18242
18243         * class.c: Initialize properties and events fields of MonoClass lazily.
18244
18245         * class.c: Add infrastructure for lazily initializing the methods and
18246         vtable fields of MonoClass. Not yet used.
18247
18248         * class.c (mono_class_get_finalizer): New helper function.
18249
18250         * class.c: Add infrastructure for loading some class related data from
18251         an AOT file.
18252
18253         * object.c: Add infrastructure for initializing the vtable from data
18254         in the AOT file.
18255
18256         * gc.c (run_finalize): Use mono_class_get_finalizer ().
18257
18258         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
18259         appropriate initialization function before accessing parts of the
18260         MonoClass structure.
18261
18262         * marshal.c: Fix warnings.
18263         
18264         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
18265
18266         * mono-debug-debugger.c (get_exception_message): Use 
18267         mono_class_get_method_from_name_flags ().
18268
18269 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
18270
18271         * reflection.c, appdomain.c: Replace a few manual searches that
18272         Zoltan missed. (Paolo approved this part of my initial patch).
18273
18274 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
18275
18276         * profiler.c: disable recording statistical events at report time.
18277
18278 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18279
18280         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
18281         to byteswap arrays of enum values, too (bug #72080).
18282
18283 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18284
18285         * appdomain.c (set_domain_search_path): Allow this to be called if
18286         domain->setup is not yet set.
18287
18288         * loader.c (mono_method_get_index): New helper function.
18289
18290         * loader.c reflection.c: Use mono_method_get_index ().
18291
18292         * class.c (mono_class_get_method_from_name_flags): New helper method.
18293
18294         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
18295         this.
18296
18297         * class.c (mono_class_get_cctor): New helper method.
18298
18299         * string-icalls.c object.c class.c marshal.c reflection.c: Use
18300         mono_class_get_method () to look up methods.
18301
18302 2005-02-01  Miguel de Icaza  <miguel@novell.com>
18303
18304         * console-io.c: Fix the build, this should work on Windows.
18305
18306 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
18307
18308         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
18309         be set to null to keep things valid
18310
18311 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18312
18313         * icall.c: added Console 2.0 icalls.
18314         * Makefile.am: added console-io.[ch]
18315         * console-io.[ch]: internal calls for Console 2.0 API.
18316
18317 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18318
18319         * class.c: make sure we consider all the interfaces
18320         when calculating max_interface_id (bug found by
18321         Jeroen Frijters running ikvm).
18322
18323 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18324
18325         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
18326         valuetype fields to null.
18327
18328         * object.c (set_value): Ditto. Fixes #71669.    
18329
18330 2005-01-31  Martin Baulig  <martin@ximian.com>
18331
18332         * metadata.c (mono_metadata_has_generic_params): New public
18333         function; checks whether something is a generic method.
18334
18335 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18336
18337         * appdomain.c: fix infinite recursion when adding assemblies.
18338
18339 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
18340
18341         * object.c: Fix small typo to return all items for Environment.
18342         GetCommandLineArgs.
18343
18344 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18345
18346         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
18347         reflection.c: more domain and assembly-unload related fixes
18348         and memory leaks plugs.
18349
18350 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18351
18352         * 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.
18353
18354 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18355
18356         * loader.c (mono_method_signature): Make this method lazy
18357         (mono_get_method_from_token): Don't computate the signature here.
18358
18359         Doing this saves quite a bit of memory. I got 90 kb on starting up
18360         monodoc. It should also save some disk reads on startup.
18361
18362         * *: MonoMethod->signature might be NULL now. You *MUST* use
18363         mono_method_signature.
18364
18365 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
18366
18367         * object.c (mono_runtime_get_main_args): Return an array from the
18368         current domain here. Fixes #71938.
18369
18370 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18371
18372         * monitor.c: formatting changes to comply with the
18373         mono coding style and remove #ifdefs from the code.
18374
18375 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18376
18377         * metadata.c, private.h: remove some unneeded data
18378         and use a more compact representation for table schemas.
18379
18380 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18381
18382         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
18383         to get a better distribution in hash tables.
18384         * *.c: use mono_aligned_addr_hash() where appropriate.
18385         * assembly.c: make var static.
18386
18387 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18388
18389         * domain-internals.h: Put MonoJitInfo on a diet.
18390
18391         * domain.c: Fix a warning.
18392
18393 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18394
18395         * gc.c: rework the gc handles code to reuse handles
18396         when freed.
18397
18398 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18399
18400         * domain.c: fixed long standing bug in mono_string_equal() which
18401         was brought to light with the ldstr changes.
18402
18403 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18404
18405         * reflection.c: Remove warning by adding missing include for marshal.h
18406
18407 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18408
18409         * domain.c, object.c: change the ldstr_table to hold
18410         MonoString* as keys: makes the runtime isinterned lookup
18411         faster and simplifies memory management.
18412
18413 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
18414  
18415         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
18416         possible to add imperative security checks before calling the icall.
18417         * reflection.c: Return security attributes on the original MonoMethod
18418         (and not the wrapped one). This fix permissions on icalls.
18419
18420 2005-01-25  Dick Porter  <dick@ximian.com>
18421
18422         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18423         the check for mktime() support actually test the mktime() return
18424         value.  "Fixes" bug 71682, though the output is still different to
18425         MS.
18426
18427 2005-01-25  Martin Baulig  <martin@ximian.com>
18428
18429         * class.c (mono_class_is_assignable_from): Make this work for
18430         generic instances.
18431
18432 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18433
18434         * marshal.c (mono_string_utf8_to_builder)
18435         (mono_string_builder_to_utf16): We might not have ownership of the
18436         string. In thise case, we need to create a new buffer.
18437
18438         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18439         be null, in which case, use the default capacity.
18440
18441 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18442
18443         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18444         GC events to the profiler.
18445
18446 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18447
18448         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18449         if you don't want the GC to run.
18450
18451 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18452
18453         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18454         start providing a GC API and keeping different implementations in
18455         their own file.
18456         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18457
18458 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18459
18460         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18461         mmap rather than allocating a huge buffer.
18462         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18463         above.
18464
18465 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18466
18467         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18468         and CheckExecutionRights.
18469         * reflection.c|h: Keep the index of the declarative security to be 
18470         used, instead of the pointer, when AOT compiler is used. Also add 
18471         class initialization when requesting demands.
18472         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18473         CheckExecutionRights. Both properties are now FALSE by default, and
18474         unmodifiable, unless the --security option is used.
18475
18476 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18477
18478         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18479         reflection.c: properly refcount images and assemblies, many leaks fixed.
18480
18481 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18482
18483         * threadpool.c: increase the timeout for threads in the thread pool to
18484         10s.  Fixes bug #67159.
18485
18486 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18487
18488         * class-internals.h: Sun's compiler insists on explicit
18489         signed on bit fields to handle then correctly.
18490
18491 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18492
18493         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18494         Make the size of the array fit only the number of invalid path
18495         chars that we have.
18496
18497         * class.c (_mono_class_get): Improve the error reporting when a
18498         class referenced is not found, to assist debugging. 
18499
18500 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18501
18502         * threads.c: fix off-by-one error.
18503         * domain.c: free data allocated in the domain.
18504
18505 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18506
18507         * reflection.c (mono_method_body_get_object): Fill out exception info
18508         as well.
18509
18510         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18511         structure.
18512         
18513 2005-01-19  Martin Baulig  <martin@ximian.com>
18514
18515         * loader.c (mono_get_method_constrained): Make this work again.
18516
18517 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18518
18519         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18520         guint16 to match the managed side.
18521
18522         * reflection.c (mono_reflection_body_get_object): Fill out local
18523         variables array.
18524
18525         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18526         as well.
18527
18528         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18529         'local_var_sig_token'.
18530
18531 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18534         System.Drawing.
18535
18536         * reflection.c (mono_method_body_get_object): Handle abstract and
18537         runtime methods.
18538
18539 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18540
18541         * marshal.c, loader.c, class-internals.h, reflection.c:
18542         store the emthod data for a wrapper in an array instead of a list.
18543
18544 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18545
18546         * marshal.c: change the code to allocate memory more
18547         conservatively for method wrappers.
18548
18549 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18550
18551         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18552         fields from MonoClass to the marshal info structure where they belong.
18553
18554 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18555
18556         * class.c, object.c, class-internals.h, marshal.c: rearrange
18557         some fields and tweak some types to lower memory usage.
18558
18559 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18560
18561         * threads.c (signal_thread_state_change): Handle the case when the
18562         target thread is the current thread.
18563
18564         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18565
18566         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18567         emit_ptr_to_object_conv. 
18568
18569         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18570         marshalling. Fixes #71352.
18571
18572 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18573
18574         * metadata.h, blob.h: move table enum to blob.h so it can be included
18575         in any header.
18576         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18577         cut the size of MonoImage/MonoDynamicImage.
18578
18579 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18580
18581         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18582
18583 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18584
18585         * reflection.c, reflection.h, icall.c: add a function to check
18586         if an attribute type is defined for a metadata object.
18587
18588 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18589
18590         * object-internals.h: Added some needed fields from StringBuilder class.
18591         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18592
18593 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18594
18595         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18596         threads before shutting down the runtime.
18597
18598         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18599
18600 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18601
18602         * object-internal.h, threads.c: implement stacksize and 
18603         parameterized thread start functionality (requires
18604         matching corlib). Marked broken code for later removal.
18605
18606 2005-01-12  Martin Baulig  <martin@ximian.com>
18607
18608         * class-internals.h (MonoGenericClass): Moved the `initialized'
18609         flag to MonoDynamicGenericClass, removed `init_pending'.
18610         (MonoGenericInst): Added `is_reference' flag.
18611
18612 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18613
18614         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18615         inside the MSDOS header. Fixes #71201.
18616
18617         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18618         gc thread.
18619         (mono_domain_finalize): Ditto.
18620
18621 2005-01-12  Martin Baulig  <martin@ximian.com>
18622
18623         * class.c (mono_get_shared_generic_class): Use the cache for
18624         non-dynamic generic classes.
18625
18626         * class-internals.h (mono_class_create_generic_2): Removed
18627         function prototype, this function is now static inside class.c.
18628
18629         * class.c (mono_class_create_generic_2): Made this static, only
18630         call it from mono_class_init() and mono_class_setup_parent().
18631         (collect_implemented_interfaces_aux): Call mono_class_init() on
18632         the interfaces we collect.
18633         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18634
18635 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18636
18637         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18638         it a real thread handle.
18639
18640         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18641         MonoJitExceptionInfo, since each catch clause needs its own variable.
18642         
18643 2005-01-11  Dick Porter  <dick@ximian.com>
18644
18645         * image.c (mono_pe_file_open): New variant on mono_image_open()
18646         that does not set up the CLI metadata; used for FileVersionInfo so
18647         it can get the data for windows binaries too.
18648         
18649         * process.c (process_read_string_block): Don't read off the end of
18650         the StringTable block.
18651
18652         These both fix bug 70766.
18653
18654 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18655
18656         * gc.c: set some fields to NULL at GC cleanup time.
18657         * threads.c: if we quit the main thread, call exit ().
18658
18659 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18660
18661         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18662
18663 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18664
18665         * threads.h, threads.c, object.c: added accessor and settor for
18666         main_thread. Handle it specially when exiting from it: wait
18667         for other foreground threads to exit.
18668
18669 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18670
18671         * process.c, verify.c: remove some bloat.
18672
18673 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18674
18675         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18676         the calling convention to cdecl under win32.
18677
18678 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18679
18680         * object.c (mono_object_get_size): New function to get the size of
18681         an object instance.
18682
18683         * profiler.c (simple_allocation): Use above.
18684
18685 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18686
18687         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18688         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18689         get an appdomain by it's id and we can't assume the root's id is 0).
18690         * domain-internals.h: Change the function prototype to match.
18691         * icall.c: Change the icall table for AppDomain.
18692
18693 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18694
18695         * locales.c (string_invariant_compare_char): Only compute
18696         GUnicodeTypes in the case where we need them.  Test for ordinality
18697         first and return if so.
18698
18699         From the commit:
18700
18701                 /*
18702                  * FIXME: here we must use the information from c1type and c2type
18703                  * to find out the proper collation, even on the InvariantCulture, the
18704                  * sorting is not done by computing the unicode values, but their
18705                  * actual sort order.
18706                  */
18707
18708 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18709
18710         * loader.c: for P/Invoke methods, allow the "Internal" shared
18711         library name to refer to the calling process symbol namespace.
18712
18713 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18714
18715         * Makefile.am: Add the security manager to the build.
18716         * security-manager.c|h: New. Initialization of the security manager.
18717
18718 2005-01-07  Dick Porter  <dick@ximian.com>
18719
18720         * threads.c: 
18721         * monitor.c: Update thread state during Monitor and WaitHandle
18722         waits.  Fixes bug 71031.
18723
18724 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18725
18726         * reflection.c (property_encode_signature): Correctly handle when the
18727         property has no methods.
18728
18729 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18730
18731         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
18732         
18733         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
18734         fields from mb, not rmb. Fixes #71017.
18735
18736         * marshal.c (emit_ptr_to_str_conv): Add support for 
18737         ByValTStr -> string conversion. Fixes #71015.
18738
18739         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
18740
18741         * mempool.c (mono_mempool_contains_addr): New helper function.
18742
18743 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18744
18745         * metadata.c (mono_metadata_compute_size): Fix size calculation of
18746         HasSematics encoded fields.
18747         
18748         * metadata.c (mono_type_to_unmanaged): Improve error message for 
18749         invalid string marshalling.
18750
18751         * metadata.c: Fix warnings.
18752         
18753 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18754
18755         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
18756         profiler support.
18757
18758 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * domain.c object.c domain-internals.h: Revert part of r38077 since the
18761         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
18762         tests.
18763
18764 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18765
18766         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
18767         so methods containing these can be AOTed.
18768
18769 2005-01-03  Martin Baulig  <martin@ximian.com>
18770
18771         * loader.c (find_method): Removed the hack for generic instances.
18772         (method_from_memberref): If our parent is a generic instance, pass
18773         its generic type definition to find_method() and then inflate the
18774         method.
18775         (mono_get_method_constrained): Pass the generic type definition to
18776         find_method() and inflate the method later.
18777
18778         * class-internals.h (MonoStats): Added `generic_class_count'.
18779
18780         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
18781         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
18782
18783         * reflection.c (mono_custom_attrs_from_params): Don't ignore
18784         generic type definitions.
18785
18786 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18787
18788         * loader.c icall.c: Fix warnings.
18789
18790 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
18791
18792         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
18793         blittable types. Fixes #70864.
18794
18795 2004-12-29  Martin Baulig  <martin@ximian.com>
18796
18797         * icall.c
18798         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
18799
18800         * reflection.c (mono_method_get_object): Create a
18801         "System.Reflection.MonoGenericMethod" for inflated methods; don't
18802         call mono_get_inflated_method().
18803
18804         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
18805
18806 2004-12-27  Martin Baulig  <martin@ximian.com>
18807
18808         * class-internals.h (MonoMethod): Added `is_inflated' flag.
18809         (MonoMethodInflated): Added `inflated' field.
18810
18811         * class.c (mono_class_inflate_generic_method): Don't really
18812         inflate the method here; just set the `is_inflated' flag in the
18813         MonoMethod.
18814         (mono_class_get_inflated_method): Actually inflate the method here
18815         if it's not already inflated; we use the MonoMethodInflated's new
18816         `inflated' field as a cache.
18817
18818 2004-12-26  Martin Baulig  <martin@ximian.com>
18819
18820         * class.c
18821         (inflate_generic_class): Moved some code out of inflate_generic_type().
18822         (mono_class_inflate_generic_method): If we're already inflated,
18823         inflate the context and use the declaring method; ie. make sure
18824         the declaring method of an inflated method is always the generic
18825         method definition.
18826         (mono_class_create_from_typedef): Create
18827         `class->generic_container->context->gclass'.
18828
18829 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18830
18831         * metadata-internals.h, marshal.c, reflection.c: More
18832         MonoGHashTable->GHashTable.
18833
18834         * domain-internals.h, class.c: Change MonoGHashTable's into
18835         GHashTables for some cases where no gc stuff is used
18836
18837         All users: update apis
18838
18839 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
18840
18841         * metadata.c (builtin_types): Make this `const'. Makes this get
18842         put into the shareable section.
18843         (mono_metadata_init): Casts to make gcc happy.
18844
18845 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
18846
18847         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
18848
18849 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
18850
18851         * icall.c: Added an internal call to retrieve the position and length
18852         of assembly-level declarative security attributes (RequestMinimum, 
18853         RequestOptional and RequestRefuse). This is used by the Assembly class
18854         to re-create the corresponding permission sets.
18855
18856 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18857
18858         * marshal.c: fix the stelemref wrapper to be type correct
18859         (and faster).
18860
18861 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18862
18863         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
18864         to do key & 0x7fffffff. Hashtable already does this. It just
18865         results in longer code.
18866
18867 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18868
18869         * appdomain.c: Bump corlib version.
18870         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
18871         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
18872         * reflection.c|h: Add functions to get declarative security infos
18873         (blob position and length) for assemblies, classes and methods.
18874
18875 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
18876
18877         * reflection.c: sort the constant table (bug #70693).
18878
18879 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
18880
18881         * object-internals.h, threads.c, domain.c: add accessors for
18882         the MonoThread and MonoDomain tls keys.
18883
18884 2004-12-18  Martin Baulig  <martin@ximian.com>
18885
18886         * class.c (inflate_generic_type): If we're inflating a generic
18887         instance, set `ngclass->context->container = context->container';
18888         ie. the container we inflated into.
18889
18890         * metadata.c (mono_metadata_parse_generic_param): Reflect above
18891         inflate_generic_type() changes.
18892
18893 2004-12-17  Martin Baulig  <martin@ximian.com>
18894
18895         * class-internals.h
18896         (MonoGenericClass): Replaced `MonoType *generic_type' with
18897         `MonoClass *generic_class'.  Removed `dynamic_info'; if
18898         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
18899         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
18900
18901 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18902
18903         * exception.c (mono_exception_from_token): New helper function.
18904
18905 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18906
18907         * assembly.c (mono_assembly_load_with_partial_name): Call 
18908         mono_assembly_loaded before invoking the preload hooks. Fixes
18909         #70564.
18910
18911         * object-internals.h (MonoThread): Change culture_info and 
18912         ui_culture_info into an array.
18913
18914         * threads.c: Cache culture info objects from more than one appdomain.
18915
18916         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
18917         current UI culture.
18918
18919 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18920
18921         * threads.h threads.c appdomain.c: Clear the culture_info field of
18922         all threads during unloading if they point to an object in the dying
18923         appdomain.
18924
18925 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
18926
18927         * culture-info.h (TextInfoEntry): New struct
18928         * object-internals.h: sync with managed
18929         * locales.c: fill the `text_info_data' field
18930         * culture-info-tables.h: update
18931
18932 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18933
18934         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
18935         collector.
18936
18937 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
18938
18939         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
18940         (ves_icall_ModuleBuilder_getMethodToken): Ditto
18941
18942 2004-12-12  Martin Baulig  <martin@ximian.com>
18943
18944         * mono-debug-debugger.c (write_type): If we're an enum and the
18945         builtin types have already been initialized, call mono_class_init().
18946
18947 2004-12-11  Martin Baulig  <martin@ximian.com>
18948
18949         * metadata.c (mono_metadata_load_generic_params): Added
18950         `MonoGenericContainer *parent_container' argument; automatically
18951         compute `container->is_method'; pass the correct owner to
18952         get_constraints().      
18953
18954         * reflection.c (compare_genericparam): Sort the GenericParam table
18955         according to increasing owners. 
18956
18957 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18958
18959         * profiler.c: allow disabling the default profiler.
18960
18961 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
18962
18963         * decimal.c, icall.c: allow disabling System.Decimal support.
18964
18965 2004-12-09  Marek Safar <marek.safar@seznam.cz>
18966
18967         * reflection.c: Add support for null attribute arguments.
18968
18969 2004-12-09  Martin Baulig  <martin@ximian.com>
18970
18971         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
18972         names to get rid of compiler warnings.
18973
18974 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18975
18976         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
18977         mono_marshal_load_type_info (). Fixes #69625.
18978         (mono_marshal_get_ptr_to_struct): Likewise.
18979
18980 2004-12-08  Martin Baulig  <martin@ximian.com>
18981
18982         * mono-debug.h: Bumped version number to 47.
18983
18984         * mono-debug-debugger.c
18985         (mono_debugger_event_handler, mono_debugger_event): Take two
18986         guint64 arguments insteed of a gpointer and a guint32.  
18987
18988 2004-12-08  Martin Baulig  <martin@ximian.com>
18989
18990         * debug-mono-symfile.h
18991         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
18992         `address' to `native_offset'.
18993
18994 2004-12-08  Martin Baulig  <martin@ximian.com>
18995
18996         * class.c (mono_class_create_from_typespec): Only inflate if we
18997         either have `context->gclass' or `context->gmethod'.
18998
18999 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19000
19001         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
19002
19003         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
19004
19005         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
19006
19007         * reflection.c (mono_assembly_get_object): Remove the workaround put
19008         in for the release.
19009         
19010         * appdomain.c: Use the corlib_internal field from MonoAssembly.
19011
19012         * appdomain.c: Bump corlib version.
19013
19014         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
19015         be visible in other appdomains.
19016
19017 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
19018
19019         * threads.c: Interlocked inc and dec for longs were messed up,
19020         use a KISS based impl for this. Fixes 70234
19021
19022 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19023
19024         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
19025
19026 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
19027
19028         * icall.c: fix to follow policy not to allow struct
19029         arguments in icalls.
19030
19031 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19032
19033         * process.c: make the patch that handles spaces in file paths work
19034         on mono/windows too.
19035
19036 2004-12-06  Martin Baulig  <martin@ximian.com>
19037
19038         * class.c (mono_class_create_generic): Call
19039         mono_class_setup_supertypes() if we're dynamic.
19040         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
19041
19042 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19043
19044         * object-internals.h: Add new fields to MonoThread.
19045
19046         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19047
19048         * icall.c threads-types.h threads.c: Add new icalls.
19049
19050         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
19051
19052         * object-internals.h (MonoReflectionAssembly): Sync object layout with
19053         managed side.
19054
19055         * appdomain.c: Bump corlib version.
19056
19057         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
19058         internal assemblies. Fixes #69181.
19059
19060 2004-12-05  Martin Baulig  <martin@ximian.com>
19061
19062         * class.c (mono_class_inflate_generic_signature): Make this a
19063         no-op if `context' is NULL or we don't have any type parameters;
19064         also copy `sentinelpos'.        
19065
19066 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * image.c: Add unbox_wrapper_cache.
19069
19070         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
19071
19072         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
19073         function generator.
19074         
19075         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
19076         Fixes #70173.
19077
19078         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
19079         
19080 2004-12-04  Martin Baulig  <martin@ximian.com>
19081
19082         * loader.c (mono_method_get_signature_full): New public function;
19083         like mono_method_get_signature(), but with an additional
19084         `MonoGenericContext *' argument.
19085
19086         * class.c (mono_class_inflate_generic_signature): Formerly known
19087         as inflate_generic_signature(); make this public.
19088
19089 2004-12-04  Martin Baulig  <martin@ximian.com>
19090
19091         * metadata.c
19092         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
19093         instead of a `MonoGenericContainer *'.  
19094         (mono_metadata_parse_array_full): Likewise.
19095         (mono_metadata_parse_signature_full): Likewise.
19096         (mono_metadata_parse_method_signature_full): Likewise.
19097         (mono_metadata_parse_generic_inst): Likewise.
19098         (mono_metadata_parse_generic_param): Likewise.
19099         (mono_metadata_parse_mh_full): Likewise.
19100         (mono_type_create_from_typespec_full): Likewise.
19101
19102 2004-12-03  Martin Baulig  <martin@ximian.com>
19103
19104         * class-internals.h (MonoGenericContainer): Replaced the
19105         `MonoGenericContext * pointer with a `MonoGenericContext'
19106         structure and made it the first element.
19107
19108 2004-12-03  Martin Baulig  <martin@ximian.com>
19109
19110         * class.c
19111         (inflate_generic_type): Set the `context->container' when creating
19112         a new MonoGenericContext.
19113         (mono_class_inflate_generic_method): Likewise.
19114         (mono_class_create_from_typespec): Just use `context->container'
19115         to get the container.
19116
19117         * loader.c (method_from_methodspec): Set `context->parent' from
19118         `context->container' - and if that's a method container, use its
19119         parent.  Also set the `context->container' when creating a new
19120         MonoGenericContext.
19121         (mono_get_method_from_token): Use just `context->container' to get
19122         the container.
19123
19124         * metadata.c (do_mono_metadata_parse_generic_class): Also set
19125         `gclass->context->container'.
19126
19127         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
19128         the `context->container' when creating a new MonoGenericContext.
19129
19130 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
19131
19132         * reflection.c (compare_genericparam): Sort params with identical
19133         owner by their number. Fixes gen-111 on sparc.
19134
19135 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19136
19137         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
19138         around the domain changes.
19139
19140         * appdomain.c (mono_domain_unload): Handle the case when the thread
19141         calling Unload is itself being aborted during unloading. Fixes #70022.
19142
19143         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
19144
19145         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
19146         checkpoint_func as an icall so it gets a wrapper.
19147         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
19148         in the cross-appdomain wrappers too.
19149
19150         * threads.c (mono_thread_has_appdomain_ref): Make this public.
19151
19152         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
19153
19154         * reflection.c: Fix some memory leaks.
19155         
19156 2004-12-02  Martin Baulig  <martin@ximian.com>
19157
19158         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
19159
19160         * metadata.c (generic_class_cache): New static hashtable.
19161         (mono_metadata_lookup_generic_class): New public method.
19162
19163 2004-12-02  Martin Baulig  <martin@ximian.com>
19164
19165         * class.c (mono_class_create_from_typedef): Call
19166         mono_class_setup_parent() and mono_class_create_mono_type() before
19167         parsing the interfaces.
19168
19169 2004-12-02  Martin Baulig  <martin@ximian.com>
19170
19171         * metadata.c (generic_inst_cache): New static hashtable.
19172         (mono_metadata_lookup_generic_inst): New public function.
19173         (mono_metadata_inflate_generic_inst): New public function.
19174         (mono_metadata_parse_generic_inst): New public function.
19175         (do_mono_metadata_parse_generic_class): Use the new
19176         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
19177         since this'll also use the cache.
19178
19179         * reflection.c (mono_reflection_bind_generic_method_parameters):
19180         Use mono_metadata_lookup_generic_inst() to use the new cache.
19181
19182         * class.c (inflate_mono_type): Use
19183         mono_metadata_inflate_generic_inst() to inflate a generic
19184         instance; this'll also use the new cache.
19185
19186         * loader.c (method_from_methodspec): Use
19187         mono_metadata_parse_generic_inst() and
19188         mono_metadata_inflate_generic_inst() rather than parsing it
19189         manually, so we can use the new cache.
19190
19191 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19192
19193         * threads.c (wait_for_tids): Do not incorrectly free threads when 
19194         the wait times out.
19195
19196 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19197
19198         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
19199         iter->args based on whether parameters are passed in registers (i.e.
19200         MONO_ARCH_REGPARMS is defined)
19201
19202 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
19203
19204         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
19205         the exception message. Fixes #70070.
19206         (method_from_methodspec): Fix warnings.
19207
19208 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19209
19210         * process.c: (complete_path) return the path quoted
19211
19212 2004-12-01  Martin Baulig  <martin@ximian.com>
19213
19214         * class-internals.h (MonoGenericInst): New structure.
19215         (MonoGenericClass): Replaced `type_argc', `type_argv' and
19216         `is_open' with `MonoGenericInst *inst'.
19217         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
19218         `is_open' with `MonoGenericInst *inst'.
19219
19220 2004-11-30  Martin Baulig  <martin@ximian.com>
19221
19222         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
19223
19224         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
19225         to `generic_class_cache'.
19226
19227         * metadata.c
19228         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
19229         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
19230         (mono_generic_inst_is_valuetype): Renamed to
19231         mono_generic_class_is_valuetype().
19232
19233         * class-internals.h
19234         (MonoGenericInst): Renamed to MonoGenericClass.
19235         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
19236         (MonoClass): Renamed `generic_inst' to `generic_class'.
19237         (MonoGenericContext): Renamed `ginst' to `gclass'.
19238
19239         * object-internals.h
19240         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
19241
19242         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
19243         mono_reflection_generic_class_initialize().
19244
19245         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
19246         now known as "System.Reflection.MonoGenericClass".
19247         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
19248
19249 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
19250
19251         * class-internals.h: Added a flag field to MonoClass to cache the
19252         declarative security attributes actions associated with the class.
19253         * domain-internals.h: Added booleans to MonoJitInfo to cache the
19254         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
19255         applicable to the JITted method.
19256         * reflection.c|h: Added functions to extract (as flags) which security
19257         actions are available (declaratively) for a method, class or assembly.
19258         * metadata.c|h: Added functions to search the declarative security
19259         table in the metadata.
19260         
19261 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
19262
19263         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
19264         EXPORTEDTYPES are already in the class name cache, so there is no
19265         need to add extra code here to look at them. Just removes a bit of
19266         cruft.
19267
19268         (ves_icall_System_Environment_get_TickCount): No need for #if
19269         WINDOWS. We already have the code in io-layer.
19270
19271 2004-11-28  Martin Baulig  <martin@ximian.com>
19272
19273         * loader.c
19274         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
19275         Fixes gen-112.cs.
19276
19277 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
19278
19279         * assembly.c (do_mono_assembly_open): Instead of having a
19280         conditional WITH_BUNDLE, incorporate support for bundles here, by
19281         having a global `bundles' variable holding a pointer to the actual
19282         bundles. 
19283
19284         (mono_register_bundled_assemblies): New API call used by the
19285         bundle code. 
19286
19287         See mkbundle.1 for details.
19288         
19289 2004-11-27  Martin Baulig  <martin@ximian.com>
19290
19291         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
19292         the vtable for generic methods.
19293
19294 2004-11-26  Martin Baulig  <martin@ximian.com>
19295
19296         * metadata.c
19297         (mono_metadata_generic_method_hash): New public function.
19298         (mono_metadata_generic_method_equal): Likewise.
19299
19300         * class-internals.h
19301         (MonoGenericContainer): Added `GHashTable *method_hash'.
19302
19303         * reflection.c (ReflectionMethodBuilder): Added
19304         `MonoGenericContainer *generic_container'.
19305         (reflection_methodbuilder_to_mono_method): Don't create a new
19306         MonoGenericContainer each time we're called.
19307         (mono_reflection_bind_generic_method_parameters): Use
19308         `container->method_hash' to cache the results so we don't create a
19309         different method if we're called several times with the same
19310         arguments.
19311
19312         * loader.c (method_from_methodspec): Use the new
19313         `container->method_hash' here, too.
19314
19315 2004-11-26  Martin Baulig  <martin@ximian.com>
19316
19317         * class.c (inflate_generic_signature): Correctly compute
19318         `res->has_type_parameters'.
19319         (mono_class_vtable): Use the `has_type_parameters' flag to
19320         determine whether we're a generic method.
19321
19322         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
19323
19324 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19325
19326         * object.c (mono_runtime_run_main): Fix a small memory leak.
19327
19328 2004-11-25  Martin Baulig  <martin@ximian.com>
19329
19330         * class.c (set_generic_param_owner): Fixed the loop.
19331
19332 2004-11-25  Martin Baulig  <martin@ximian.com>
19333
19334         * object.c (mono_class_vtable): Don't create any JIT wrappers for
19335         generic methods.
19336
19337 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19338
19339         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
19340         names. Fixes #69787.
19341
19342 2004-11-24  Martin Baulig  <martin@ximian.com>
19343
19344         * class.c (mono_class_create_generic_2): If we don't have a
19345         `ginst->parent', inflate `gklass->parent' to get our parent.
19346
19347 2004-11-24  Martin Baulig  <martin@ximian.com>
19348
19349         * reflection.c (compare_genericparam): Correctly sort the
19350         GenericParam table; fixes #69779.
19351
19352 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
19353
19354         * reflection.c: When writing a PE file, don't create a huge
19355         buffer in memory. Just write the arrays we have to the file.
19356         This reduces memory usage.
19357
19358         * metadata-internals.h: MonoDynamicStream pefile is no longer used
19359         globally.
19360
19361 2004-11-17  Martin Baulig  <martin@ximian.com>
19362
19363         * class.c (mono_class_init): Don't setup `class->parent' for
19364         dynamic instances; moved this to mono_class_generic_2().
19365         (mono_class_create_generic): Also set `klass->inited' for dynamic
19366         generic instances.
19367         (mono_class_create_generic_2): Don't do anything for dynamic
19368         generic instances.  Set `klass->parent' here and also call
19369         mono_class_setup_parent() here. 
19370
19371         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
19372         `MonoType *parent' argument; set `ginst->parent' before calling
19373         mono_class_create_generic_2(), so we set the correct parent.
19374
19375 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
19376
19377         * reflection.c: allow getting attributes from ModuleBuilder
19378         (used by ikvm).
19379
19380 2004-11-17  Martin Baulig  <martin@ximian.com>
19381
19382         * class.c (mono_class_create_from_typedef): If a type parameter is
19383         inherited from an outer class, set its owner to that class.
19384
19385 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
19386
19387         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
19388           for (int*) written size. This fixes bug #69592.
19389
19390 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19391
19392         * icall.c: Added IsAuthenticodePresnet internal call.
19393         * image.c|h: New function that check a MonoImage for an Authenticode
19394         signature in the certificate PE data directory.
19395         * security.c|h: New internal call to ask the runtime if an 
19396         Authenticode signature seems referenced in the PE header.
19397
19398 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
19399
19400         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
19401
19402         * reflection.c (mono_image_create_pefile): Free the assembly streams
19403         after writing out the assembly file.
19404
19405         * object.c (mono_runtime_run_main): Fix small memory leak.
19406
19407         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
19408         property access modifiers. Fixes #69389.
19409
19410 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19411
19412         * domain.c, object.c, object-internals.h, domain-internals.h,
19413         object.h, marshal.c: keep dynamic code info per domain.
19414
19415 2004-11-15  Martin Baulig  <martin@ximian.com>
19416
19417         * class.c (mono_type_get_name_recurse): Put type arguments in
19418         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19419         see bug #68387.
19420
19421 2004-11-15  Martin Baulig  <martin@ximian.com>
19422
19423         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19424         (mono_class_setup_vtable): When computing `the_cname' for a
19425         generic instance, don't include the namespace since we'd otherwise
19426         add it twice.
19427
19428 2004-11-15  Martin Baulig  <martin@ximian.com>
19429
19430         * class.c (mono_class_create_generic): Changed return type to void.
19431         (mono_class_create_generic_2): New public function; setup
19432         `class->method', `class->field' and `class->interfaces' here
19433         instead of in mono_class_init().
19434
19435         * class.h (mono_class_create_generic): Moved to class-internals.h.
19436
19437 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19438
19439         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19440         rather than writing to memory, write to this file. Right now,
19441         we are just writting into a buffer, and copying that. However
19442         we can avoid the buffer later.
19443
19444         (mono_dynamic_stream_reset): new function
19445
19446         * icall.c, object-internals.h: update for the above.
19447
19448 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19449
19450         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19451         have been using gc'd memory. First it is slower, unlikely
19452         the comment in the source code said, secondly, it increases
19453         our footprint to do it in the gc.
19454
19455         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19456         the method so that it does not have to copy to managed code.
19457
19458 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19461
19462 2004-11-12  Martin Baulig  <martin@localhost>
19463
19464         * reflection.c (mono_image_create_token): Allow generic method
19465         definitions here, since they may appear in an `.override'; see
19466         gen-98/gen-99 for an example.
19467
19468 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19469
19470         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19471         #69365.
19472
19473         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19474         descriptive.
19475
19476 2004-11-11  Martin Baulig  <martin@ximian.com>
19477
19478         * class.c (mono_class_setup_vtable): In an explicit interface
19479         implementation, the method name now includes the arity.
19480
19481 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19482
19483         * object.c (mono_array_full_copy): Fix warning.
19484
19485 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19486
19487         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19488         mono_class_get_method_from_name() instead.
19489         
19490         * class-internals.h: Added two new types of wrappers. 
19491         Added MonoRemotingTarget enum. Added new trampoline function type, which
19492         takes an additional MonoRemotingTarget value as parameter, so it is
19493         possible to request a trampoline for a specific target.
19494         
19495         * class.c: Added new mono_class_get_method_from_name() method.
19496         
19497         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19498         general remoting sinks and one specific for cross domain calls.
19499         
19500         * debug-helpers.c: Added new wrapper names.
19501         
19502         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19503         of a remote class.
19504         
19505         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19506         
19507         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19508         with several other methods (mono_marshal_get_xappdomain_dispatch,
19509         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19510         and others) can generate a fast remoting wrapper for cross domain calls.
19511         More information can be found in docs/remoting.
19512         Other changes: Removed mono_find_method_by_name, and used
19513         mono_class_get_method_from_name instead.
19514         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19515         is stored in the remoting invoke hashtable.
19516         
19517         * marshal.h: published the new method for getting the xdomain wrapper,
19518         and also added a method for getting the adequate wrapper for a given
19519         method and target.
19520         
19521         * object-internals.h, object.c: Added a couple of methods for capying and
19522         cloning arrays.
19523         Modified mono_install_remoting_trampoline, which takes the new remoting
19524         trampoline that has a remoting target as parameter.
19525         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19526         will return the most suitable vtable for the target.
19527         Added mono_remote_class_vtable, which returns the vtable of a remote class
19528         (which can be the normal remoting vtable or the xdomain vtable).
19529         
19530         * threads.c: the xdomain invoke and dispatch wrappers must also be
19531         protected against interruptions.
19532
19533 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19534
19535         * icall.c: use memmove in BlockCopyInternal when the source and
19536         destination arrays are the same.
19537
19538 2004-11-09  Martin Baulig  <martin@ximian.com>
19539
19540         * class-internals.h (MonoGenericContainer): Removed `method' and
19541         `signature', replaced them with `is_method' and `is_signature'
19542         flags.  Added `context'.
19543
19544         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19545         instead of a `MonoGenericContainer *'.
19546
19547         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19548         for dynamic type parameters.
19549         (mono_metadata_load_generic_params): Setup `container->context'.
19550
19551         * reflection.c (mono_reflection_setup_generic_class): Setup
19552         `tb->generic_container->context'.
19553         (do_mono_reflection_bind_generic_parameters): Use
19554         mono_class_inflate_generic_type() to correctly inflate types,
19555         rather than using our own hack just for MONO_TYPE_VAR.
19556
19557 2004-11-09  Martin Baulig  <martin@ximian.com>
19558
19559         * class.c (mono_class_inflate_generic_method): Small fix; don't
19560         crash here.
19561
19562         * icall.c
19563         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19564         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19565         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19566         (ves_icall_Type_BindGenericParameters): Likewise.
19567         (ves_icall_Type_get_IsGenericInstance): Likewise.
19568         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19569         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19570         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19571         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19572
19573 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19574
19575         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19576         assembly versions and public key tokens. Fixes #69113.
19577
19578 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19579
19580         * metadata.c: fix bug introduced with the type cache changes
19581         on 2004-11-06.
19582
19583 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19584
19585         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19586         the MonoClass pointer instead of the token in exception clauses.
19587         * reflection.c: updates for the above and make the code not depend
19588         on the structure of MonoExceptionClause.
19589
19590 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19591
19592         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19593         Add support for dynamic assemblies. Fixes #69114.
19594
19595         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19596
19597 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19598
19599         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19600         since most only those methods use it. the code member of
19601         MonoMethodPInvoke was dead, so that can be removed too. Also,
19602         remove inline_count (again, not used), and move slot so that it
19603         can share bits with some other flags. This saves 8 bytes in the
19604         structure and gives us about 50 kb back for mcs helloworld.cs
19605
19606         * *.[ch]: Do naming changes for the above.
19607
19608         * loader.c (mono_method_get_header): Lazily init the header
19609         on first access.
19610         (mono_get_method_from_token): don't init the header here
19611         (mono_free_method): the header may never be allocated
19612
19613         Overall, this saves 150 kb of unmanaged allocations
19614         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19615         memory at runtime.
19616         
19617         * loader.c, loader.h (mono_method_get_header): new accessor.
19618
19619         * *.[ch]: use the above method. Prepares us to lazily load
19620         the header.
19621
19622         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19623         three warnings, which are actual bugs (see 69206).
19624
19625         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19626         unused. Saves a cool 4 bytes / method.
19627
19628 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19629
19630         * metadata.c (builtin_types): Add types for System.Object here.
19631         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19632         for a class or valuetype from klass->this_arg or klass->byval_arg.
19633
19634         On mcs for a hello world, this gets us down from 21836 MonoType's
19635         to 14560.
19636
19637         (mono_metadata_free_type): Account for the above change.
19638
19639 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19642         exception instead of asserting if name is null.
19643         (ves_icall_System_AppDomain_GetData): Ditto.
19644
19645 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19646
19647         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19648         EnumBuilder.
19649
19650         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19651         Return NULL when the domain does not have entry_assembly set.
19652
19653         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19654         Add a 'resource_modules' argument.
19655         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19656
19657         * reflection.c (mono_reflection_create_runtime_class): Move setting
19658         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19659         for enums too.
19660
19661         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19662         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19663         Throw an ArgumentNullException if 'ptr' is null.
19664
19665         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19666         assemblies here. Fixes #69020.
19667
19668 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19669
19670         * reflection.c (build_compressed_metadata): Fix the previous patch for
19671         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19672         the stack.
19673
19674 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19675
19676         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19677         the cultures is false. Fixes #69090.
19678
19679         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19680         detected by valgrind.
19681         
19682         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19683         TypeResolve multiple times for the same type. Fixes #65577.
19684
19685 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19686
19687         * marshal.c: Avoid using ldftn to call managed functions. It is
19688         much slower than just a call.
19689
19690         * reflection.c (mono_module_get_object): free the basename we
19691         allocate here from glib.
19692         
19693         * reflection.c (ensure_runtime_vtable): make sure to free
19694         overrides.  Also, we were allocating an array of MonoMethod not an
19695         array of MonoMethod*.
19696
19697         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19698
19699         * image.c (mono_image_close): free image->guid here.
19700
19701 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19702
19703         * reflection.c: Fix some spec conformance issues with the PE file
19704         structures so mcs compiled apps run on the Net 2.0 beta.
19705
19706 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19707
19708         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19709         Implement this. Fixes #67264.
19710
19711         * debug-helpers.h debug-helpers.c marshal.c: Move 
19712         mono_find_method_by_name to debug-helpers.c.
19713
19714 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19715
19716         * object.c (mono_release_type_locks): type_initialization_hash is
19717         a GHashTable.
19718
19719         * reflection.c object.c object-internals.h: Fix warnings.
19720
19721         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19722         without accessors. Fixes #61561.
19723
19724         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19725         application base from the root domain if not set. Fixes #65641.
19726         (mono_runtime_init): Fix warning.
19727
19728 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19729
19730         * appdomain.c: call mono_thread_pool_init.
19731         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
19732         of worker threads based on the number of CPUs and the environment
19733         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
19734         for non-windows (windows) systems.
19735
19736 2004-10-27  Chris Toshok  <toshok@ximian.com>
19737
19738         * mono-debug-debugger.c (write_class): don't call mono_class_init
19739         here, as even with the check for (!klass->init_pending), we get
19740         into a situation where we're hitting cycles in class
19741         initialization.  Fixes #68816.
19742
19743 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19744
19745         * image.c: Avoid overwriting values in the loaded_images_hash when an
19746         assembly is loaded multiple times. Fixes #61152.
19747
19748         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
19749         so multiple satellite assemblies for the same name can be loaded.
19750         Fixes #68259.
19751
19752         * mono_domain_assembly_preload: Actually return the loaded assembly, 
19753         not NULL.
19754
19755         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
19756         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
19757
19758         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
19759         pending finalizers are not invoked after the appdomain has been 
19760         unloaded. Fixes #67862.
19761
19762 2004-10-22  Martin Baulig  <martin@ximian.com>
19763
19764         * mono-debug-debugger.c
19765         (mono_debugger_runtime_invoke): Don't box valuetypes.
19766
19767 2004-10-22  Chris Toshok  <toshok@ximian.com>
19768
19769         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
19770         don't hide private methods.
19771
19772 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
19773
19774         * icall.c: Allows the runtime to "share" (when known) the public key
19775         token of an assembly. This avoid the need to recalculate the token 
19776         (from the public key) in managed code.
19777
19778 2004-10-21  Chris Toshok  <toshok@ximian.com>
19779
19780         * debug-helpers.c (append_class_name): argh, revert last patch.
19781         
19782 2004-10-21  Chris Toshok  <toshok@ximian.com>
19783
19784         * debug-helpers.c (append_class_name): use '+' as the delimiter,
19785         not '/', so that it matches what the debugger uses to look up
19786         methods.
19787
19788 2004-10-21  Martin Baulig  <martin@ximian.com>
19789
19790         * mono-debug-debugger.c (mono_debugger_throw_exception): New
19791         public method; this is called each time an exception is thrown and
19792         allows the debugger to use exception catch points.
19793
19794 2004-10-21  Martin Baulig  <martin@ximian.com>
19795
19796         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
19797         the stack pointer and the exception object in some struct and pass
19798         that to the debugger.
19799
19800 2004-10-21  Chris Toshok  <toshok@ximian.com>
19801
19802         * mono-debug-debugger.c (do_write_class): add instance/static
19803         event support.  We don't expose "raise" or "other" yet.
19804         (event_is_static): new method.
19805
19806 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
19807
19808         * mono-debug-debugger.c
19809         (mono_debugger_handle_exception): Remove
19810         bogus return value for fussy compilers.
19811
19812 2004-10-20  Martin Baulig  <martin@ximian.com>
19813
19814         * mono-debug-debugger.c
19815         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
19816         (mono_debugger_handled_exception): Likewise.
19817
19818 2004-10-20  Martin Baulig  <martin@ximian.com>
19819
19820         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19821         MONO_DEBUGGER_EVENT_EXCEPTION.
19822
19823         * mono-debug-debugger.c (mono_debugger_handle_exception): New
19824         public function to send the debugger a notification for an
19825         exception and inform it about a catch/finally clause.
19826
19827 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
19828
19829         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
19830         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
19831         fix 2.95 build. 
19832
19833         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
19834
19835 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19836
19837         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
19838         marshalled as [In,Out]. Fixes #58325.
19839
19840 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * reflection.c (mono_method_body_get_object): Implement some fields.
19843
19844 2004-10-12  Martin Baulig  <martin@ximian.com>
19845
19846         * reflection.c (mono_reflection_bind_generic_parameters): Small
19847         fix, correctly retrieve our parent from a generic instance.
19848
19849 2004-10-12  Martin Baulig  <martin@ximian.com>
19850
19851         * metadata.c (mono_metadata_generic_param_equal): We always have
19852         an owner.
19853
19854         * class.c
19855         (mono_class_from_generic_parameter): We need to have an owner.
19856         (my_mono_class_from_generic_parameter): Likewise.
19857
19858         * reflection.c (mono_reflection_setup_generic_class): Renamed to
19859         mono_reflection_create_generic_class() and added a new
19860         mono_reflection_setup_generic_class().  
19861         (mono_reflection_initialize_generic_param): If we're a nested
19862         generic type and inherited from the containing class, set our
19863         owner to the outer class.
19864
19865 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
19866
19867         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
19868
19869         * reflection.c (mono_method_body_get_object): New function to create
19870         a MethodBody object.
19871
19872         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
19873
19874 2004-10-11  Martin Baulig  <martin@ximian.com>
19875
19876         * metadata.c (_mono_metadata_type_equal): Renamed to
19877         do_mono_metadata_type_equal() and made static.
19878
19879 2004-10-11  Martin Baulig  <martin@ximian.com>
19880
19881         * appdomain.c: Bump corlib version number to 28.
19882
19883 2004-10-10  Martin Baulig  <martin@ximian.com>
19884
19885         * class-internals.h
19886         (MonoGenericInst): Added `MonoGenericContainer *container'.
19887         (MonoGenericMethod): Likewise.
19888         (MonoGenericContext): Likewise.
19889         (MonoGenericParam): Added `MonoGenericContainer *owner'.
19890
19891         * metadata.c
19892         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
19893         (do_mono_metadata_parse_generic_inst): Likewise.
19894         (mono_metadata_parse_type_full): New public method.  This is the actual
19895         mono_metadata_parse_type() implementation - with an additional
19896         `MonoGenericContainer *' argument.
19897         (mono_metadata_parse_array_full): Likewise.
19898         (mono_metadata_parse_signature_full): Likewise.
19899         (mono_metadata_parse_method_signature_full): Likewise.
19900         (mono_metadata_parse_mh_full): Likewise.
19901         (mono_type_create_from_typespec): Likewise.
19902         (mono_metadata_interfaces_from_typedef_full): New public method;
19903         this is similar to the other _full() methods, but we take a
19904         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
19905         (mono_metadata_parse_generic_param): Take an additional
19906         `MonoGenericContainer *' argument and lookup the MonoGenericParam
19907         from that container.
19908         (mono_metadata_generic_param_equal): New static method to compare
19909         two type parameters.
19910         (_mono_metadata_type_equal): New static method; takes an
19911         additional `gboolean signature_only' argument - if true, we don't
19912         compare the owners of generic parameters.
19913         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
19914         with a TRUE argument - do a signature-only comparision.
19915
19916         * loader.c: Use the new _full() methods and pass the
19917         MonoGenericContainer to them.
19918
19919         * object-internals.h (MonoReflectionTypeBuilder): Added
19920         `MonoGenericContainer *generic_container' field.
19921         (MonoReflectionMethodBuilder): Likewise.
19922
19923 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19924
19925         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
19926         case initial images of dynamic assemblies.
19927
19928         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
19929
19930         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
19931
19932         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
19933         length of event->other array.
19934         (typebuilder_setup_events): Ditto.
19935
19936         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
19937         'assembly_by_name' and add an 'assemblies' list.
19938
19939         * assembly.h assembly.c: Add a new search hook for determining whenever
19940         an assembly is already loaded. Use this instead of searching in the
19941         loaded_assemblies list.
19942
19943         * domain.c appdomain.c: Implement the new search hook so loaded 
19944         assemblies are now scoped by appdomain. Fixes #67727.
19945
19946 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
19947
19948         * threads.c (mono_thread_attach): Initialize synch_lock field so
19949         mono_thread_detach works again.
19950
19951         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
19952         'lib' too. Fixes #63130.
19953
19954 2004-10-06  Jackson Harper  <jackson@ximian.com>
19955
19956         * culture-info-tables.h: regenerated.
19957
19958 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
19961         implemented by other interfaces in the result. Fixes #65764.
19962         
19963         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19964         Handle unloadable modules without crashing.
19965
19966         * image.c (load_modules): Revert the previous patch since modules must
19967         have a fixed index inside the array.
19968         
19969         * image.c (load_modules): Don't include native modules in the modules
19970         array.
19971
19972 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19973
19974         * reflection.h: Add param_defaults field.
19975
19976         * reflection.c: Add support for parameter defaults in dynamic methods.
19977         Fixes #64595.
19978
19979         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
19980         an empty string when a type has no namespace. Fixes #64230.
19981
19982 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
19983
19984         * tabledefs.h: Added "internal" security actions to support non-CAS
19985         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
19986         Note: they do not seems to be used anymore in 2.0 (new metadata format)
19987
19988 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
19989
19990         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
19991         constructor of abstract class. Fixes #61689.
19992
19993 2004-10-04  Martin Baulig  <martin@ximian.com>
19994
19995         * class-internals.h (MonoGenericContainer): New type.
19996         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
19997         `MonoGenericContainer *generic_container'.
19998         (MonoClass): Replaced `gen_params' and `num_gen_params' with
19999         `MonoGenericContainer *generic_container'.
20000
20001         * metadata.c (mono_metadata_load_generic_params): Return a
20002         `MonoGenericContainer *' instead of a `MonoGenericParam *';
20003         removed the `num' argument.
20004
20005 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
20008         for dynamic images.
20009
20010         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
20011         machine fields.
20012
20013         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
20014
20015         * reflection.c: Save pe_kind and machine values into the generated
20016         image file.
20017
20018         * appdomain.c: Bump corlib version number.
20019
20020         * object-internals.h: Reorganize layout of LocalBuilder.
20021
20022         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
20023         New helper function.
20024
20025         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
20026         created MonoType for dynamic types. Fixes #66180.
20027
20028 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
20029
20030         * threadpool.c: the ares hashtable needs a critical section around it.
20031         this prevents some nasty segfaults
20032
20033 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20034
20035         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
20036         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
20037         bug 67324).
20038         
20039 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20040
20041         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
20042         
20043 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20044
20045         * image.c: Always canonicalize image file names, to avoid loading
20046         the same assembly twice when referenced using a relative path.
20047
20048 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20049
20050         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
20051
20052         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
20053
20054         * marshal.c: Fix warnings.
20055
20056 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
20057
20058         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
20059         attempting to marshal the delegate_trampoline as the method_addr.
20060         This patch has a static hashtable of marshalled delegates so that 
20061         we can map delegate_trampoline addresses back to delegates.  This
20062         allows a delegate passed to managed code to be passed back into native
20063         code.  Fixes #67039
20064
20065 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20066
20067         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
20068
20069         * reflection.c (method_encode_code): Align method headers properly.
20070         Fixes #66025.
20071
20072 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20073
20074         * marshal.c: In the runtime invoke wrapper, reset the abort
20075         exception if it is cached. This avoids the automatic rethrowal of 
20076         the exception after the catch of the wrapper. Also check for pending
20077         interruptions before calling the managed method. This is done using
20078         the new method emit_thread_force_interrupt_checkpoint, since the
20079         normal checkpoint method is ignored when running the invoke wrapper.
20080         * object.c: If the abort exception is rethrown, set the abort_exc
20081         field of the thread, so it will be rethrown aftere every catch.
20082         * threadpool.c: Only run an interruption checkpoint if what has been
20083         requested is a stop of the thread (aborts will be ignored).
20084         * threads.c: By default, a thread will now never be interrumped while
20085         running the runtime invoke wrapper (this ensures that runtime_invoke
20086         will always return to the caller if an exception pointer is provided).
20087         There is a new special method mono_thread_force_interruption_checkpoint()
20088         to force an interruption checkpoint even if running a protected
20089         wrapper, which is used by the same runtime invoke wrapper to do a check
20090         at a safe point.
20091
20092 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20093
20094         * object.c, object-internals.h: Implemented mono_release_type_locks,
20095         which releases the cctor locks held by a thread.
20096         * threads.c, threads.h: In thread_cleanup, release cctor locks held
20097         by a thread. Added mono_thread_exit() method to be used to safely stop
20098         a thread.
20099
20100 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20101
20102         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20103         Move null check before dereference.  Avoid indexing beyond the end
20104         of the 'modules' array.
20105
20106 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20107
20108         * metadata-internals.h (MonoImage): Add module_count field.
20109         * image.c (load_modules): Set image->module_count.
20110         (mono_image_load_file_for_image): Use image->module_count.
20111         * reflection.c (mono_image_load_module): Append to image->modules array 
20112         of dynamic assembly.
20113         (mono_module_get_object): Fix loop to actually increment index.
20114         Use image->module_count.
20115         * assembly.c (mono_assembly_load_references): Use image->module_count.
20116         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
20117         Likewise.
20118
20119 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20120
20121         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
20122         Avoid assert on generic types.
20123
20124 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
20127
20128         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
20129
20130         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
20131         function to convert a MarshalSpec structure to its managed counterpart.
20132
20133         * reflection.c: Fix warnings.
20134         
20135         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
20136         field.
20137
20138         * icall.c (mono_create_icall_signature): Fix build.
20139
20140 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20141
20142         * icall.c: Add MakePointType icall.
20143
20144         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
20145         warnings.
20146
20147 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20148
20149         * threadpool.c: reuse allocated slots in the queue.
20150
20151 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20152
20153         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
20154
20155         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
20156
20157         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
20158         previous change.
20159
20160         * tabledefs.h: Add constants for pinvoke attributes BestFit and
20161         ThrowOnUnmappableChar.
20162
20163         * icall.c (ves_icall_Type_GetPacking): New icall.
20164
20165 2004-09-24  Martin Baulig  <martin@ximian.com>
20166
20167         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
20168
20169 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20170
20171         * appdomain.c:
20172         (mono_domain_set): allow setting a domain that is being unloaded.
20173         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
20174         being unloaded.
20175
20176 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20177
20178         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
20179         the GetCustomAttributes icall.
20180
20181 2004-09-23  Martin Baulig  <martin@ximian.com>
20182
20183         * object-internals.h (MonoReflectionGenericParam): Replaced
20184         'has_ctor_constraint', `has_reference_type' and `has_value_type'
20185         with `guint32 attrs'.
20186
20187 2004-09-23  Martin Baulig  <martin@ximian.com>
20188
20189         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
20190
20191 2004-09-23  Martin Baulig  <martin@ximian.com>
20192
20193         * object-internals.h (GenericParameterAttributes): New enum.
20194
20195 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20196
20197         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
20198         
20199         * class.c (init_events): Fill out event->other field.
20200
20201         * class.c: Fix warnings.
20202
20203         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
20204
20205 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20206
20207         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
20208         walk which doesn't supply the IL offset.
20209
20210 2004-09-22  Martin Baulig  <martin@ximian.com>
20211
20212         * reflection.c (mono_reflection_setup_internal_class): If we're
20213         System.ValueType, System.Object or System.Enum, set
20214         `klass->instance_size' and create the vtable.
20215         (mono_reflection_create_internal_class): If we're an enum type,
20216         get the base class from our current corlib.
20217
20218 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
20219
20220         * reflection.h (MonoResolveTokenError): New type.
20221
20222         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
20223         icall.
20224
20225         * icall.c: Add an 'error' argument to the ResolveToken icalls.
20226
20227 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
20228
20229         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
20230         Support also calling constructors, but only for already allocated objects.
20231
20232 2004-09-17  Geoff Norton <gnorton@customerdna.com>
20233
20234         * reflection.c (type_get_qualified_name): If the klass is null
20235         return the typename to avoid a NullRefEx.
20236         (encode_cattr_value): Get the qualified name of the boxed type,
20237         not the underlying enumtype.  Fixes #62984.
20238
20239 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
20240
20241         * marshal.c: Fix problems with previous checkin.
20242
20243 2004-09-21    <vargaz@freemail.hu>
20244
20245         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
20246         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
20247
20248         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
20249
20250 2004-09-21  Geoff Norton <gnorton@customerdna.com>
20251
20252         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
20253         should only return a type for pointers, arrays, and passbyref types.
20254         Fixes bug #63841.
20255
20256 2004-09-21  Martin Baulig  <martin@ximian.com>
20257
20258         * domain.c (mono_debugger_check_runtime_version): New public
20259         function.
20260
20261         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
20262
20263 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
20264
20265         * reflection.c: Added missing sort to the declarative security 
20266         attributes table. MS implementation stops seeing the attributes if the
20267         token number regress in the table (as shown by ildasm and permview).
20268
20269 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
20270
20271         * object-internals.h (MonoReflectionModule): Add 'token' field.
20272         
20273         * reflection.c (mono_reflection_get_token): Add support for Module
20274         and Assembly.
20275         (mono_module_get_object): Set 'token' field.
20276         (mono_module_file_get_object): Set 'token' field.
20277
20278         * icall.c: Add new Assembly and Module icalls.
20279
20280         * appdomain.c: Bump corlib version.
20281
20282 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
20283
20284         * loader.h loader.c class.h class.c: Add helper functions for obtaining
20285         tokens of metadata objects.
20286
20287         * reflection.h reflection.c (mono_reflection_get_token): New function
20288         to obtain the token of a metadata object.
20289
20290         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
20291
20292 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20293
20294         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
20295         
20296         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
20297
20298 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
20299
20300         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
20301         * object-internals.h: Added 3 MonoArray* members to MonoReflection
20302         AssemblyBuilder to access the permissions set in the class lib.
20303         * reflection.c: Added security attributes encoding step in 
20304         mono_image_build_metadata.
20305         * tabledefs.h: Added new security actions defined in 2.0:
20306         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
20307
20308 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20309
20310         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
20311         macro parameter.
20312
20313 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20314  
20315         * locales.c: nullify the ICU_collator member of CompareInfo when it is
20316           finalized. There where random SIGSEVs at program termination, when
20317           an object being finalized was trying to do a string comparison and
20318           the current culture was already finalized.
20319  
20320 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20321
20322         * threads.c: call thread_cleanup before finishing the thread if we get
20323         there.
20324
20325 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
20326
20327         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
20328         assemblies from the parent. Fixes #65665.
20329
20330 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
20331
20332         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
20333         modifiers.
20334
20335 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
20336
20337         * reflection.h: add prototype for mono_get_dbnull_object
20338         * reflection.c: add prototypes for get_default_param_value_blobs 
20339         and mono_get_object_from_blob for fussier compilers
20340
20341 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
20342  
20343         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
20344         false deadlock checks in class initialization.
20345  
20346 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20347
20348         * image.c (mono_image_addref): Fix comment.
20349
20350         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
20351         possible.
20352
20353 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
20354
20355         * reflection.c (mono_param_get_objects): Modified to return
20356         ParameterInfo.DefaultValue object.
20357
20358         (get_default_param_value_blobs):
20359         (mono_get_object_from_blob):
20360         (mono_get_dbnull_object): New helper routines. 
20361
20362         * object.c (mono_get_constant_value_from_blob): New helper routine
20363         carved out from get_default_field_value ()
20364
20365         * object-internals.h (mono_get_constant_value_from_blob): Added
20366         function declaration.
20367
20368 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20369
20370         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
20371         referenced assemblies. Fixes #62135.
20372
20373         * exception.h exception.c (mono_get_exception_file_not_found2): New
20374         helper function.
20375
20376 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20377
20378         * class.h class.c: Add mono_type_get_underlying_type ().
20379
20380 2004-09-09  Geoff Norton <gnorton@customerndna.com>
20381
20382         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
20383         Fix GetTypes() to support dynamically created assemblies.
20384
20385 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
20386
20387         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
20388         
20389         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
20390         previous patch.
20391
20392         * reflection.h reflection.c loader.c: Allow dynamic construction of
20393         pinvoke methods. Fixes #65571.
20394         
20395         * reflection.c (mono_reflection_get_type): Revert previous change since
20396         it causes regressions.
20397
20398 2004-09-08  Martin Baulig  <martin@ximian.com>
20399
20400         * class.c (class_compute_field_layout): Don't call
20401         mono_class_layout_fields() for open generic instances.
20402
20403 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
20404         * threads.c appdomain.c: fix typo in GC macro
20405
20406 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20407
20408         * threads.c: don't call mono_thread_detach() in start_wrapper(),
20409         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
20410
20411 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
20412
20413         * image.c (mono_image_close): Applied patch from 
20414         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
20415         assembly is loaded multiple times from data.
20416         
20417         * image.c (mono_image_open): Fix warning.
20418
20419 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20422         once. Fixes #58334.
20423         
20424         * reflection.c (mono_reflection_create_runtime_class): Initialize
20425         klass->nested_classes. Fixes #61224.
20426
20427 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20428
20429         * threads.c: sched_yield() on exit, to allow threads to quit.
20430
20431 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20432
20433         * object.c (mono_unhandled_exception): Remove leftover debug code.
20434
20435 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20436
20437         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20438
20439 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20440
20441         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20442         
20443         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20444
20445 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20446
20447         * marshal.c (emit_marshal_array): Null terminate string arrays.
20448         
20449         * marshal.c (raise_auto_layout_exception): Fix warning.
20450
20451         * reflection.c (mono_param_get_objects): Initialize the default value
20452         with DBNull.Value, not null. Fixes #62123.
20453
20454 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20455
20456         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20457         throw an exception with a cute explanation.
20458
20459 2004-09-06  Dick Porter  <dick@ximian.com>
20460
20461         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20462         Close the new process's thread handle, as we don't use it.  The
20463         handle stays around forever otherwise.
20464
20465 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20466
20467         * object.c (arith_overflow): Fix warning.
20468
20469         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20470         calling conventions in method refs. Fixes #65352.
20471
20472         * reflection.c: Fix warnings.
20473
20474 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20475
20476         * icall.c: Add a new icall for Array.Clear
20477
20478 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20479
20480         * object.c: When allocating an array, we have to throw
20481         an overflow exception if any of the lengths are < 0.
20482
20483 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20484
20485         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20486         properly. Also move implementation of string array marshalling to 
20487         managed code. Fixes #42316.
20488
20489 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20490
20491         * assembly.c: provide more information when loading an assembly fails.
20492
20493 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20494
20495         * filewatcher.c: don't expect the development fam package to be
20496         installed.
20497
20498 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20499
20500         * marshal.c: Make a copy of the signature cookie since it will be
20501         freed by the caller.
20502         
20503         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20504
20505         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20506
20507         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20508         marshal specs.
20509
20510         * marshal.c: More refactoring.
20511         
20512         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20513         smaller functions.
20514
20515 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20516
20517         * object.c: In mono_message_invoke, fill the output parameter array after
20518           calling the managed method (it was done before the call). This fixes
20519           bug #59299.
20520
20521 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20524         as well.
20525
20526 2004-09-02  Martin Baulig  <martin@ximian.com>
20527
20528         * class.c (mono_class_instance_size): Don't allow generic type
20529         definitions or open generic instances.
20530         (mono_class_array_element_size): If we're a value type, call
20531         mono_class_instance_size() on the original class.
20532
20533         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20534         handle generic instances.
20535
20536         * mono-debug-debugger.c (write_type): Handle generic instances
20537         like classes.
20538
20539 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20540
20541         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20542         the allocation request fails. Fixes #65089.
20543
20544         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20545         
20546         * object.c (mono_runtime_free_method): New function to free a dynamic
20547         method.
20548
20549         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20550         delegate trampoline.
20551
20552         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20553         with hasthis as dynamic,
20554
20555         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20556
20557         * domain.c (mono_jit_info_table_remove): New function to remove an
20558         entry from the jit info table.
20559
20560         * class-internals.h (MonoMethod): Add 'dynamic' field.
20561
20562         * loader.c: Fix warnings.
20563
20564 2004-09-01  Martin Baulig  <martin@ximian.com>
20565
20566         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20567         instead of mono_debugger_lock() because the latter one is a no-op
20568         unless running in the debugger.
20569
20570 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20571
20572         * class.c (class_compute_field_layout): Classes with auto-layout or
20573         reference fields are not blittable.
20574         
20575 2004-09-01  Dick Porter  <dick@ximian.com>
20576
20577         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20578         mono_image_get_filename() to get the assembly location.
20579
20580         * icall.c:
20581         * metadata.h: Fix compile warnings
20582
20583 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20584
20585         * class.c (class_compute_field_layout): System.Object is blittable.
20586
20587         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20588         as in/out. Fixes #59909.
20589
20590 2004-09-01  Martin Baulig  <martin@ximian.com>
20591
20592         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20593         mono_metadata_generic_inst_is_valuetype() if we're a generic
20594         instance to check whether our underlying type is a reference type.
20595
20596 2004-09-01  Martin Baulig  <martin@ximian.com>
20597
20598         * metadata.c (mono_type_size): If we're a generic instance, call
20599         mono_class_value_size() for value types.
20600
20601 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20602
20603         * marshal.c: Implement more custom marshalling functionality. Fixes
20604         #64915.
20605
20606 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20607
20608         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20609
20610 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20611
20612         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20613
20614         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20615
20616         * icall.c: Fix some warnings.
20617
20618         * threads.c (abort_appdomain_thread): Fix unref errors.
20619         (mono_thread_current): Fix THREAD_DEBUG define.
20620
20621 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20622
20623         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20624
20625         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20626
20627 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20628
20629         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20630         string arrays.
20631
20632 2004-08-28  Martin Baulig  <martin@ximian.com>
20633
20634         * metadata.c
20635         (mono_metadata_generic_inst_is_valuetype): New public function.
20636
20637         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20638         mono_metadata_generic_inst_is_valuetype() if we're a generic
20639         instance to check whether our underlying type is a valuetype.
20640
20641 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20642
20643         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20644         #63768.
20645
20646 2004-08-25  Martin Baulig  <martin@ximian.com>
20647
20648         * loader.c (mono_get_method_from_token): Abstract methods can also
20649         be generic and thus have type parameters.
20650
20651         * metadata-internals.h
20652         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20653
20654         * reflection.c (mono_image_get_generic_param_info): Don't create a
20655         metadata row, just add an entry to the `gen_params' array.
20656         (build_compressed_metadata): Sort the `gen_params' array and then
20657         actually create the metadata.
20658
20659 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20660
20661         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20662
20663 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20664
20665         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20666
20667 2004-08-24  Martin Baulig  <martin@ximian.com>
20668
20669         * class.cs (mono_class_is_subclass_of): Like an interface, a
20670         generic instance also derives from System.Object.
20671
20672 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20673
20674         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20675         custom modifiers to be in any order. Fixes #61990.
20676
20677 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20678
20679         * object.c: Register mono_object_new_fast icall.
20680         
20681         * object.c (mono_class_get_allocation_ftn): Return to calling
20682         mono_object_new_fast, since it seems faster to compute the object 
20683         size in unmanaged code than passing it as a parameter.
20684
20685         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20686
20687         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20688         this function with Boehm as the oom handler, so we don't have to check
20689         the result of GC_malloc.
20690
20691         * object.c: Remove checks for oom.
20692
20693         * object.h object.c (mono_class_get_allocation_ftn): New function to
20694         return the icall which can be used to allocate an instance of a given
20695         class. 
20696
20697         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20698
20699         * class-internals.h: Add 'enabled' field.
20700
20701 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20702
20703         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20704
20705 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20706         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20707         value 0x0010.
20708
20709 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20710
20711         * appdomain.c: use the Tls function for appdomain too,
20712         at Zoltan's request. Actually return in mono_context_get
20713
20714         * appdomain.c, profiler.c, threads.c: use __thread
20715
20716 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20717
20718         * appdomain.c threads.c: Call GC_CreateThread on windows.
20719
20720         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20721         multiple libraries since this don't work on windows.
20722
20723 2004-08-18  Martin Baulig  <martin@ximian.com>
20724
20725         * class-internals.h
20726         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20727         MonoMethodHeader.
20728
20729         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20730         MonoMethodNormal since we also need it for abstract and interface
20731         methods.
20732
20733         * reflection.c
20734         (build_compressed_metadata): Sort the GenericParam table.
20735         (mono_image_create_token): Added `gboolean create_methodspec'
20736         argument; this is false when generating a MethodImpl token.
20737         (reflection_methodbuilder_to_mono_method): Abstract and interface
20738         methods may also have generic parameters.
20739
20740 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20741
20742         * appdomain.c: thread local alloc
20743
20744 2004-08-17  Martin Baulig  <martin@ximian.com>
20745
20746         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
20747
20748         * icall.c
20749         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
20750         argument.
20751
20752         * class.c (mono_type_get_full_name): New public function.
20753         (mono_type_get_name): Don't include the type arguments.
20754
20755 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20756
20757         * Makefile.am: Build static versions of libmetadata and libmonoruntime
20758         for inclusion into the mono executable.
20759
20760 2004-08-16  Martin Baulig  <martin@ximian.com>
20761
20762         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
20763         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
20764
20765 2004-08-14  Martin Baulig  <martin@ximian.com>
20766
20767         * class.c (dup_type): Also copy the `byref' field.
20768
20769 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20770
20771         * reflection.c (create_dynamic_mono_image): Revert the last change 
20772         since it breaks bootstrap.
20773
20774 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20775
20776         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
20777
20778         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
20779         not free them with g_free.
20780
20781 2004-08-11  Martin Baulig  <martin@ximian.com>
20782
20783         * reflection.c (mono_reflection_setup_internal_class): Also call
20784         mono_class_setup_mono_type() if we already have a `tb->type.type'.
20785
20786 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
20787
20788         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
20789         called during default (first) AppDomain creation. Keep track of
20790         Evidence when loading assemblies.
20791
20792 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20793
20794         * opcodes.c, opcodes.h: reduce runtime relocations.
20795
20796 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20797
20798         * culture-info.h, locales.c: fixes and chages to sue the new
20799         optimized format of the locale data.
20800         * culture-info-tables.h: regenerated.
20801
20802 2004-08-06  Geoff Norton <gnorton@customerdna.com>
20803         
20804         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
20805
20806 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
20807
20808         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
20809         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
20810         * domain-internals.h: icall declaration.
20811         * icall.c: icall registration.
20812         * object-internals.h: New fields in MonoAssembly for CAS.
20813
20814 2004-08-05  Duncan Mak  <duncan@ximian.com>
20815
20816         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20817         CEE_LDELEM_ANY.
20818
20819 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20820
20821         * reflection.c: fix to deal with object[] arrays in custom ctors
20822         (bug #62550).
20823
20824 2004-08-05  Martin Baulig  <martin@ximian.com>
20825
20826         * class.c (mono_class_array_element_size): Added support for
20827         generic instances and correctly handle "recursive" types.
20828
20829 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20830
20831         * assembly.c: Fix warnings.
20832
20833 2004-08-04  Martin Baulig  <martin@ximian.com>
20834
20835         * class.c
20836         (mono_type_get_name_recurse): Added `gboolean include_arity'
20837         argument specifying whether or not we should include the generic
20838         arity in the type name.
20839         (_mono_type_get_name): New static function.
20840         (mono_class_setup_vtable): If we're a generic instance, don't
20841         include the generic arity in the names of explicit method
20842         implementations.        
20843
20844 2004-08-03  Martin Baulig  <martin@ximian.com>
20845
20846         * class.c (mono_type_get_name_recurse): Enclose the generic type
20847         arguments in `<', '>'.
20848
20849 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20850
20851         * gc.c: make GC warning messages use the trace API, they are just
20852         noise to most of the users.
20853
20854 2004-08-03  Martin Baulig  <martin@ximian.com>
20855
20856         * debug-mono-symfile.c (read_string): Correctly read the string.
20857
20858 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20859
20860         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
20861         
20862         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
20863         icalls.
20864         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
20865
20866 2004-07-30  Martin Baulig  <martin@ximian.com>
20867
20868         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
20869         Reflect latest symbol writer changes.   
20870
20871 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20872
20873         * object.c: always create an object if null is passed
20874         to Invoke() where a valuetype is expected.
20875
20876 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20877
20878         * marshal.c (mono_marshal_init): make managed
20879         signatures match native ones better for 64bits.
20880
20881 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20882
20883         * appdomain.c: hack to build correctly the private bin path on windows.
20884         Fixes bug #61991.
20885
20886 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20887
20888         * assembly.c: Load mscorlib from the correct framework directory
20889           (mono/<version>/mscorlib.dll).
20890         * appdomain.h: Added prototypes for new functions.
20891         * internals.h: Added some prototypes.
20892         * domain.c: When initializing the runtime, get from the executable and
20893           the configuration files the runtime version that the app supports.
20894           Added support methods for reading app.exe.config. Added list of versions
20895           supported by the JIT. Added two new methods: mono_init_from_assembly,
20896           which initializes the runtime and determines the required version from
20897           the provided exe file, and mono_init_version, which initializes
20898           the runtime using the provided version.
20899         * icall.c: Get machine.config from version-specific directory.
20900         * reflection.c: When generating an image, embed the version number
20901           of the current runtime.
20902
20903 2004-07-28  Dick Porter  <dick@ximian.com>
20904
20905         * socket-io.c
20906         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
20907         returned sockaddr size before creating the remote address object.
20908         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
20909         61608.
20910
20911 2004-07-28  Dick Porter  <dick@ximian.com>
20912
20913         * locales.c (string_invariant_compare_char): Fix invariant char
20914         compares between upper and lower cases.  Fixes bug 61458.
20915
20916 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
20917         
20918         * marshal.c: actually cache stelem.ref wrappers.
20919         
20920 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20921
20922         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
20923         sections and remove the mono_cli_rva_map () function.
20924
20925 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20926
20927         * debug-mono-symfile.c: fix one more endianess issue, from a patch
20928         by Geoff Norton (<gnorton@customerdna.com>).
20929
20930 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20931
20932         * class.c: fix class loads for pointer types (typeof(int) !=
20933         typeof(int*)).
20934
20935 2004-07-27  Martin Baulig  <martin@ximian.com>
20936
20937         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
20938         reading the debugging information from an external ".mdb" file.
20939
20940 2004-07-24  Martin Baulig  <martin@ximian.com>
20941
20942         * reflection.c (mono_image_get_type_info): Only write a class
20943         layout entry if we actually have a size or a packing size.
20944
20945 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20946
20947         * reflection.c (type_get_fully_qualified_name): 
20948         insert cast to get type checking of ?: with non-gcc compilers
20949
20950 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20951
20952         * rand.c: use g_getenv for both lookups of
20953         MONO_EGD_SOCKET
20954
20955 2004-07-17  Martin Baulig  <martin@ximian.com>
20956
20957         * reflection.c (mono_reflection_bind_generic_method_parameters):
20958         Set `gmethod->reflection_info'.
20959
20960 2004-07-17  Martin Baulig  <martin@ximian.com>
20961
20962         * class.c (mono_class_create_from_typedef): Insert the newly
20963         created class into the hash table before computing the interfaces
20964         since we could be called recursively.
20965
20966 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20967
20968         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
20969         function to implement stelem.ref in managed code
20970         * class-internals.h, debug-helpers.c: a new wrapper type
20971         for the above.
20972
20973 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20974
20975         * gc.c: allow GC handles to work even when no GC is compiled in.
20976         Fix part of bug #61134 (GetAddrOfPinnedObject).
20977
20978 2004-07-13  Peter Williams  <peter@newton.cx>
20979  
20980         * process.c (complete_path): Make sure we don't attempt to execute
20981         directories.
20982  
20983 2004-07-12  Geoff Norton <gnorton@customerdna.com>
20984
20985         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
20986           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
20987           and will add/subtract the hour if needed
20988
20989 2004-07-12  Martin Baulig  <martin@ximian.com>
20990
20991         * reflection.c (mono_field_get_object): If we have
20992         `field->generic_info', take the attributes from
20993         `field->generic_info->generic_type'.    
20994
20995 2004-07-12  Martin Baulig  <martin@ximian.com>
20996
20997         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
20998         This function must be called before initializing the runtime.
20999         (mono_debug_init_1): New function; call this after initializing
21000         the runtime, but before loading the assembly.  It tells the
21001         debugger to load corlib and the builtin types.
21002
21003         * mono-debug-debugger.c: Did some larger changes in the debugging
21004         code; support recursive class declarations, make sure we actually
21005         add all classes.
21006
21007 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21008
21009         * debug-helpers.c: undo my previous patch and fixed the real issue in
21010         ../mini/exceptions-x86.c
21011
21012 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21013
21014         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
21015         when no HOME env. variable was set and a NullRef was thrown in a .cctor
21016         called from other .cctors.
21017
21018 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
21019
21020         * loader.c: Removed the mono_loader_wine_init hack now that we are
21021         doing a managed version of Windows.Forms.
21022
21023 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21024
21025         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
21026         threadpool.c, threads.c: remove static data from rootset.
21027
21028 2004-07-09  Dick Porter  <dick@ximian.com>
21029
21030         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
21031         Don't do any more processing if the matched length was 0.  It was
21032         increasing the size of the string before.  Fixes bug 61167.
21033
21034 2004-07-09  Dick Porter  <dick@ximian.com>
21035
21036         * socket-io.h:
21037         * socket-io.c
21038         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
21039         Add support for SO_PEERCRED if its available.
21040
21041 2004-07-09  Peter Bartok <pbartok@novell.com>
21042         * loader.c: winelib.exe.so error message is now only displayed if
21043         MONO_DEBUG is set. To help us avoid questions when people are trying
21044         out the new Managed.Windows.Forms.
21045
21046 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
21049         for isinst and castclass wrappers.
21050
21051         * class-internals.h icall.c: Move registration and lookup of JIT icalls
21052         to libmetadata from the JIT, so they could be used by the marshalling
21053         code and the interpreter.
21054
21055         * marshal.c: Register marshalling related JIT icalls here instead of
21056         in mini.c. Use CEE_MONO_ICALL instead of the family of 
21057         CEE_MONO_PROC<x> opcodes to call marshalling functions.
21058
21059         * metadata.h: Remove unneeded marshalling conversions.
21060
21061         * opcodes.c: Update for new opcodes.
21062         
21063 2004-07-08  Martin Baulig  <martin@ximian.com>
21064
21065         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
21066         (mono_debug_get_domain_data): Make this function static.
21067
21068 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21069
21070         * gc.c, object.h: add nice GC handle API for embedders.
21071
21072 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21073
21074         * reflection.c: more changes for the new api
21075
21076         * object.c: When we reflect on a field w/ a constant value, it
21077         will not have a memory location, so we must access metadata. Also,
21078         allow easier reading of strings so that we can read them from
21079         the constant data.
21080
21081         * class.c (mono_class_layout_fields): no need for literal fields here.
21082
21083         * class-internals.h: api changes for const fields
21084
21085         * icall.c (ves_icall_get_enum_info): use new apis for const fields
21086
21087 2004-07-06  Martin Baulig  <martin@ximian.com>
21088
21089         * mono-debug.h: Increment version number to 44.
21090
21091         * mono-debug.c (mono_debug_add_wrapper): The second argument is
21092         now a gpointer, rewrote this whole method.
21093
21094         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
21095         function.  Add information about the wrapper in a new "misc table".
21096
21097         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
21098         for the new misc table.
21099
21100 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21101
21102         * metadata-internals.h image.c: Add a cache for helper signatures.
21103
21104         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
21105
21106 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21107
21108         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
21109         delegates from a delegate. Fixes #61033.
21110         
21111         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
21112         marshalling of stringbuilder arrays. Fixes #59900.
21113
21114 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21115
21116         * icall.c: Add EnumBuilder:setup_enum_type icall.
21117
21118 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21119
21120         * icall.c: Added a new icall for the property version of
21121         OffsetOfStringData.
21122
21123 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21124
21125         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
21126         it has a constant size across platforms.
21127
21128         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
21129         stack trace.
21130
21131 2004-06-29  Martin Baulig  <martin@ximian.com>
21132
21133         * mono-debug.c (mono_debug_add_method): Protect the whole function
21134         in mono_debugger_lock(), not just parts of it.
21135
21136 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21137
21138         * reflection.c: make sure padding bytes in heaps are zeroed.
21139
21140 2004-06-24  David Waite  <mass@akuma.org>
21141
21142         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
21143         image.c, loader.c, locales.c, marshal.c, metadata.c,
21144         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
21145         string-icalls.c, threads.c: change to C90-style comments from C99 /
21146         C++ -style
21147
21148 2004-06-24  Dick Porter  <dick@ximian.com>
21149
21150         * threads.c
21151         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
21152         return createdNew.  Fixes bug 60412.
21153
21154         * threads-types.h: 
21155         * icall.c: Add createdNew parameter to CreateMutex icall
21156
21157 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21158
21159         * reflection.c, object-internals.h: save default value in params.
21160
21161 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21162
21163         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
21164         no need to build a new path combining that with the application base.
21165         Fixes bug #60442.
21166
21167 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21168
21169         * reflection.c: fixed minor standard compliance issues.
21170
21171 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21172
21173         * reflection.c: fixed issue with encoding some custom attributes
21174         (arrays in properties and fields, bug #60411).
21175
21176 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21177
21178         * reflection.c: fix start address when copying the public key token.
21179
21180 2004-06-23  Martin Baulig  <martin@ximian.com>
21181
21182         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
21183         the `exc' object in a static object to put it into the GC's root set.
21184
21185 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21186
21187         * reflection.c: make mono_reflection_setup_internal_class ()
21188         callable a second time to setup a new parent class.
21189
21190 2004-06-23  Dick Porter  <dick@ximian.com>
21191
21192         * threads.c: Check for WAIT_IO_COMPLETION return values.
21193
21194 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
21195
21196         * appdomain.c: Removed the g_free on the public key token. Now copy 
21197         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
21198         * assembly.c: Added public key token string value when loading 
21199         assemblies. Fix bug #60439.
21200         * icall.c: Added missing informations (like public key) in 
21201         GetReferencedAssemblies. Fix #60519.
21202         * image.h: Changed definition for public key token from const char*
21203         public_tok_value to guchar public_key_token [17];
21204         * reflection.c: Updated for changes to public key token.
21205
21206 2004-06-22  Lluis Sanchez Gual
21207
21208         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
21209         for the field in base classes.
21210
21211 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21212
21213         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
21214         mark headers as not supported, they are installed only for use by the
21215         debugger.
21216
21217 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
21218
21219         * *.c, *.h: avoid namespace pollution in public headers.
21220
21221 2004-06-21  Martin Baulig  <martin@ximian.com>
21222
21223         * exception.c (mono_get_exception_security): It's in
21224         "System.Security", not in "System".
21225
21226         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
21227         the exception classes.
21228
21229 2004-06-21  Martin Baulig  <martin@ximian.com>
21230
21231         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
21232         Protect the exception object from being finalized.
21233
21234 2004-06-21  Martin Baulig  <martin@ximian.com>
21235
21236         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
21237         public function.
21238
21239 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
21240
21241         * reflection.c: Load the assembly in mono_reflection_type_from_name,
21242         if it was not loaded before. Fix parts of #60439.
21243
21244 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
21245
21246         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
21247         code that was broken since Ben's change: wrappers are now
21248         dependent on the method signature only again.
21249
21250 2004-06-21  Martin Baulig  <martin@ximian.com>
21251
21252         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
21253         added interface support.
21254
21255 2004-06-21  Martin Baulig  <martin@ximian.com>
21256
21257         * class.c (mono_vtable_get_static_field_data): New public method.
21258
21259 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
21260
21261         * filewatcher.c : Windows build fix to be compliant with API changes.
21262
21263 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21264
21265         * class.h, class.c: more accessors.
21266         * metadata.h, metadata.c: prepare for hiding MonoType and
21267         MonoMethodSignature: people should use the accessors from now on
21268         outside of the tree.
21269
21270 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21271
21272         * *.c, *.h: more API cleanups.
21273
21274 2004-06-18  Jackson Harper  <jackson@ximian.com>
21275
21276         * assembly.c: Trace loading assemblies.
21277         * loader.c: Trace loading native libraries.
21278         * mono-config.c: Trace loading config files.
21279         
21280 2004-06-18  Dick Porter  <dick@ximian.com>
21281
21282         * locales.c: Tell ICU the lengths of strings, it can cope with
21283         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
21284
21285 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21286
21287         * image.c: swapped name/filename;
21288
21289 2004-06-18  Martin Baulig  <martin@ximian.com>
21290
21291         * mono-debug-debugger.c (write_class): Write the parent class at
21292         the end of the header.
21293
21294 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21295
21296         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
21297
21298 2004-06-17  Raja R Harinath  <rharinath@novell.com>
21299
21300         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
21301         (bundle_obj): New conditional define.
21302         (BUILT_SOURCES): Remove.
21303         ($(bundle_srcs)): Make parallel-make safe.
21304         (libmonoruntime_la_LIBADD): Make unconditional.
21305         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
21306         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
21307
21308 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
21309
21310         * culture-info-tables.h: It was inconsistent with the latest
21311           supp info files.
21312
21313 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
21314
21315         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
21316         be loaded.
21317
21318         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
21319         with gcc 2.95.
21320
21321 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21322
21323         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
21324         cleaned up public header threads.h.
21325
21326 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21327
21328         * Makefile.am, *.c, *.h: more API cleanups.
21329
21330 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21331
21332         * Makefile.am: removed monosn from compilation.
21333         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
21334         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
21335         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
21336         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
21337         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
21338         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
21339
21340 2004-06-15  Jackson Harper  <jackson@ximian.com>
21341
21342         * assembly.c: Make locales lower case when searching the GAC for
21343         assemblies. gacutil will always make locales lowercase when
21344         installing so this effectively makes them case insensitive.
21345         
21346 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
21347
21348         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
21349         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
21350           parameter which allows to choose whether the wait can be interrupted or 
21351           not. Also added the method mono_monitor_enter(), which locks the monitor
21352           using an infinite wait and without allowing interruption.
21353           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
21354           interrupted.
21355         * object.h: Added new fields in MonoThread. suspend_event holds the event
21356           used to susped/resume the thread. synch_lock is the lock object to use for
21357           modifying the thread state.
21358         * threads.c: Use the new synch_lock object for locking, instead of "this",
21359           which can generate deadlocks.
21360           Moved thread state change in Thread.Sleep and Thread.Join from managed
21361           to unmanaged code. This avoids a deadlock when the thread was suspended
21362           just after acquiring the thread lock.
21363           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
21364           Implemented Thread.Suspend using an event instead of ThreadSuspend,
21365           which is not fully implemented in the io-layer.
21366         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
21367
21368 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
21369
21370         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
21371         threads-types.h: more API cleanups.
21372
21373 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21374
21375         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
21376         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
21377         threadpool.c, threads.c: first pass at the exported API cleanup.
21378
21379 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21380
21381         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
21382
21383 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21384
21385         * icall.c: added internalGetHome.
21386
21387 2004-06-14  Dick Porter  <dick@ximian.com>
21388
21389         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
21390         possible to return successfully when '.' or '..' were the only
21391         entries in a directory, but were skipped.  The MonoIOStat was not
21392         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
21393         Fixes bug 59574.
21394
21395 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21396
21397         * reflection.c: make binaries run on .Net 1.1 by default.
21398
21399 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21400
21401         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
21402
21403 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
21404
21405         * marshal.c: keep track of struct size with explicit layout
21406         (bug #59979).
21407
21408 2004-06-12  Martin Baulig  <martin@ximian.com>
21409
21410         * mono-debug-debugger.c: Comment out a debugging g_message().
21411
21412 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21413
21414         * reflection.c, reflection.h: do not free custom attrs that are cached.
21415         * icall.c: use braces to make code clearer.
21416
21417 2004-06-11  Martin Baulig  <martin@ximian.com>
21418
21419         * class.h (MonoInflatedField): New type.
21420         (MonoClassField): Replaced `MonoType *generic_type' with
21421         `MonoInflatedField *generic_info'.
21422
21423         * icall.c
21424         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21425
21426 2004-06-11  Martin Baulig  <martin@ximian.com>
21427
21428         * reflection.c (mono_image_create_method_token): Correctly encode
21429         varargs methods.
21430
21431 2004-06-11  Martin Baulig  <martin@ximian.com>
21432
21433         * metadata.c (mono_metadata_parse_method_signature): When parsing
21434         a MethodDef which has VarArgs, also set sentinelpos if we don't
21435         have any parameters.
21436
21437 2004-06-11  Martin Baulig  <martin@ximian.com>
21438
21439         * verify.c (mono_method_verify): In CEE_CALL, use
21440         mono_method_get_signature() to get the method's signature, unless
21441         we're a PInvoke method.
21442
21443 2004-06-10  Jackson Harper  <jackson@ximian.com>
21444
21445         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21446         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21447         logical name as the supplied path is just a prefix to the gac not
21448         the direct path to it.
21449         
21450 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21451
21452         * reflection.c: make the token for a created method match
21453         the token of the MethodBuilder it was created from
21454         (IKVM requires this behaviour now).
21455
21456 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21457
21458         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21459         reflection.c, socket-io.c: leak fixes.
21460
21461 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21462
21463         * icall.c: handle sentinel pos in vararg methods in position different
21464         from 0.
21465
21466 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21467
21468         * culture-info-tables.h: freshly generated.
21469
21470 2004-06-09  Martin Baulig  <martin@ximian.com>
21471
21472         * loader.c (mono_get_method_constrained): Call `mono_class_init
21473         (constrained_class)'.   
21474
21475 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21476
21477         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21478         any methods. Fixes #59629.
21479
21480 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21481
21482         * culture-info-tables.h: reflecting locale-builder updates.
21483
21484 2004-06-08  Dick Porter  <dick@ximian.com>
21485
21486         * object.h:
21487         * locales.c: Fixed compile warnings, including a real bug in
21488         CompareInfo_internal_compare.
21489         
21490 2004-06-08  Dick Porter  <dick@ximian.com>
21491
21492         * locales.c
21493         (ves_icall_System_Globalization_CompareInfo_internal_index):
21494         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21495         Double-check the resuls of usearches, because ICU currently
21496         ignores most of the collator settings here.  Fixes bug 59720.
21497         
21498 2004-06-08  Dick Porter  <dick@ximian.com>
21499
21500         * locales.c
21501         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21502         Fix memory leak and segfault-causing typo.  No idea how this one
21503         lasted so long without being noticed.
21504
21505 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21506
21507         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21508         any methods. Fixes #59629.
21509
21510 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21511
21512         * assembly.c:
21513         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21514         own the critical section before). Removed dead code (that's done
21515         in the preload hook).
21516
21517         (mono_assembly_load_with_partial_name): call the preload hook.
21518
21519 2004-06-08  Martin Baulig  <martin@ximian.com>
21520
21521         * metadata.c (mono_metadata_signature_alloc): Default
21522         `sentinelpos' to -1.
21523
21524         * reflection.c (mono_image_get_array_token): Likewise.
21525
21526 2004-06-08  Martin Baulig  <martin@ximian.com>
21527
21528         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21529
21530         * metadata.c (mono_metadata_parse_method_signature): When parsing
21531         a MethodDef which has VarArgs, set sentinelpos.
21532
21533         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21534         `gint16' since we're using -1 for non-varargs methods.
21535
21536         * reflection.c
21537         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21538         (method_encode_signature): Added varargs support.
21539         (method_builder_encode_signature): Likewise.
21540         (mono_image_get_varargs_method_token): New static method.
21541         (mono_image_create_method_token): New public method; this is
21542         called via an icall instead of mono_image_create_token() when
21543         calling a varargs method.       
21544
21545 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21546
21547         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21548
21549 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21550
21551         * culture-info-tables.h : Reflecting the latest locale-builder that
21552           fixed empty array representation ({} to {0}).
21553
21554 2004-06-07  Jackson Harper  <jackson@ximian.com>
21555
21556         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21557         looking up extra gac paths. This allows MONO_GAC_PATH to act
21558         exactly like a prefix.
21559         
21560 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21561
21562         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21563         type name before modifying it. Fixes #59405.
21564
21565 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21566
21567         * culture-info.h: added fields for "all datetime patterns".
21568         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21569           _construct_datetime_format ()): fill xxx_patterns fields.
21570         * object.h: added fields for "all datetime patterns" to
21571           MonoDateTimeFormatInfo.
21572         * culture-info-tables.h: reflecting locale-builder updates.
21573
21574 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21575
21576         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21577         the event has no add and remove methods. Fixes #59629.
21578
21579 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21580
21581         * object.c: Fixed possible integer overflow when allocating large
21582         strings.
21583
21584 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21585
21586         * culture-info-tables.h: reflecting locale-builder updates.
21587
21588 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21589
21590         * culture-info-tables.h: reflecting locale-builder updates.
21591
21592 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21593
21594         * culture-info-tables.h: reflecting locale-builder updates.
21595
21596 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21597
21598         * threads.c: Made Thread.Sleep abortable.
21599
21600 2004-06-02  Martin Baulig  <martin@ximian.com>
21601
21602         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21603
21604         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21605
21606 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21607
21608         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21609
21610 2004-05-30  Jackson Harper  <jackson@ximian.com>
21611
21612         * reflection.c: Do not hardcode assembly versions or public key
21613         tokens anymore. All of this except the corlib section was dead
21614         code anyways.
21615         
21616 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21617
21618         * object.c (mono_runtime_invoke_array): Automatically create boxed
21619         objects for byref valuetypes if needed. Fixes #59300.
21620         
21621         * object.c (mono_method_return_message_restore): Handle 
21622         MONO_TYPE_OBJECT as well.
21623
21624 2004-05-28  Jackson Harper  <jackson@ximian.com>
21625
21626         * reflection.c: The modified type encoding was causing build
21627         problems. Reverted for now.
21628         
21629 2004-05-28  Jackson Harper  <jackson@ximian.com>
21630
21631         * reflection.c/h: Take an assembly ref so that we dont create
21632         fully qualified names when encoding types in the same assembly as
21633         the custom attribute being emitted.
21634         * appdomain.c: Increment version number.
21635         
21636 2004-05-26  Duncan Mak  <duncan@ximian.com>
21637
21638         * icall.c
21639         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21640         Set the full version number (major, minor, build, revision).
21641
21642 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21643
21644         * marshal.c (emit_struct_conv): increment src/dst after blit
21645         (mono_marshal_get_managed_wrapper,
21646         mono_marshal_get_native_wrapper): make sure we have marshalling
21647         info before marshalling params (info computation affects
21648         blittable)
21649
21650         * class.c (class_compute_field_layout): correctly deal with
21651         blittable
21652         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21653         value types (as per what windows dows by default)
21654         (mono_class_setup_mono_type): System.ValueType is blittable
21655         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21656         blittable
21657
21658         * marshal.c (mono_marshal_load_type_info): flag types  as
21659         non-blittable if the native layout doesn't match the managed
21660         layout
21661
21662 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21663
21664         * appdomain.c: don't add stuff in the private search path that is
21665         above the application base. If application base is not set, there's
21666         no private search path.
21667
21668 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21669
21670         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21671         byref struct arguments in native->managed marshalling.
21672
21673 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21674
21675         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21676         cache methods using signature (special case for methods
21677         that are value type or string class)
21678         
21679         * image.c (mono_image_close): clean up allocated GSList's
21680         in runtime_invoke_cache.
21681
21682 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21683
21684         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21685         there's no MONO_CFG_DIR environment variable defined.
21686
21687 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21688
21689         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21690
21691 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21692
21693         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21694           is interrumped.
21695         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21696           before waiting for it, and call CloseHandle after the wait to unref it.
21697           This will make sure that handles are not disposed too early.
21698
21699 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21700
21701         * appdomain.c:
21702         * appdomain.h:
21703         * icall.c: removed
21704         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21705         needed now.
21706
21707         * object.c: se the application_base only for the domain that runs
21708         Main. Fixes bug #59216,
21709
21710 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21711
21712         * appdomain.c:
21713         * object.c: only the domain in which Main is run have
21714         SetupInformation.ConfigurationFile set, so moved a few lines from
21715         appdomain.c to object.c.
21716
21717 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21718
21719         * appdomain.c: we tried to load [name].(dll|exe), but according
21720         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21721         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21722         There's a test case attached to bug #58922.
21723
21724 2004-05-27  Dick Porter  <dick@ximian.com>
21725
21726         * icall.c:
21727         * file-io.c: Implemented icalls for locking and unlocking regions
21728         in a file.
21729         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21730         FALSE on error (fixes both compiler warning and real bug.)
21731
21732 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
21733
21734         * culture-info-tables.h: reflecting locale-builder updates.
21735
21736           (Added missing ChangeLog entry for 05/26)
21737
21738 2004-05-27  Jackson Harper  <jackson@ximian.com>
21739
21740         * locales.c: Fix some cut and paste errors.
21741         
21742 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21743
21744         * mono-config.c: set the correct path for config. directory on windows.
21745
21746 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21747
21748         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
21749           on win32.
21750
21751 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21752
21753         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
21754         from pinvoke functions.
21755         
21756         * marshal.c (mono_ftnptr_to_delegate): Implement this.
21757
21758 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21759
21760         * culture-info-tables.h: reflecting locale-builder updates.
21761
21762 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21763
21764         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
21765         #59086.
21766
21767 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
21768
21769         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
21770         * icall.c: Modified icalls for RNG.
21771         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
21772         Windows (CryptoAPI).
21773
21774 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21775
21776         * locales.c: Fix build.
21777
21778 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
21779
21780         * culture-info-tables.h: reflecting locale-builder updates.
21781
21782 2004-05-25  Jackson Harper  <jackson@ximian.com>
21783
21784         * locales.c: When creating the current culture use the $LANGs
21785         specific culture. So DateTimeFormat and NumberFormat entries are created.
21786         
21787 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
21790         a char array as parameter.
21791
21792 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
21793
21794         * image.c: In mono_image_open(), always use an absolute path name to
21795           look for already loaded images.
21796
21797 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
21798
21799         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
21800         missing in the windows build (like older cygwin include files).
21801
21802 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
21803
21804         * icall.c: Fixed check for possible integer overflow in Buffer_
21805         BlockCopy icall. Replaced comments style // by /* */.
21806
21807 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21808
21809         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
21810         
21811         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
21812         check after MONO_VTADDR. Fixes pinvoke2.exe.
21813
21814         * marshal.h marshal.c metadata.h: Add beginnings of support for
21815         ftnptr -> delegate marshalling.
21816
21817 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21818
21819         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
21820         * threads.c: Fix warnings.
21821
21822 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21823
21824         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
21825         * icall.c: Registered icalls for Suspend and Resume.
21826         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
21827           Thread.Abort.
21828         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
21829         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
21830         * process.c: Use WaitForSingleObjectEx.
21831         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
21832           checkpoints.
21833         * threads.c, threads.h: Make use of new Ex wait methods. Improved
21834           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
21835           for Suspend and Resume. Added new mono_thread_stop, used for stoping
21836           background threads. Added basic support for Abort in Windows.
21837           Start new threads using a managed delegate invoke wrapper. This wrapper
21838           has an interruption checkpoint that is needed since an interruption
21839           can be requested before the thread leaves the unmanaged code that starts 
21840           the thread.
21841         * marshal.c: Added interruption checkpoint after every native call, and
21842           also before managed calls for wrappers called from unmanaged code to
21843           go into managed code.
21844         * object.h: Added new field in MonoThread to keep track of interruption
21845           requests.
21846
21847 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21848
21849         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
21850         calls.
21851
21852 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21853
21854         * appdomain.c:
21855         * assembly.c:
21856         * gc.c:
21857         * locales.c:
21858         * mono-config.c:
21859         * rand.c: getenv -> g_getenv (windows!)
21860
21861         * process.c: complete_path is also used on non-windows platforms.
21862
21863 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21864
21865         * icall.c: new signature for Process_Start.
21866
21867         * process.[ch]: new signature for Process_Start. If we're on windows
21868         and UseShellExecute is false, we have to search for the program by
21869         ourselves if we don't get a full path.
21870
21871 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21872
21873         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
21874         marshalling and call CleanUpNativeData if needed. Fixes #58646.
21875
21876 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21877
21878         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
21879         Fixes bug #58373.
21880
21881 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21882
21883         * process.c: use double quotes to quote program name and arguments on
21884         windows. Fixes bug #58575.
21885
21886 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21887
21888         * file-io.c: don't return "." and ".." when using windows Find*File.
21889
21890 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
21891
21892         * marshal.c: Don't pass wrappers to message init because method 
21893         addressed used to lookup metadata. part of remoting[2|3] fix.
21894
21895 2004-05-15  Jackson Harper  <jackson@ximian.com>
21896
21897         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
21898         path is essentially the same as MONO_PATH except that it points to
21899         GACs instead of lib directories.
21900         * loader.h: The user gac is gone so we dont need function to
21901         enable/disable it.
21902         * mono-config.c: user gac option is now gone.
21903         
21904 2004-05-15  Jackson Harper  <jackson@ximian.com>
21905
21906         * culture-info.h: Make defines more consistent, add calendar data
21907         to the culture info table.
21908         * culture-info-tables.h: Add basic calendar data. Basically
21909         everyone gets default gregorian until all the data is
21910         updated.
21911         * locales.c: Use the new consistent defines. Set calendar data for
21912         culture info objects.
21913         * object.h: add a field for calendar data to CultureInfo
21914         
21915 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21916
21917         * image.c: image->runtime_invoke_cache is keyed on signatures now.
21918         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
21919         a signature.
21920         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
21921         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
21922         an extra param that is the pointer of the method to invoke. The IL for
21923         the invoke method is no longer specific to the method, but to the
21924         signature of the method. Thus, we can share the same code for multiple
21925         methods. This reduces the number of methods that have to be compiled.
21926
21927 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21928
21929         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
21930
21931         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21932
21933         * icall.c: Optimize Buffer.BlockCopy.
21934
21935 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21936
21937         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
21938         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
21939         quote). Changed them to "MMMM yyyy".
21940
21941 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
21942
21943         * rand.c
21944         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
21945
21946 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
21947
21948         * reflection.h: Updated after changes to managed structures.
21949
21950         * appdomain.c: Bump corlib version.
21951
21952 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21953
21954         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
21955         windows.
21956
21957 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21958
21959         * Makefile.am: link to ../os/libmonoos.la on windows.
21960
21961         * assembly.c:
21962                 -If MONO_DEBUG, warn about non-existing directories in
21963                 MONO_PATH.
21964                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
21965                 compile time variable.
21966                 -Removed init_default_path and call mono_set_rootdir from
21967                 libmonoos.a instead (windows only).
21968
21969         * assembly.h: declare mono_assembly_getrootdir().
21970
21971         * domain.c:
21972         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
21973
21974         * loader.c: s/getenv/g_getenv/
21975
21976 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21977
21978         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
21979
21980         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
21981
21982         * metadata.h: Add new marshalling conversions.
21983
21984         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
21985         function.
21986
21987         * reflection.c (mono_reflection_get_type): Lookup the type in all
21988         modules of a multi-module assembly. Fixes #58291.
21989
21990 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21991
21992         * threads.c: Before aborting a background, set the StopRequested
21993         state.  This avoids throwing the Abort exception.
21994         In mono_thread_manage, don't continue with the shutdown until all
21995         aborted threads have actually stopped.
21996
21997 2004-05-10  Jackson Harper  <jackson@ximian.com>
21998
21999         * locales.c: Remove the modifier from culture names.
22000         
22001 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22002
22003         * Makefile.am: monosn is not installed any more. It has been deprecated
22004         in favor of sn.
22005
22006 2004-05-07  Jackson Harper  <jackson@ximian.com>
22007
22008         * locales.c
22009         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
22010         Fix array construction, add bailout if the length is 0.
22011
22012 2004-05-07  Dick Porter  <dick@ximian.com>
22013
22014         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
22015         machine doesn't have a DNS entry.  Patch by Urs Muff
22016         (umuff@quark.com), fixes bug 57928.
22017
22018 2004-05-06  Jackson Harper  <jackson@ximian.com>
22019
22020         * reflection.c: Handle null PublicTokens properly. alloc mem for
22021         assembly names culture so we dont crash when freeing it.
22022         
22023 2004-05-06  Jackson Harper  <jackson@ximian.com>
22024
22025         * assembly.c: Check the usergac when loading with partial names.
22026         
22027 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
22028
22029         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
22030         does nothing for now (not required for Linux/Windows) but the class
22031         library can call it (and a newer or modified runtime could need it).
22032         * icall.c: Registred icall.
22033
22034 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22035
22036         * loader.c: prints a message on module loading error we set MONO_DEBUG
22037         environment variable.
22038
22039 2004-05-05  Jackson Harper  <jackson@ximian.com>
22040
22041         * appdomain.c: Handle PublicKeyToken=null properly.
22042         
22043 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
22044
22045         * environment.c|h: Added icall ves_icall_System_Environment_
22046         GetOSVersionString to get the current OS version as a string.
22047         * icall.c: Registred icall.
22048
22049 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
22050
22051         * object.c: in mono_object_get_virtual_method(), take into account that
22052         non-virtual methods don't have a slot in the vtable. Check needed when
22053         the object is a proxy.
22054
22055 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22056
22057         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
22058         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
22059
22060         * object.c (mono_class_compute_gc_descriptor): Fix warning.
22061
22062         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
22063         passed when a valuetype is expected.
22064
22065         * object.c (mono_unhandled_exception): Only set the exit code if the
22066         exception happens in the main thread. Fixes thread5.exe.
22067
22068         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
22069         invalid names. Fixes #58047.
22070
22071 2004-05-03  Jackson Harper  <jackson@ximian.com>
22072
22073         * assembly.c: This line was committed accidently and is unneeded.
22074         
22075 2004-05-03  Jackson Harper  <jackson@ximian.com>
22076
22077         * icall.c: Add new icall for Assembly::LoadWithPartialName
22078         * assembly.c/.h: new function that probes the GAC to load partial
22079         assembly names by Paolo Molaro.
22080         
22081 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22082
22083         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
22084         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
22085         (type_get_fully_qualified_name): Added PublicKeyToken when building a
22086         full type name.
22087
22088 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22089
22090         * appdomain.c: fixed check for 'neutral' culture and removed warning.
22091         * reflection.c: fix bug when parsing a full type name and Version is not
22092         the last thing in the string.
22093
22094 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
22095
22096         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
22097         crashes when it is freed.
22098
22099 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22100
22101         * assembly.c: print the compat warning to stderr.
22102
22103 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
22104
22105         * assembly.c (mono_assembly_load_references): Add a compatibility
22106         hack to run old applications that might be still referencing the
22107         3300-based assemblies, only do this for System.xxx.
22108
22109 2004-05-01  Jackson Harper  <jackson@ximian.com>
22110
22111         * appdomain.c: If the culture is neutral we set it to "".
22112         
22113 2004-04-29  Jackson Harper  <jackson@ximian.com>
22114
22115         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
22116
22117 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
22118  
22119         * string-icalls.c: added low overhead function for copying chars
22120         * icall.c: added needed icall for the above function
22121  
22122 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22123
22124         * icall.c: fix return value of get_global_assembly_cache.  Implemented
22125         Environment.GetLogicalDrives.
22126
22127 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
22128
22129         * rand.c: try and talk to egd or prngd
22130         for random bytes if opening devices fail.
22131
22132 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22133
22134         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
22135         alignment for the type using the native alignment of its members 
22136         instead of using klass->min_align.
22137
22138         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
22139
22140 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22141
22142         * file-io.c:
22143         * socket-io.c: added check for sys/aio.h.
22144
22145 2004-04-28  Dick Porter  <dick@ximian.com>
22146
22147         * threads.c: Don't abort a thread thats already aborting, when
22148         terminating everything.
22149
22150 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22151
22152         * icall.c: added 2 new async calls for Socket.
22153
22154         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
22155         IO on *nix systems.
22156
22157         * threadpool.c: removed unused variable.
22158
22159 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
22160
22161         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
22162
22163 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
22164
22165         * locales.c: put back string_invariant_tolower () and
22166         string_invariant_toupper ().
22167
22168 2004-04-26 David Waite <mass@akuma.org>
22169
22170         * file-io.h:
22171         * socket-io.h:
22172         * threads.h:
22173         * unicode.h: remove comma from end of enumeration declarations
22174
22175 2004-04-26 David Waite <mass@akuma.org>
22176
22177         * debug-mono-symfile.h:
22178         * decimal.c:
22179         * mono_debug.h:
22180         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
22181
22182
22183 2004-04-26  Jackson Harper  <jackson@ximian.com>
22184
22185         * appdomain.c: Increment version number.
22186         
22187 2004-04-26  Jackson Harper  <jackson@ximian.com>
22188
22189         * appdomain.c: Set assembly references public token value when
22190         PublicKeyToken is specified, not the hash_value. Free public token
22191         values when free assembly name data. Previously the public key
22192         token was hex decoded, however we are using hex encoded public key
22193         tokens, so this is not neccasary.
22194         * assembly.c: Lookup assemblies in the gac if their public token
22195         value is set. Add function to allow enabling user gac
22196         lookups. Specify whether or not the assembly was loaded from the
22197         GAC. Compare full assembly names when checking the cache for
22198         assemblies (Temporarily disabled see comment in code). Remove
22199         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
22200         specifies trace-loader they get extra info to stdout on the
22201         loading of assemblies.
22202         * image.h: Add a field for an assembly references public token
22203         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
22204         whether an assembly has been loaded from the GAC.
22205         * image.c: Remove a corlib -> mscorlib name mapping.
22206         * loader.h: Add function to enable/disable the user gac.
22207         * mono-config.c: Check if the usergac is enabled in the config
22208         file.
22209         * icall.c: New icall to determine whether or not an assembly has
22210         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
22211         * tabldefs.h: Add constant for assemblyref flag that specifies a
22212         full public key is used instead of a public token.
22213         * reflection.c: Remove mscorlib -> corlib mappings. Set
22214         PublicTokenValue instead of hash value. This value is a hex
22215         string so it does not need to be expanded.
22216
22217 2004-04-26  Martin Baulig  <martin@ximian.com>
22218
22219         * mono-debug-debugger.c (mono_debugger_initialize): Set
22220         `mono_debugger_initialized' before calling mono_debug_lock().
22221
22222 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
22223
22224         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
22225           InternalToUpper/InternalToLower.
22226         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
22227           removed invariant culture shortcut.  This is now done in managed code.
22228         * locales.c: (string_invariant_toupper/tolower) removed.
22229
22230 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22231
22232         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
22233         Added Poll internal call.
22234
22235         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
22236         call for Poll. Select was too heavy for polling a single socket.
22237
22238         * threadpool.[ch]: added mono_threadpool_cleanup.
22239         * threads.c: use it. Don't use Thread_Abort on windows.
22240
22241 2004-04-23  Martin Baulig  <martin@ximian.com>
22242
22243         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
22244
22245 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
22246
22247         * icall.c: Registred new icalls for key pair protection and added an
22248         icall for Environment.GetFolderPath on Windows.
22249         * security.c|h: Added new icalls for key pair protection.
22250
22251 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22252
22253         * socket-io.c: don't display the non-supported family warning for known
22254         families. Now this is not displayed on windows when checking support
22255         for IPv4/IPv6.
22256
22257 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22258
22259         * class.c: don't display the layout warning for static fields.
22260
22261 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
22262
22263         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
22264         * locales.c, locales.h: Added new icalls for culture-specific
22265         Char.ToLower and Char.ToUpper.
22266
22267 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22268
22269         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
22270         by David Waite.
22271
22272 2004-04-20  Martin Baulig  <martin@ximian.com>
22273
22274         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
22275         of the type name before passing it to mono_reflection_type_from_name().
22276
22277 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22278
22279         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
22280         encodings here. Fixes #56965.
22281
22282 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
22283
22284         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22285         fix test on strstr result not that I can see anything that
22286         relies on the result.
22287
22288 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22289
22290         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
22291         Fixes #57081.
22292
22293         * marshal.c (mono_marshal_get_string_encoding): New helper function.
22294
22295         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
22296         function to determine which marshalling to use for strings. Fixes
22297         #56965.
22298
22299         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
22300
22301         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
22302
22303 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
22304
22305         * icall.c: #include mono-config.h
22306
22307 2004-04-15  Jackson Harper  <jackson@ximian.com>
22308
22309         * culture-info-tables.h: Fix date formats for en-US culture.
22310         
22311 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
22312
22313         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
22314         ThreadPool.SetMinThreads.
22315         * threadpool.c: Implemented ThreadPool.GetMinThreads and
22316         ThreadPool.SetMinThreads.
22317
22318 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22319
22320         * mono-config.c: also load the .config file in the directory
22321         where the assembly was found.
22322
22323 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22324
22325         * assembly.c: load per-assembly config files.
22326         * icall.c: decrapified code to get the config dir and moved to
22327         mono-config.c.
22328         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
22329         per-assembly config files. When doing a dll map lookup give precedence
22330         to the per-assembly data.
22331
22332 2004-04-14  Martin Baulig  <martin@ximian.com>
22333
22334         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
22335         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
22336         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
22337
22338         * mono-debugger-debugger.c: While the debugger is locked, remember
22339         whether the symbol tables have changes and send one single
22340         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
22341
22342 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22343
22344         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
22345
22346         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
22347         function.
22348
22349         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
22350         account when marshalling string arrays. Fixes #56965.
22351
22352 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
22353
22354         * icall.c: Add new icalls mapping for security.
22355         * security.c|h: Add internal calls for WindowsIdentity,
22356         WindowsImpersonationContext and WindowsPrincipal.
22357
22358 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
22359
22360         * class.c: Added comment to ensure the System.MonoDummy class
22361         is removed when no longer necessary
22362
22363 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22364
22365         * appdomain.c: Pass arguments to the bootstraping exceptions to
22366         minimize JITed methods at boot
22367
22368         * metadata.c (mono_exception_from_name_two_strings): Allow for the
22369         second string to be null.
22370
22371         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22372         Change the protocol to minimize the JIT methods at startup.  Now
22373         it Returns the internal codepage, if the value of "int_code_page"
22374         is 1 at entry, and we can not compute a suitable code page
22375         number, returns the code page as a string.
22376
22377 2004-04-13  Jackson Harper  <jackson@ximian.com>
22378
22379         * culture-info-tables.h: Fix number of decimal digits for all
22380         english locales.
22381
22382 2004-04-13  Jackson Harper  <jackson@ximian.com>
22383
22384         * icall.c: Clairfy out of sync error message. It is not always
22385         your corlib that is out of sync.
22386
22387 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
22388
22389         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
22390         properties when only the set accessor is overriden. Fixes #55874.
22391
22392 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
22393
22394         * assembly.c (mono_assembly_load_references): Make this thread safe.
22395         Fixes #56327.
22396
22397 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22398
22399         * monosn.c: Add missing initialization calls.
22400
22401 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
22402
22403         * locales.c:
22404         ves_icall_System_Globalization_CultureInfo_construct_number_format
22405         Fix g_assert so it compiles on fussier compilers re int/ptr
22406         mismatch
22407
22408 2004-04-08  Dick Porter  <dick@ximian.com>
22409
22410         * socket-io.h:
22411         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
22412         53992.  Also rearrange the code so that the internal calls return
22413         an error value and exceptions are thrown from managed code.
22414
22415         * icall.c: Add type info to the socket icalls.
22416
22417 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22418
22419         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22420         owes me a beer.
22421
22422 2004-04-07  Martin Baulig  <martin@ximian.com>
22423
22424         * class.c (mono_class_from_generic_parameter): Don't default
22425         `klass->parent' to `mono_defaults.object_type'.
22426
22427 2004-04-07  Martin Baulig  <martin@ximian.com>
22428
22429         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22430         `param->pklass->reflection_info'.       
22431
22432 2004-04-07  Jackson Harper  <jackson@ximian.com>
22433
22434         * culture-info-tables.h: Fix date separator symbol.
22435         
22436 2004-04-07  Martin Baulig  <martin@ximian.com>
22437
22438         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22439         from System.Type to System.MonoType.
22440
22441 2004-04-07  Martin Baulig  <martin@ximian.com>
22442
22443         * reflection.h
22444         (MonoReflectionGenericParam): Added `has_reference_type' and
22445         `has_value_type' fields.
22446
22447         * reflection.c (mono_image_get_generic_param_info): Encode the
22448         correct flags if we have the `class' or `struct' constraint.
22449
22450 2004-04-07  Martin Baulig  <martin@ximian.com>
22451
22452         * reflection.h
22453         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22454
22455 2004-04-07  Jackson Harper  <jackson@ximian.com>
22456
22457         * appdomain.c: Revert extra patches, just wanted to bump the
22458         version number.
22459         
22460 2004-04-07  Jackson Harper  <jackson@ximian.com>
22461
22462         * Makefile.am: Add culture-info private headers.
22463         * icall.c: Add new icalls for contructing locales.
22464         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22465         * locales.h: Declare new culture info construction methods.
22466         * object.h: Add new fields used to avoid the CultureMap to
22467         MonoCultureInfo.
22468         * culture-info.h: Definition of structs used in the culture info
22469         tables.
22470         * culture-info-tables.h: Autogenerated tables that contain culture
22471         info data. This file was generated with the locale-builder tool.
22472         * appdomain.c: Incement corlib version number.
22473         
22474 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22475
22476         * appdomain.c: (mono_runtime_init) move mono_thread_init
22477         to before mono_object_new calls so critical sections
22478         are initialized before use.
22479
22480 2004-04-07  Martin Baulig  <martin@ximian.com>
22481
22482         * icall.c
22483         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22484         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22485         (ves_icall_MonoGenericParam_initialize): Removed.
22486         (monogenericparam_icalls): Removed.
22487         (generictypeparambuilder_icalls): Added new table for
22488         System.Reflection.Emit.GenericTypeParameterBuilder.
22489
22490         * reflection.c
22491         (mono_reflection_define_generic_parameter): Removed.
22492         (mono_reflection_initialize_generic_parameter): This is now called
22493         from GenericTypeParameterBuilder's .ctor.
22494
22495 2004-04-06  Martin Baulig  <martin@ximian.com>
22496
22497         * class.c (mono_class_init): Don't inflate nested classes in a
22498         generic instance.
22499         (mono_type_get_name_recurse): Include the generic arguments for
22500         generic instances and generic type declarations.
22501         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22502         (_mono_class_get_instantiation_name): Removed.
22503         (mono_class_create_generic): Always use `gklass->name' as our name.
22504
22505         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22506
22507         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22508         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22509         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22510         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22511         closed generic methods here.
22512
22513         * reflection.c
22514         (mono_reflection_generic_inst_get_nested_types): Removed.
22515         (inflate_mono_method): Copy the generic parameters from the
22516         MonoMethodHeader into out MonoGenericMethod.
22517
22518 2004-04-06  Martin Baulig  <martin@ximian.com>
22519
22520         * row-indexes.h
22521         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22522
22523         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22524
22525         * reflection.c (build_compressed_metadata): If we have any entries
22526         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22527         set the header version to 1.1.
22528
22529 2004-04-06  Martin Baulig  <martin@ximian.com>
22530
22531         * class.c (mono_class_init): If we're a generic instance,
22532         initialize our nested classes, too.
22533         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22534         suffix. 
22535
22536 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22537
22538         * process.c: quote the argument passed to the shell on windows.
22539
22540 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22541
22542         * threads.c (mono_alloc_special_static_data): Allow this to be
22543         called during startup.
22544
22545 2004-04-02  Martin Baulig  <martin@ximian.com>
22546
22547         * icall.c
22548         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22549
22550 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22551
22552         * icall.c: Fix build.
22553
22554 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22555
22556         * Makefile.am: Added security.c|h.
22557         * icall.c: Added icall for get_UserName;
22558         * security.c: New file for security related icalls. Added function
22559         get_UserName for System.Environment (fix #56144).
22560         * security.h: New. Header file for security.c
22561
22562 2004-04-02  Dick Porter  <dick@ximian.com>
22563
22564         * icall.c: Deleted the icalls that were obsoleted some time ago
22565         by the ICU string code, and which were mixed into the icall
22566         rearranging.  Fixes bug 55969.
22567
22568         * string-icalls.h: 
22569         * string-icalls.c: Deleted the code that those icalls reference.
22570
22571 2004-04-01  Martin Baulig  <martin@ximian.com>
22572
22573         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22574
22575         * class.c (mono_class_from_generic_parameter): Don't set 
22576         TYPE_ATTRIBUTE_INTERFACE.
22577         (my_mono_class_from_generic_parameter): Likewise.
22578
22579 2004-04-01  Martin Baulig  <martin@ximian.com>
22580
22581         * loader.c (find_method): Added an optional `MonoClass *ic'
22582         argument to search in a specific interface.
22583         (mono_get_method_constrained): New public function.
22584
22585 2004-04-01  Martin Baulig  <martin@ximian.com>
22586
22587         * reflection.c (mono_image_get_generic_field_token): Use the
22588         `handleref' cache here.
22589
22590 2004-04-01  Martin Baulig  <martin@ximian.com>
22591
22592         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22593
22594         * reflection.c (create_generic_typespec): Use the `typespec' hash
22595         here, not the `typeref' one.    
22596
22597 2004-04-01  Martin Baulig  <martin@ximian.com>
22598
22599         * class.c (mono_class_inflate_generic_type): Moved the
22600         functionality into a new static inflate_generic_type() which
22601         returns NULL if it didn't do anything.  Only increment the
22602         `mono_stats.inflated_type_count' if we actually inflated
22603         something.
22604         (mono_class_get_full): Check the classes type to see whether we
22605         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22606
22607 2004-04-01  Jackson Harper  <jackson@ximian.com>
22608
22609         * reflection.c: Set culture for assembly references.
22610         
22611 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22612
22613         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22614
22615 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22616
22617         * assembly.c:
22618         (do_mono_assembly_open): the critical section also covers
22619         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22620
22621 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22622
22623         * threads.c:
22624         (mono_manage_threads): abort the background threads when finishing.
22625         Fixes bug #47232.
22626
22627 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22628
22629         * gc.c: only close the done_event handle if there was no timeout.
22630         C-ified comments.
22631
22632 2004-03-30  Martin Baulig  <martin@ximian.com>
22633
22634         * icall.c (icall_entries): It's called "System.Activator", not
22635         "System.Activation".    
22636
22637 2004-03-30  Martin Baulig  <martin@ximian.com>
22638
22639         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22640         (mono_class_create_from_typespec): Likewise.
22641
22642 2004-03-30  Martin Baulig  <martin@ximian.com>
22643
22644         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22645         `has_ctor_constraint' and `initialized'.
22646
22647 2004-03-30  Martin Baulig  <martin@ximian.com>
22648
22649         * reflection.c (encode_new_constraint): New static function to add
22650         the constructor constraint attribute to a type parameter.
22651         (encode_constraints): Call encode_new_constraint() if necessary.
22652
22653         * reflection.h
22654         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22655
22656         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22657         
22658 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22659
22660         * reflection.c, icall.c: add support for pinning variables. 
22661
22662 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22663
22664         * marshal.c (mono_marshal_get_managed_wrapper):
22665         init bool local with zero rather than null.
22666
22667 2004-03-29  Martin Baulig  <martin@ximian.com>
22668
22669         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22670         the "official" behavior here.
22671         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22672
22673 2004-03-29  Martin Baulig  <martin@ximian.com>
22674
22675         * icall.c: Reflect latest API changes.
22676
22677 2004-03-29  Martin Baulig  <martin@ximian.com>
22678
22679         * loader.c (mono_get_method_from_token): Also call
22680         mono_metadata_load_generic_params () for abstract and interface
22681         methods; replace the type arguments in the method signature with
22682         the ones which are loaded from the metadata.
22683
22684 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22685
22686         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22687         of the lock is not the current thread. MS.NET don't do it, in spite of
22688         what the documentation says. See bug #56157.
22689
22690 2004-03-28  Martin Baulig  <martin@ximian.com>
22691
22692         * class.c (mono_class_init): Don't call init_properties() and
22693         init_events() for generic instances; set `prop->parent' when
22694         inflating properties.
22695
22696         * reflection.c (mono_generic_inst_get_object): Call
22697         `mono_class_init (ginst->klass)'.
22698         (mono_type_get_object): Only create a MonoGenericInst if your
22699         generic type is a TypeBuilder.
22700         (do_mono_reflection_bind_generic_parameters): Only set
22701         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22702
22703 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22704
22705         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22706         Fixes #56091.
22707
22708 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22709
22710         * icall.c: added Kill_internal icall.
22711         * process.[ch]: added Kill_internal icall.
22712
22713 2004-03-25  Martin Baulig  <martin@ximian.com>
22714
22715         * class.h (MonoStats): Added `generic_instance_count',
22716         `inflated_method_count', `inflated_type_count' and
22717         `generics_metadata_size'.       
22718
22719 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22720
22721         * reflection.c: no warnings now.
22722
22723 2004-03-25  Martin Baulig  <martin@ximian.com>
22724
22725         * class.c (mono_class_get_full): New public function; does a
22726         mono_class_get(), but also takes a `MonoGenericContext *'.
22727
22728         * loader.c (mono_field_from_memberref): Renamed to
22729         `field_from_memberref', made static and added `MonoGenericContext *'
22730         argument.
22731         (mono_field_from_token): Added `MonoGenericInst *' argument.
22732         (method_from_memberef): Likewise.
22733         (mono_get_method_from_token): Likewise.
22734         (mono_get_method_full): New public function; does a
22735         mono_get_method(), but also takes a `MonoGenericContext *'.
22736
22737         * verify.c (mono_method_verify): Get the method's generic context
22738         and pass it to mono_field_from_token(), mono_get_method_full() and
22739         mono_class_get_full().
22740
22741 2004-03-25  Martin Baulig  <martin@ximian.com>
22742
22743         * class.c (mono_class_inflate_generic_type): Take a
22744         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
22745         `MonoGenericMethod *'.
22746
22747 2004-03-25  Martin Baulig  <martin@ximian.com>
22748
22749         * loader.h (MonoMethodInflated): Store the MonoGenericContext
22750         instead of the MonoGenericMethod here.
22751
22752 2004-03-25  Martin Baulig  <martin@ximian.com>
22753
22754         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
22755         each time we create a new MonoGenericInst, we also create a new
22756         context which points back to us.
22757
22758         * class.c (inflate_method): Use `ginst->context' instead of
22759         creating a new context.
22760
22761         * loader.c (method_from_memberref): Use
22762         `klass->generic_inst->context' instead of creating a new context.
22763
22764 2004-03-25  Martin Baulig  <martin@ximian.com>
22765
22766         * class.h (MonoGenericContext): New struct.
22767         (MonoGenericMethod): Removed `generic_inst'.
22768
22769         * class.c (mono_class_inflate_generic_method): Take a
22770         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
22771
22772 2004-03-25  Martin Baulig  <martin@ximian.com>
22773
22774         * loader.h (MonoMethodInflated): New typedef.
22775
22776         * metadata.h (MonoMethodSignature): Removed `gen_method', make
22777         `generic_param_count' consume just 30 bits, added `is_inflated'
22778         and `has_type_parameters' flags (one bit each).
22779
22780         * class.c (mono_class_inflate_generic_method): Create a
22781         MonoMethodInflated instead of a MonoMethodNormal and set
22782         `is_inflated' in the method signature.
22783
22784         * class.h (MonoGenericMethod): Removed `generic_method'.
22785
22786 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
22787
22788         * image.c: Make sure the name of a MonoImage is always an absolute path.
22789           This fixes bug #54415.
22790
22791 2004-03-24  Martin Baulig  <martin@ximian.com>
22792
22793         * class.c (mono_class_setup_vtable): If we're a generic instance,
22794         use our generic type's vtable size.
22795
22796 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22797
22798         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
22799         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
22800         problems.
22801
22802 2004-03-23  Martin Baulig  <martin@ximian.com>
22803
22804         * class.h (MonoDynamicGenericInst): Added `int count_events' and
22805         `MonoEvent *events'.
22806
22807         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
22808         (typebuilder_icalls): Added "get_event_info"; calls
22809         mono_reflection_event_builder_get_event_info(). 
22810
22811         * reflection.c (mono_reflection_generic_inst_initialize): Added
22812         `MonoArray *events'.
22813         (mono_reflection_event_builder_get_event_info): New function.
22814
22815 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
22816
22817         * object.h: add mono_type_initialization_init
22818
22819         * object.c (mono_runtime_class_init): 
22820         implement class constructor synchronization rules
22821         to cope with threading issues.  
22822         add mono_type_initialization_init
22823
22824         * appdomain.c (mono_runtime_init): call 
22825         mono_type_initialization_init
22826
22827         * class.h: removing initializing field from MonoVTable
22828
22829 2004-03-23  Martin Baulig  <martin@ximian.com>
22830
22831         * class.c (my_mono_class_from_generic_parameter): Use
22832         `param->name' if it's not NULL. 
22833
22834 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
22835
22836         * class.c: do not insert non-virtual methods in the vtable.
22837         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
22838         that means the method is non-virtual. This never would have
22839         happened before.
22840
22841 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22842
22843         * profiler.c: Added lock for accessing coverage_hash.
22844
22845 2004-03-22  Martin Baulig  <martin@ximian.com>
22846
22847         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
22848         `method->method->signature->generic_param_count != 0' to make it
22849         work for interface methods.
22850
22851 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22852
22853         * process.c: quote the string passed to the shell using g_shell_quote.
22854
22855 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22856
22857         * threads.c:
22858         (mono_threads_manage): don't remove the finalizer thread and self
22859         from the threads hash table so that mono_thread_manage can be called
22860         more than once.
22861
22862 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22863
22864         * process.c: quote the arguments when UseShellExecute is true. Fixes
22865         bug #55790.
22866
22867 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22868
22869         * threads.c: set mono_thread_detach as a cleanup routine for every
22870         thread. This way it's always executed upon thread termination, either
22871         aborted or finished normally. No more xsp hangs!
22872
22873 2004-03-17  Martin Baulig  <martin@ximian.com>
22874
22875         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
22876         `int count_nested' and a `MonoType **nested'.
22877
22878         * reflection.c (mono_reflection_bind_generic_parameters): Moved
22879         most of the functionality into a new static
22880         do_mono_reflection_bind_generic_parameters() and don't take a
22881         `MonoType *nested_in' argument any more.  Don't compute nested
22882         types here.
22883         (mono_reflection_generic_inst_get_nested_types): New public method
22884         to get nested types.
22885
22886         * class.c (mono_class_create_generic): Set `klass->nested_in' if
22887         we're a nested class.
22888
22889         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
22890         mono_reflection_generic_inst_get_nested_types() to compute the
22891         nested types.
22892
22893 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22894
22895         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
22896         descriptive error message under windows.
22897         
22898 2004-03-17  Martin Baulig  <martin@ximian.com>
22899
22900         * class.c (dup_type): Added `const MonoType *original' argument;
22901         copy the attrs from the original type.
22902
22903 2004-03-17  Martin Baulig  <martin@ximian.com>
22904
22905         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
22906         `m->generic_inst_cache' here.
22907
22908 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22909
22910         * exception.h exception.c: Add stack_overflow_exception.
22911
22912 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22913
22914         * threadpool.c:
22915         (overlapped_callback): call SetEvent *after* invoking the callback.
22916         No need to call CloseHandle.
22917
22918 2004-03-16  Martin Baulig  <martin@ximian.com>
22919
22920         * reflection.c (mono_image_get_fieldref_token): Take a
22921         `MonoReflectionField *' instead of a `MonoClassField *' and a
22922         `MonoClass *'; store the `MonoReflectionField *' in the hash.
22923
22924 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22925
22926         * appdomain.c: don't add the culture to the filename we're looking for
22927         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
22928
22929 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22930
22931         * locales.c: don't ignore symbols when doing case insensitive compares.
22932         Thanks Dick! Fixes bug #54046.
22933
22934         * threads.c: surround 'threads' usage with enter/leave in
22935         mono_thread_manage.
22936
22937 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22938
22939         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
22940         implicitly marshalled as [Out]. Fixes #55450.
22941
22942         (mono_marshal_get_runtime_invoke): Zero out the result if there is
22943         an exception.
22944
22945 2004-03-16  Martin Baulig  <martin@ximian.com>
22946
22947         * class.c (mono_class_from_generic_parameter): Use the actual
22948         parameter name. 
22949
22950 2004-03-16  Martin Baulig  <martin@ximian.com>
22951
22952         * reflection.c (type_get_signature_size): New static function.
22953         Compues the size of the type in a method signature.
22954         (method_get_signature_size): New static function; calls
22955         type_get_signature_size() to compute the actual size of the
22956         method's signature.
22957         (method_encode_signature): Use method_get_signature_size() to get
22958         the signature's size rather than using `nparams * 10'.
22959
22960 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22961
22962         * file-io.h: define here WapiOverlapped on windows. I don't want the
22963         regular OVERLAPPED one.
22964
22965         * file-io.c:
22966         * threadpool.c: somehow, BindIoCompletionCallback is not found.
22967         Disabling AIO on windows.
22968
22969 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22970
22971         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
22972         bug #55385.
22973
22974 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22975
22976         * appdomain.c: upgraded corlib version.
22977
22978         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
22979         and BeginWrite. Allow opening files for asynchrnous operations.
22980
22981         * file-io.h: new struct that maps FileStreamAsyncResult.
22982         * icall.c: added new icalls.
22983         * process.[ch]: support setting child process environment variables
22984         and use the SHELL or COMSPEC when UseShellExecute is true.
22985
22986         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
22987         callback for async. IO is here and also BindHandle.
22988
22989         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
22990         from here.
22991
22992 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22993
22994         * reflection.c (create_custom_attr): Allow len == 0.
22995
22996         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
22997         computation on big-endian machines.
22998
22999 2004-03-13  Martin Baulig  <martin@ximian.com>
23000
23001         * class.h (MonoGenericInst): Added `int count_ifaces'.
23002
23003         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
23004         `ginst->count_ifaces' instead `klass->interface_count' since we
23005         may get called before the vtable is created.
23006
23007         * loader.c (mono_method_get_param_names): If we're a generic
23008         instance, return and don't initialize the class.
23009
23010         * reflection.c (mono_reflection_setup_generic_class): Don't call
23011         ensure_runtime_vtable().
23012         (mono_reflection_bind_generic_parameters): Set
23013         `ginst->count_ifaces'.
23014
23015 2004-03-11  Jackson Harper <jackson@ximian.com>
23016
23017         * icall.c:
23018         * unicode.c:
23019         * unicode.h: Remove unused System.Char icalls.
23020         
23021 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
23022
23023         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
23024         code when we P/Invoke the first library in Windows.Forms, instead
23025         of when we first open the assembly.
23026
23027         * assembly.c: Drop the lookup from here.
23028
23029 2004-03-10  Martin Baulig  <martin@ximian.com>
23030
23031         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
23032         class for properties, fields and events.  Finally fixes #54945.
23033
23034 2004-03-10  Martin Baulig  <martin@ximian.com>
23035
23036         * metadata.c (mono_metadata_class_equal): New static function;
23037         checks whether two generic instances or two generic parameters are
23038         equal.
23039         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
23040         compare classes.        
23041
23042 2004-03-10  Martin Baulig  <martin@ximian.com>
23043
23044         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
23045
23046         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
23047         argument and write it into the `reflection_info' field.
23048
23049         * icall.c
23050         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
23051         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
23052
23053 2004-03-09  Jackson Harper  <jackson@ximian.com>
23054
23055         * char-conversions.h: use 8 bits for numeric data its all we need
23056         * icall.c: numeric data is only 8 bits now.
23057
23058 2004-03-09  Martin Baulig  <martin@ximian.com>
23059
23060         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
23061
23062         * class.c (init_properties, init_events): Initialize the new
23063         `parent' field.
23064
23065         * reflection.c (typebuilder_setup_properties): Likewise.
23066         (typebuilder_setup_events): Likewise.
23067
23068         * reflection.h (MonoEventInfo): Replaced `parent with
23069         `declaring_type' and `reflected_type'.
23070
23071         * icall.c (ves_icall_get_property_info): Distinguish between
23072         declaring and reflected type.
23073         (ves_icall_get_event_info): Likewise.
23074
23075 2004-03-09  Martin Baulig  <martin@ximian.com>
23076
23077         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
23078         (ves_icall_Type_GetField): Correctly set field->klass.
23079
23080 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23081
23082         * loader.h: Fix warning.
23083
23084 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
23085
23086         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
23087         library routine if present.  Notice that it will still continue
23088         executing even if its missing, for those working on the Gtk#
23089         edition of Windows.Forms.
23090
23091         * assembly.c (do_mono_assembly_open): If loading the
23092         System.Windows.Forms call mono_loader_wini_init.
23093
23094 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23095
23096         * class.h: Added MonoRemoteClass struct.
23097         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
23098         function for MonoStrings.
23099         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
23100         Added internal call for getting the proxy type.
23101         * marshal.c: Get the type of transparent proxies from its remote_class.
23102         Added methods that generate the IL for type checks and casts:
23103         mono_marshal_get_isinst, mono_marshal_get_castclass, 
23104         mono_marshal_get_proxy_cancast.
23105         * marshal.h: Declaration of the previous new methods.
23106         * object.c: Added new moethods for creating and updating MonoRemoteClass
23107         instances: mono_remote_class, mono_upgrade_remote_class, 
23108         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
23109         * verify.c: FIx transparent_proxy_fields layout.
23110         * appdomain.c: Bump corlib version.
23111
23112 2004-03-04  Jackson Harper  <jackson@ximian.com>
23113
23114         * icall.c: Add icall to access char conversion tables.
23115         * char-conversions.h: Character conversion tables.
23116         * Makefile.am: Add char-conversions.h private header file.
23117         
23118 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
23119
23120         * appdomain.c (unload_thread_main): Increase unloading timeout to
23121         10 sec as a temporary workaround for Nant problems.
23122
23123 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
23124
23125         * gc.c: Add checks for GC_enable and GC_disable.
23126
23127         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
23128         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
23129         (bug #54988).
23130         
23131 2004-02-27  Martin Baulig  <martin@ximian.com>
23132
23133         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23134         `MonoReflectionType *' instead of a `MonoType *'.
23135
23136 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23137
23138         * gc.c (run_finalize): Avoid finalizing the object representing the
23139         finalizer thread.
23140         (finalizer_thread): Fix warning.
23141
23142 2004-02-25  Martin Baulig  <martin@ximian.com>
23143
23144         * class.c (_mono_class_get_instantiation_name): Added `int offset'
23145         argument for nested types.
23146         (mono_class_create_generic): Added support for nested generictypes.
23147
23148         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
23149         `GList *nested'.
23150
23151         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
23152
23153         * reflection.c (method_encode_signature): Increase the minimum
23154         value of `size' from 10 to 11.
23155         (mono_reflection_bind_generic_parameters): Take `int type_argc'
23156         and `MonoType **types' arguments instead of the `MonoArray
23157         *types'; added `MonoType *nested_in'.  Recursively instantiate
23158         nested classes. 
23159
23160 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23161
23162         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
23163         stack_overflow_ex members which are used by exception handling.
23164
23165         * appdomain.c (mono_runtime_init): Initialize the new members.
23166
23167         * gc.c (mono_gc_enable): New helper function.
23168         * gc.c (mono_gc_disable): New helper function.
23169
23170 2004-02-23  Martin Baulig  <martin@ximian.com>
23171
23172         * icall.c: I must have been really stupid - make it actually work
23173         this time ;-)
23174
23175 2004-02-23  Martin Baulig  <martin@ximian.com>
23176
23177         * loader.c (method_from_memberref): Only inflate the method if
23178         it's in another klass.
23179
23180 2004-02-23  Martin Baulig  <martin@ximian.com>
23181
23182         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
23183         (mono_class_init): If we're a generic instance and an interface,
23184         compute `class->interface_id'; also create `class->interfaces'
23185         here and inflate them.
23186
23187         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
23188         `ginst->is_open'.
23189         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
23190
23191         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
23192
23193 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
23194
23195         * reflection.c (method_encode_code): Improved the error message
23196         generated by the exception.
23197
23198 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23199
23200         * icall.c: Martin did not do what he said in the ChangeLog for
23201         2004-02-18, but put back the changes for properties and events.
23202         Commenting those changes out again and adding comment to bug #54518.
23203         
23204         * process.c: removed warning.
23205
23206 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
23207
23208         * marshal.c (emit_struct_conv): Print an error message instead of
23209         asserting when a type does not have the StructLayout attribute.
23210
23211 2004-02-20  Martin Baulig  <martin@ximian.com>
23212
23213         * reflection.c (mono_type_get_object): Also use the cache for
23214         generic instances.
23215         (mono_reflection_bind_generic_parameters): Always compute
23216         `ginst->ifaces'.        
23217
23218 2004-02-20  Martin Baulig  <martin@ximian.com>
23219
23220         * class.h (MonoGenericMethod): Removed `klass'.
23221
23222         * class.c (mono_class_inflate_generic_method): Added `MonoClass
23223         *klass' argument.
23224
23225 2004-02-20  Martin Baulig  <martin@ximian.com>
23226
23227         * reflection.c (method_encode_methodspec): Actually use the
23228         uninflated signature for the memberref.
23229
23230 2004-02-20  Martin Baulig  <martin@ximian.com>
23231
23232         * class.h (MonoGenericMethod): Removed `declaring'.
23233
23234         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
23235         is NULL, compute it here.
23236
23237 2004-02-20  Martin Baulig  <martin@ximian.com>
23238
23239         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
23240
23241         * metadata.c (mono_metadata_generic_inst_hash): New method.
23242         (mono_metadata_generic_inst_equal): New method.
23243
23244         * reflection.c (mono_reflection_bind_generic_parameters): Use the
23245         `klass->image->generic_inst_cache' cache to avoid creating
23246         duplicate MonoGenericInst's.
23247
23248         * class.c (mono_class_inflate_generic_type): Use the cache.
23249
23250 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
23251
23252         * object.c: fixed gc descriptor calculation for embedded valuetypes.
23253
23254 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23255
23256         * icall.c: added Socket.WSAIoctl icall.
23257
23258         * socket-io.[ch]: implemented
23259         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
23260
23261 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
23262
23263         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
23264
23265 2004-02-18  Urs C Muff  <umuff@quark.com>
23266
23267         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
23268         this work on PPC and other big-endian architectures.
23269
23270         * debug-mono-symfile.h: Prepended the names of all the `guint32'
23271         fields with an underscore to make sure they're only accessed by
23272         the read32() macro.
23273
23274 2004-02-18  Martin Baulig  <martin@ximian.com>
23275
23276         * icall.c: Put the klass->refclass changes back for methods and
23277         fields, but not for properties and events.  We're currently not
23278         distinguishing between DeclaringType and ReflectedType for
23279         properties and events, that's what caused the regressions.
23280
23281 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23282
23283         * object.c:
23284         (mono_async_result_new): the handle can be NULL.
23285
23286         * threadpool.c: Use an event instead of a semaphore, don't initialize
23287         it until needed. This saves quite a few semaphores from being created
23288         when using the threadpool.
23289
23290 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
23291
23292         * object.c (mono_string_is_interned_lookup): Fix interning of long
23293         strings. Fixes #54473.
23294
23295         * domain.c (ldstr_equal): Optimize if the two strings are equal.
23296
23297         * icall.c: Revert the klass->refclass changes since they introduce
23298         regressions (bug #54518).
23299
23300 2004-02-18  Martin Baulig  <martin@ximian.com>
23301
23302         * class.c (mono_class_init): If we're a generic instance and don't
23303         come from a TypeBuilder, inflate our members here.
23304         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
23305         (mono_class_create_generic): New public method.
23306         (mono_class_initialize_generic): Removed.
23307         (get_instantiation_name): Renamed to
23308         _mono_class_get_instantiation_name() and made it public.
23309
23310 2004-02-18  Martin Baulig  <martin@ximian.com>
23311
23312         * class.c (mono_class_inflate_generic_type): Clear the new
23313         instance's `nginst->klass' when inflating a generic instance.
23314         (mono_class_is_subclass_of): Added (basic) support for generic
23315         instances.
23316
23317 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
23318
23319         * appdomain.h, domain.c: use a MonoCodeManager instead of a
23320         MonoMempool to hold compiled native code.
23321
23322 2004-02-17  Martin Baulig  <martin@ximian.com>
23323
23324         * class.h (MonoDynamicGenericInst): Added `count_properties' and
23325         `properties'.
23326
23327         * reflection.c (mono_reflection_generic_inst_initialize): Added
23328         `MonoArray *properties' argument.
23329
23330         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
23331
23332 2004-02-17  Martin Baulig  <martin@ximian.com>
23333
23334         * icall.c (ves_icall_Type_GetFields): Renamed to
23335         ves_icall_Type_GetFields_internal() and added a
23336         `MonoReflectionType *rtype' argument; pass it to
23337         mono_field_get_object() to set the field's "reflected" type.
23338         (ves_icall_Type_GetConstructors): Likewise.
23339         (ves_icall_Type_GetEvents): Likewise.
23340         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
23341         argument; pass it to mono_method_get_object() to set the method's
23342         "reflected" type.       
23343
23344 2004-02-17  Martin Baulig  <martin@ximian.com>
23345
23346         * class.h (MonoDynamicGenericInst): New type.
23347         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
23348
23349         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
23350         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
23351         (ves_icall_MonoGenericInst_GetFields): New interncall.
23352
23353         * class.c (mono_class_from_generic): Don't call
23354         mono_class_initialize_generic() if this is a dynamic instance;
23355         ie. it's being created from a TypeBuilder.
23356         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
23357         `class->byval_arg.type'.
23358
23359         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
23360         to `inflate_method' and made static.
23361         (mono_reflection_inflate_field): Removed.
23362         (mono_reflection_generic_inst_initialize): New public method.
23363
23364         * reflection.h (MonoReflectionGenericInst): Removed `methods',
23365         `ctors' and `fields'; added `initialized'.
23366
23367 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23368
23369         * debug-helpers.c (mono_method_full_name): Fix output for empty
23370         namespaces.
23371
23372 2004-02-12  Martin Baulig  <martin@ximian.com>
23373
23374         * class.h (MonoClassField): Added `MonoType *generic_type'.
23375
23376         * reflection.c (mono_image_get_fieldref_token): Added support for
23377         instantiated generic types.
23378         (field_encode_inflated_field): Removed.
23379         (mono_image_get_inflated_field_token): Removed.
23380         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
23381
23382         * reflection.h (MonoReflectionInflatedField): Removed.
23383
23384 2004-02-12  Martin Baulig  <martin@ximian.com>
23385
23386         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
23387         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
23388
23389         * reflection.c (mono_image_get_methodspec_token): Take a
23390         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
23391         (mono_image_create_token): Check whether we have a
23392         `method->signature->gen_method' and call
23393         mono_image_get_methodspec_token() if appropriate.
23394         (inflated_method_get_object): Removed.
23395         (mono_reflection_bind_generic_method_parameters): Return a
23396         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
23397         (mono_reflection_inflate_method_or_ctor): Likewise.
23398
23399         * reflection.h (MonoReflectionInflatedMethod): Removed.
23400
23401 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
23402
23403         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
23404         for custom valuetype marshalling.
23405
23406         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
23407
23408 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23409
23410         * icall.c: fixed WSAGetLastError_internal name.
23411
23412 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23413
23414         * threads.c (mono_thread_attach): Allow this to be called multiple
23415         times for a thread.
23416         
23417         * threads.c (build_wait_tids): Do not wait for ourselves.
23418
23419         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23420         appdomain list is empty.
23421
23422         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23423         memory returned by mono_string_builder_to_utf16, since it points into
23424         managed memory. Thanks to Bernie Solomon for noticing this.
23425
23426         * icall.c: Add AppDomainSetup icalls.
23427
23428         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23429
23430         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23431         types.
23432
23433         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23434         custom attributes to the method_aux struct. Also fix array indexes etc.
23435
23436         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23437         
23438 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23439
23440         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23441         (both static and runtime) and reduce startup time.
23442
23443 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23444
23445         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23446         AsAny marshalling conversion instead of crashing.
23447
23448         * marshal.c: Fix warnings.
23449
23450 2004-02-09  Martin Baulig  <martin@ximian.com>
23451
23452         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23453
23454         * reflection.h (MonoReflectionInflatedMethod): Removed the
23455         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23456
23457         * reflection.c (method_encode_methodspec): Removed the `method'
23458         argument; we get it from `gmethod->declaring'.
23459         (inflated_method_get_object): Removed the `declaring' argument.
23460
23461 2004-02-09  Martin Baulig  <martin@ximian.com>
23462
23463         * class.h (MonoGenericMethod): New type.
23464         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23465         `generic_method'.
23466
23467         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23468         a `MonoGenericMethod *gen_method' one.
23469
23470         * class.c (mono_class_inflate_generic_type): Take an additional
23471         `MonoGenericMethod * argument.  This is only non-NULL if we're
23472         inflating types for a generic method.   
23473         (mono_class_inflate_generic_signature): Renamed to
23474         inflate_generic_signature() and made static; take a
23475         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23476         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23477         instead of a `MonoGenericInst *' one.
23478         (mono_class_inflate_generic_method): Likewise.
23479
23480         * reflection.c (encode_generic_method_sig): Take a
23481         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23482         (method_encode_methodspec): Likewise.
23483         (inflated_method_get_object): Likewise. 
23484
23485         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23486         field with a `MonoGenericMethod *gmethod' one.  
23487
23488 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23489
23490         * class.h (mono_class_has_parent): add parens to expansion
23491         so you can ! this.
23492
23493 2004-02-08  Martin Baulig  <martin@ximian.com>
23494
23495         * image.h (MonoImage): Removed `generics_cache'.
23496
23497         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23498         instead of a `MonoType *' argument; removed the `inflate_methods'
23499         argument.  Don't inflate methods here.
23500
23501         * loader.c (find_method): If it's a generic instance, call
23502         mono_class_init() on the `sclass->generic_inst->generic_type'.
23503
23504         * metadata.c (mono_type_size): Make this work on uninitialized
23505         generic instances; call it on the `ginst->generic_type's class.
23506
23507         * reflection.c (mono_reflection_bind_generic_parameters): Call
23508         mono_class_from_generic() to create the `ginst->klass'.
23509
23510 2004-02-08  Martin Baulig  <martin@ximian.com>
23511
23512         * class.h (MonoClass): Changed type of `generic_inst' from
23513         `MonoType *' to `MonoGenericInst *'.
23514
23515 2004-02-08  Martin Baulig  <martin@ximian.com>
23516
23517         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23518         mono_type_get_object(), this is now creating a `MonoGenericInst'
23519         for MONO_TYPE_GENERICINST.
23520         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23521         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23522
23523         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23524         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23525         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23526         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23527         and reflected type.
23528
23529         * reflection.h (MonoReflectionInflatedMethod): Removed
23530         `declaring_type' and `reflected_type'.
23531
23532 2004-02-08  Martin Baulig  <martin@ximian.com>
23533
23534         * class.h (MonoGenericInst): Added `MonoType *parent' and
23535         `MonoType **ifaces'.
23536
23537         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23538         `parent' and `interfaces'.
23539
23540         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23541         `MonoType *' argument and return a `MonoType *'.
23542
23543         * icall.c
23544         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23545         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23546
23547 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23548
23549         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23550         valuetype marshalling.
23551
23552 2004-02-06  Martin Baulig  <martin@ximian.com>
23553
23554         * class.c
23555         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23556         (my_mono_class_from_generic_parameter): Likewise.
23557
23558 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23559
23560         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23561         contents of the symbol files lazily.
23562
23563         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23564
23565         * threads.h threads.c icall.c: New icalls for getting and setting the
23566         threads name.
23567
23568 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23569
23570         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23571         Raise an exception when the domain is not found.
23572
23573 2004-02-03  Martin Baulig  <martin@ximian.com>
23574
23575         * reflection.c (mono_image_get_methodspec_token): Use the
23576         uninflated signature; fixes gen-33.
23577
23578 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23579
23580         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23581         the finalizer code can use thread functionality.
23582
23583         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23584         the finalizer thread.
23585
23586         * threads.c: Make some functions more robust.
23587
23588         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23589
23590         * metadata.h: Add new marshalling conventions.
23591
23592         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23593         stringbuilder marshalling. Fixes #53700.
23594
23595         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23596
23597         * reflection.c (mono_image_get_type_info): Save declarative security
23598         info.
23599
23600         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23601         unmanaged fields as well.
23602
23603         * appdomain.c: Bump corlib version.
23604
23605 2004-02-01  Martin Baulig  <martin@ximian.com>
23606
23607         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23608         method type arguments.  
23609
23610 2004-01-30  Duncan Mak  <duncan@ximian.com>
23611
23612         * marshal.h: Add prototype for
23613         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23614         and
23615         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23616         fix the build.
23617
23618 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23619
23620         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23621         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23622
23623 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23624
23625         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23626         custom marshalling of valuetypes.
23627
23628         * marshal.c: Fix some warnings.
23629
23630 2004-01-29  Martin Baulig  <martin@ximian.com>
23631
23632         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23633         for generic method parameters.
23634
23635         * reflection.c (method_encode_methodspec): Write the uninflated
23636         signature into the methodspec table.
23637         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23638         is always the uninflated method.
23639         (reflection_methodbuilder_to_mono_method): Copy the generic
23640         parameters from the MethodBuilder into `header->gen_params'.
23641
23642 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23643
23644         * class.c (mono_class_from_generic_parameter): Fix warning.
23645
23646 2004-01-27  Martin Baulig  <martin@ximian.com>
23647
23648         * class.c (mono_class_from_generic_parameter): Don't create
23649         `klass->methods' here.  
23650
23651 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23652
23653         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23654         extension since it does not work with libraries named lib<FOO>.dll.so.
23655
23656 2004-01-25  Martin Baulig  <martin@ximian.com>
23657
23658         * class.c (mono_class_inflate_generic_type): Added support for
23659         MONO_TYPE_GENERICINST.
23660
23661         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23662         inflate methods on open constructed types.      
23663
23664 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23665
23666         * object.c: fire ProcessExit event in the root AppDomain after running
23667         Main. Fixes bug #53299.
23668
23669 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23670
23671         * socket-io.c: include the new socket-wrappers.h header.
23672         Use the wrappers instead of the unix socket functions to make the code
23673         more clear.
23674
23675 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23676
23677         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23678
23679         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23680         Fixes #22532.
23681
23682 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23683
23684         * reflection.c (mono_image_create_pefile): Handle the case when the
23685         entry point is not a MethodBuilder.
23686
23687         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23688         field to ReflectionMethod since it is not allways a builder.
23689
23690         * reflection.c (type_get_fully_qualified_name): New helper function to
23691         return the fully qualified name of a type.
23692
23693         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23694         type name for custom marshallers.
23695
23696         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23697
23698         * class.c (mono_class_setup_vtable): If a parent class already 
23699         implements an interface, use the implementing methods from that class.
23700         Fixes #53148.
23701
23702 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23703
23704         * threadpool.c: just return instead of ExitThread to allow for thread
23705         clean up earlier.
23706
23707 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23708
23709         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23710         when closing resource modules.
23711
23712         * reflection.c (mono_image_create_pefile): Handle the case when the
23713         entry point is not a MethodBuilder.
23714
23715         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23716         field to ReflectionMethod since it is not allways a builder.
23717
23718 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23719
23720         * marshal.c (mono_marshal_get_managed_wrapper): 
23721         mono_marshal_alloc takes native int so CONV_I
23722         the arg for 64bits.
23723
23724 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23725
23726         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23727         tokens in the cattr table. Fixes #53108.
23728
23729 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23730
23731         * loader.c: don't trim ".dll" before looking up in the config file.
23732         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
23733
23734 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23735
23736         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
23737         Return the module which contains the resource as well.
23738         (ves_icall_System_Reflection_Module_Close): New icall.
23739
23740         * appdomain.c: Bump corlib version number.
23741
23742         * image.c (mono_image_addref): New public function.
23743
23744         * assembly.c: Call mono_image_addref.
23745
23746         * reflection.c (mono_module_get_object): Increase reference count of 
23747         the image.
23748
23749         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23750         Fixes #22532.
23751
23752         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
23753         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
23754         proper exceptions on DllImport problems.
23755
23756 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
23757
23758         * class.c, metadata.c: eliminate CSIZE macro.
23759
23760 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
23761
23762         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
23763         * object.h: Added async_callback field in MonoAsyncResult.
23764         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
23765         * verify.c: Added async_callback in MonoAsyncResult layout.
23766
23767 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
23768
23769         * reflection.c (mono_reflection_get_custom_attrs): Add support
23770         for Modules.
23771
23772 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
23775         marshalling.
23776         (mono_marshal_method_from_wrapper): Add null pointer check.
23777
23778 2004-01-16  Martin Baulig  <martin@ximian.com>
23779
23780         * debug-mono-symfile.h: Set version number to 36 and reflect
23781         latest symbol writer changes.
23782
23783 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23784
23785         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
23786         multi-dimensional arrays.
23787         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
23788         (mono_class_from_mono_type): Use bounded_array_class_get.
23789         
23790         * class.c (mono_bounded_array_class_get): New function which takes
23791         a 'bounded' bool argument to distinguish vectors from one dimensional
23792         arrays.
23793
23794         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
23795         bounded_array_class_get if the array has bounds.
23796
23797         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23798         Search modules loaded using AssemblyBuilder:AddModule as well.
23799
23800 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23801
23802         * appdomain.c: increased corlib version.
23803         * filewatcher.c: removed g_print.
23804         * icall.c:
23805         (get_property_info): only allocate what is actually requested.
23806         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
23807
23808 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23809
23810         * Makefile.am: added filewatcher.[ch]
23811         * filewatcher.[ch]: FileSystemWatcher runtime support.
23812         * icall.c: added new FSW icalls.
23813
23814 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
23815
23816         * string-icalls.c: fix stringbuilder regression as suggested by
23817         Iain McCoy <iain@mccoy.id.au>.
23818
23819 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23820
23821         * process.c (process_read_stringtable_block): Recognize '007f' as
23822         a language neutral stringtable block.
23823
23824 2004-01-12  Patrik Torstensson
23825
23826         * object.h (MonoStringBuilder) : Changed layout to support our
23827         new stringbuilder class.
23828         * marshal.c: Change marshalling to support the new layout of 
23829         string builder.
23830         * appdomain.c: increased version number because new layout of
23831         string builder.
23832
23833 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
23836         assembly name as an string instead of an AssemblyName, since it is
23837         easier to extract info from it.
23838
23839         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
23840         the culture subdirectories too. Fixes #52231.
23841
23842 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23843
23844         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
23845         It takes 2 new parameters with an optional name for the method to look
23846         for and case ignoring info.
23847
23848         * threadpool.c: removed unused variable.
23849
23850 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23851
23852         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
23853         It takes 2 new parameters with an optional name for the property to look
23854         for and case ignoring info.
23855         Fixes bug #52753.
23856
23857 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23858
23859         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
23860         Fix #52451.
23861
23862 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23863
23864         * appdomain.c:
23865         * assembly.c: escape the uri before passing it to g_filename_from_uri.
23866         Fixes bug #52630.
23867
23868 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
23869
23870         * reflection.c: Add support for more than one unmanaged resource.
23871
23872         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
23873         in field->def_value, as done in all other cases.
23874
23875         * reflection.c (mono_reflection_get_custom_attrs): Add support for
23876         TypeBuilders.
23877
23878         * reflection.c (mono_reflection_create_runtime_class): Remove 
23879         errorneous assignment to klass->element_class, since it is already
23880         done in mono_reflection_setup_internal_class.
23881
23882 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23883
23884         * gc.c: added missing LeaveCriticalSection.
23885         * icall.c: indented a couple of lines.
23886         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
23887         if we call EndInvoke inside a callback. Fixes bug #52601.
23888
23889 2004-01-07  Martin Baulig  <martin@ximian.com>
23890
23891         * mono-debug-debugger.h
23892         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
23893
23894 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
23895
23896         * appdomain.c: Use messages in NotImplementedException.
23897
23898         * exception.c (mono_get_exception_not_implemented): Now this takes
23899         a message argument.
23900
23901         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
23902         exception instead of g_asserting an aborting when something is not
23903         implemented.
23904
23905         Add some inline docs.
23906
23907 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
23908
23909         * reflection.h: Update after changes to object layout.
23910
23911         * reflection.c: Implement saving of unmanaged aka win32 resources.
23912
23913         * appdomain.c: Bump version number.
23914
23915         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
23916         Handle missing domains gracefully.
23917
23918 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
23919
23920         * file-io.c : On Windows, there are much more invalid_path_chars.
23921
23922 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23923
23924         * class.h, object.c: prepare for GetType () speedup.
23925
23926 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
23927
23928         * profiler.c: workaround for --profile null reference exception on
23929           cygwin. Patch by Patrik Torstensson.
23930
23931 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
23932
23933         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
23934         make work for unaligned access.
23935
23936 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
23937
23938         * class.c: small cleanup (class->fields [i] -> field).
23939         * image.c: check address of metadata is valid.
23940
23941 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
23942
23943         * assembly.h assembly.c (mono_assembly_loaded): New public function to
23944         search the list of loaded assemblies.
23945
23946         * reflection.c (mono_reflection_type_from_name): Use 
23947         mono_assembly_loaded instead of mono_image_loaded.
23948
23949         * reflection.c: Fix warnings.
23950
23951 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
23952
23953         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
23954         is dynamic. This is needed since an assembly can contain both dynamic and
23955         non-dynamic images.
23956
23957         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
23958         assembly->dynamic.
23959
23960         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
23961
23962         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
23963         to store modules loaded using AddModule.
23964
23965         * reflection.c (mono_image_fill_file_table): Generalize this so it works
23966         on Modules.
23967
23968         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
23969
23970         * reflection.c (mono_image_fill_export_table_from_module): New function to
23971         fill out the EXPORTEDTYPES table from a module.
23972
23973         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
23974         into a separate function. Also handle loaded non-dynamic modules.
23975
23976         * reflection.c (mono_image_basic_init): Fix memory allocation.
23977
23978         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23979
23980         * assembly.c (mono_assembly_load_references): Make this public.
23981
23982 2003-12-19  Martin Baulig  <martin@ximian.com>
23983
23984         * class.c (mono_class_initialize_generic): Made this static, take
23985         a `MonoGenericInst *' instead of a `MonoClass *'.
23986         (mono_class_from_generic): Call mono_class_initialize_generic()
23987         unless we're already initialized or being called from
23988         do_mono_metadata_parse_generic_inst().
23989
23990         * class.h (MonoGenericInst): Added `initialized' and
23991         `init_pending' flags.
23992
23993         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
23994         `mono_class_init (gklass)' or mono_class_initialize_generic()
23995         here; set `generic_inst->init_pending' while parsing the
23996         `type_argv'.
23997
23998 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
23999
24000         * locales.c: include string.h for memxxx prototypes
24001
24002 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24003
24004         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
24005         constructor when accessing literal fields.
24006
24007 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
24008
24009         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24010
24011         * reflection.c (assembly_add_resource_manifest): New function to fill
24012         the MANIFESTRESOURCE table.
24013
24014         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
24015
24016         * reflection.h: Update to changes in class layout.
24017
24018         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
24019         Reenable call to mono_runtime_is_shutting_down ().
24020
24021         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
24022         determine if the runtime is shutting down.
24023
24024 2003-12-16  Jackson Harper <jackson@ximian.com>
24025
24026         * icall.c: comment out call to mono_runtime_is_shutting_down to
24027         fix build.
24028         
24029 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
24030
24031         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
24032         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
24033
24034 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
24035
24036         * reflection.c: move definition of swap_with_size
24037         to before its first call
24038
24039 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
24040
24041         * appdomain.c (mono_runtime_is_shutting_down): New public function.
24042
24043         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
24044         icall.
24045
24046         * object.c: Fix warnings.
24047
24048         * icall.c (ves_icall_Type_Get...): Only consider inherited static
24049         members if FlattenHierarchy is set.
24050
24051         * reflection.c (mono_image_add_decl_security): New function to emit
24052         declarative security.
24053
24054         * reflection.h reflection.c: Add support for declarative security.
24055
24056         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24057         
24058 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24059
24060         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24061         
24062         * appdomain.c verify.c: Moved corlib version checking into its own
24063         function in appdomain.c since it needs to create vtables etc.
24064
24065 2003-12-13  Patrik Torstensson <p@rxc.se>
24066
24067         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
24068         instead of unwrapped server.
24069
24070 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
24071
24072         * verify.c (check_corlib): Fix field index.
24073
24074 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
24075
24076         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
24077         GetGacPath icall.
24078
24079 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
24080
24081         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
24082         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
24083         cope with sizeof(size_t) != sizeof(guint32).
24084
24085 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24086
24087         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
24088         in case of failure.
24089
24090 2003-12-10  Mark Crichton <crichton@gimp.org>
24091
24092         * icall.c: removed the GetNonZeroBytes.  We now handle this case
24093         in managed code.
24094
24095         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
24096
24097 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
24098
24099         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
24100         marked as deleted.
24101
24102 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24103
24104         * verify.c (check_corlib): Handle the case when the version field is 
24105         initialized by a static constructor.
24106
24107 2003-12-08  Patrik Torstensson  <p@rxc.se>
24108
24109     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
24110
24111 2003-12-08  Martin Baulig  <martin@ximian.com>
24112
24113         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
24114         a MonoReflectionGenericParameter, also take the parameter index
24115         and name as arguments.
24116         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
24117         (ves_icall_MonoGenericParam_initialize): New interncall.
24118         (ves_icall_Type_make_byref_type): New interncall.
24119
24120         * reflection.h (MonoReflectionGenericParam): Derive from
24121         MonoReflectionType, not just from MonoObject.  Added `refobj' and
24122         `index' fields.
24123
24124         * reflection.c (mono_reflection_define_generic_parameter): Create
24125         and return a new MonoReflectionGenericParam; don't initialize the
24126         constraints here.
24127         (mono_reflection_initialize_generic_parameter): New public method;
24128         initializes the constraints and creates the `param->pklass'.
24129
24130 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * reflection.h reflection.c: Use the new fields 'num_types', 
24133         'num_fields' and 'num_methods' to track the number of types etc.
24134
24135         * verify.c (check_corlib): Check corlib version number.
24136
24137 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
24138
24139         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
24140         function works on all methods.
24141
24142 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24143
24144         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
24145         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
24146         the custom_type_info flag of the transparent proxy.
24147         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
24148         objects that supports IRemotingTypeInfo.
24149         * object.h: Added custom_type_info field in transparent proxy.
24150
24151 2003-12-06  Martin Baulig  <martin@ximian.com>
24152
24153         * class.c (mono_class_create_from_generic): Removed.
24154         (mono_class_from_generic): Check `ginst->klass' before doing
24155         anything else.  This is important to fully support "recursive"
24156         generic types.
24157
24158         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
24159         empty `generic_inst->klass' before doing anything else.
24160
24161 2003-12-06  Dick Porter  <dick@ximian.com>
24162
24163         * verify.c: 
24164         * object.h:
24165         * icall.c:
24166         * locales.c: Use C structs to access class fields.  Don't do a
24167         conversion between MonoString and UChar because both are
24168         platform-endian UTF-16.  Compare now takes startindex and count
24169         parameters.  Add a char overload for IndexOf.  Speed up the
24170         invariant string IndexOf.
24171
24172 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
24173
24174         * Makefile.am (monosn_LDADD): Fix parallel build.
24175
24176 2003-12-04  Martin Baulig  <martin@ximian.com>
24177
24178         * icall.c
24179         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24180         (ves_icall_Type_make_array_type): New interncall.       
24181
24182 2003-12-04  Martin Baulig  <martin@ximian.com>
24183
24184         * locales.c: also change it in the !HAVE_ICU case.
24185
24186 2003-12-04  Dick Porter  <dick@ximian.com>
24187
24188         * icall.c:
24189         * locales.c: construct_compareinfo is now in CompareInfo, not
24190         CultureInfo.
24191
24192 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24193
24194         * image.c (mono_image_load_file_for_image): Cache loaded images in the
24195         image->files array.
24196
24197         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
24198         table as well.
24199
24200         * assembly.c (mono_assembly_load_references): Only load references
24201         once.
24202
24203         * class.c (mono_class_from_name): Avoid linear search of the 
24204         EXPORTEDTYPE table.
24205
24206         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
24207
24208 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24209
24210         * image.h (MonoImage): Add 'field_cache' field.
24211
24212         * loader.c (mono_field_from_token): Cache field lookups.
24213         
24214         * reflection.c (mono_module_get_object): Fix name property.
24215
24216         * icall.c (ves_icall_get_enum_info): Update after changes to 
24217         mono_metadata_get_constant_index ().
24218
24219         * icall.c: Get rid of get_type_info icall, use a separate icall for
24220         each type property to avoid needless memory allocations. Fixes #51514.
24221
24222         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
24223         to avoid needless binary searches.
24224
24225         * class.c (class_compute_field_layout): Move the initialization of
24226         field->def_value to mono_class_vtable ().
24227
24228         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
24229         non-corlib types.
24230
24231         * object.c (mono_object_allocate): Make it inline.
24232
24233         * object.c (mono_object_allocate_spec): Make it inline.
24234         
24235 2003-12-02  Dick Porter  <dick@ximian.com>
24236
24237         * locales.c (create_NumberFormat): NumberFormatInfo construction.
24238         Patch by Mohammad DAMT (mdamt@cdl2000.com).
24239
24240 2003-12-01  Dick Porter  <dick@ximian.com>
24241
24242         * threads.c: Fix signature and call in CreateMutex and
24243         CreateEvent.
24244
24245 2003-12-01  Dick Porter  <dick@ximian.com>
24246
24247         * icall.c: 
24248         * locales.c: Implement string compares and searching
24249
24250         * object.h: Add extra Thread field
24251
24252 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
24253
24254         * reflection.c (fixup_method): Add support for MonoCMethod.
24255
24256 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
24257
24258         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
24259
24260         * reflection.c (assembly_name_to_aname): Allow extra characters in
24261         assembly names. Fixes #51468.
24262
24263 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24264
24265         * exception.c (mono_exception_from_name_domain): New helper function.
24266
24267         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
24268         exception object in the correct domain.
24269
24270         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
24271         formatting + make a copy a the input data.
24272
24273         * loader.c (mono_get_method_from_token): Methods which contain
24274         native code do not have entries in the ImplMap.
24275
24276         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
24277         Thanks to Gonzalo for spotting this.
24278         
24279         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
24280         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
24281
24282         * assembly.h (mono_assembly_load_from): Split the second part of 
24283         assembly loading into a new public function.
24284
24285         * exception.h (mono_get_exception_bad_image_format): New function.
24286
24287 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
24288
24289         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24290         Enumerate all modules inside a dynamic assembly. Fixes #51293.
24291         
24292         * icall.c: Add new icall for creating dynamic methods.
24293
24294         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
24295
24296         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
24297
24298         * reflection.c (mono_reflection_create_dynamic_method): New icall to
24299         create a dynamic method.
24300
24301         * reflection.c (resolve_object): New helper function.
24302
24303         * reflection.c: Generalize ReflectionMethodBuilder and the functions
24304         which manipulate it so they can also work on dynamic methods.
24305
24306         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
24307         creating the MonoReflectionMethodAux structure if it is not needed.
24308         
24309         * reflection.h verify.c: Update after changes to object layout.
24310
24311         * reflection.c (method_builder_encode_signature): Fix compilation on
24312         gcc 2.95.x.
24313
24314 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
24315
24316         * appdomain.h: Added support for context static fields. Added static_data
24317           field to MonoAppContext and renamed thread_static_fields to a more
24318           generic special_static_fields in MonoAppDomain, since it can now contain
24319           context static fields.
24320         * domain.c: Updated hashtable name.
24321         * object.c: Replaced field_is_thread_static() for a more generic
24322           field_is_special_static() which also checks for context static attribute.
24323           In mono_class_vtable(), added support for static context fields.
24324         * threads.c: Changed methods that manage thread static fields to more
24325           generic methods so they can be reused both for thread and context static
24326           data.
24327         * threads.h: Declared some new methods.
24328
24329 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
24330
24331         * reflection.h: Update after changes to the managed types.
24332
24333         * reflection.c (encode_custom_modifiers): New helper function.
24334
24335         * reflection.c (method_encode_signature): Emit custom modifiers.
24336
24337         * reflection.c (field_encode_signature): Emit custom modifiers.
24338
24339 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24340
24341         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
24342
24343         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
24344         implementation.
24345
24346         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
24347         icall.
24348
24349         * object.c (mono_field_get_value_object): New function.
24350
24351         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
24352         specific.
24353
24354 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24355
24356         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
24357         return a preallocated out-of-memory exception instance.
24358
24359         * object.c (out_of_memory): Use the new function.
24360
24361         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
24362         flag is before the custom modifiers. Fixes #49802.
24363
24364 2003-11-16  Martin Baulig  <martin@ximian.com>
24365
24366         * class.c (mono_class_is_open_constructed_type): Implemented the
24367         MONO_TYPE_GENERICINST case.
24368
24369 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24370
24371         * assembly.c (mono_assembly_fill_assembly_name): New function to
24372         fill out the MonoAssemblyName structure.
24373         (mono_assembly_open): Use the new function.
24374
24375         * icall.c (fill_reflection_assembly_name): New helper function.
24376
24377         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
24378         new function.
24379
24380         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
24381
24382 2003-11-15  Martin Baulig  <martin@ximian.com>
24383
24384         * class.c (mono_class_is_open_constructed_type): New public
24385         function; checks whether a type is an open constructed type,
24386         ie. whether it still contains type parameters.
24387         (mono_class_inflate_generic_type): If we're a type parameter and
24388         the inflated type is also a MONO_TYPE_(M)VAR, return the original
24389         type.
24390
24391         * class.h (MonoGenericInst): Added `guint32 is_open'.
24392
24393         * loader.c (method_from_methodspec): Check whether we're an open
24394         or closed constructed type and set `ginst->is_open'.
24395
24396         * reflection.c (mono_reflection_bind_generic_parameters): Check
24397         whether we're an open or closed constructed type and set
24398         `ginst->is_open'.
24399         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
24400         from open constructed types.
24401
24402 2003-11-15  Martin Baulig  <martin@ximian.com>
24403
24404         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24405         a generic instance (instead of a generic type declaration) with
24406         unbound generic parameters, bind them to our actual types.
24407
24408 2003-11-14  Martin Baulig  <martin@ximian.com>
24409
24410         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
24411
24412         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24413         an interface type, populate `res->interfaces' with instantiated
24414         versions of all the interfaces we inherit.
24415
24416 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24417
24418         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24419         when MONO_PATH is set but doesn't contain the install dir.
24420
24421 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24422
24423         * icall.c:
24424         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24425         it's also implemented in base classes. Fixes bug #50927.
24426
24427 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24428
24429         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24430         if this method is called from a finalizer. Fixes #50913.
24431
24432 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24433
24434         * threads.c: Implement VolatileRead/VolatileWrite
24435
24436         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24437
24438 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24439
24440         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24441         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24442         2.95.3.
24443
24444         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24445         from Peter Ross (pro@missioncriticalit.com).
24446         
24447 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24448
24449         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24450
24451 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24452
24453         * assembly.c (mono_assembly_load_references): Disable check because it
24454         triggers on older corlibs which lots of people have.
24455
24456 2003-11-12  Jackson Harper  <jackson@ximian.com>
24457
24458         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24459         load corlib.dll if mscorlib.dll is not found.
24460         * assembly.h: Remove corlib name define.
24461         * class.c:
24462         * domain.c:
24463         * image.c: Change corlib name to mscorlib.
24464         
24465 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24466
24467         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24468
24469 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24470
24471         * appdomain.h: Added loader_optimization here to sync with the C#
24472         code, and add disallow_binding_redirects field.
24473
24474 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24475
24476         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24477
24478         * reflection.c (mono_image_build_metadata): Fix crash on modules
24479         with no types.
24480
24481         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24482
24483         * icall.c (ves_icall_get_method_info): Return callingConvention as
24484         well.
24485
24486         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24487         namespaces from the EXPORTEDTYPE table as well.
24488
24489         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24490         from all modules inside the assembly.
24491         
24492 2003-11-11  Martin Baulig  <martin@ximian.com>
24493
24494         * reflection.c (mono_reflection_bind_generic_parameters): Make
24495         this work for interfaces.
24496
24497 2003-11-11  Martin Baulig  <martin@ximian.com>
24498
24499         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24500
24501 2003-11-11  Martin Baulig  <martin@ximian.com>
24502
24503         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24504         "MonoInflatedMethod" and "MonoInflatedCtor".
24505
24506 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24507
24508         * reflection.c (resolution_scope_from_image): Use the assembly table
24509         from the manifest module, since other modules don't have it.
24510
24511         * debug-helpers.c (mono_type_full_name): New helper function.
24512
24513         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24514
24515         * image.c (mono_image_load_file_for_image): New public function which
24516         is a replacement for the load_file_for_image in class.c.
24517
24518         * assembly.c (mono_assembly_load_module): A wrapper for the function
24519         above which does assembly association and reference loading too.
24520
24521         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24522
24523 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24524
24525         * appdomain.c: not all of the attributes for the full assembly name
24526         are required and the order doesn't matter. Fixes bug #50787.
24527
24528 2003-11-10  Dick Porter  <dick@ximian.com>
24529
24530         * locales.c: Use platform-endian UTF16
24531
24532 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24533
24534         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24535         
24536 2003-11-10  Martin Baulig  <martin@ximian.com>
24537
24538         * metadata.c
24539         (mono_metadata_load_generic_params): Make this actually work.
24540
24541         * reflection.c (mono_reflection_bind_generic_parameters): If our
24542         parent is a generic instance, pass all the `types' to it, no
24543         matter whether it has the same number of type parameters or not.
24544
24545 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24546
24547         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24548
24549         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24550         assignment code to this function so it gets called recursively for all
24551         modules.
24552
24553         * image.c (load_modules): Remove the assembly assignment since it is
24554         now done by mono_assembly_load_references.
24555         
24556         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24557         Add 'module' argument.
24558         (mono_module_get_types): New helper function.
24559         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24560
24561 2003-11-08  Martin Baulig  <martin@ximian.com>
24562
24563         * class.c (mono_class_inflate_generic_method): Interface method
24564         don't have a header.
24565
24566         * reflection.c (mono_image_get_methodspec_token): Take an
24567         additional `MonoGenericInst *' argument instead of reading it from
24568         the header; this is necessary to support interfaces.
24569         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24570         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24571         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24572         argument.
24573
24574         * reflection.h (MonoReflectionInflatedMethod): Added
24575         `MonoGenericInst *ginst'.
24576
24577 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24578
24579         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24580
24581 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24582
24583         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24584
24585 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24586
24587         * reflection.c 
24588         (reflection_methodbuilder_from_method_builder):
24589         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24590         initialize a ReflectionMethodBuilder structure.
24591         (mono_image_get_methodbuilder_token):
24592         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24593         tokens which point to types in another module inside the same assembly.
24594
24595         * reflection.c: Use the new helper functions.
24596         
24597         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24598
24599         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24600         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24601
24602         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24603         neccesary.
24604
24605         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24606         current module. Emit the manifest only for the main module.
24607
24608         * reflection.c (mono_image_create_token): Add assertion when a 
24609         memberref needs to be created.
24610
24611         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24612
24613         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24614         larger buffer for the custom attribute blob. Fixes #50637.
24615         
24616 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24617
24618         * threadpool.c: notify listener on async processing handles after
24619         invoking the async callback. Thanks to Zoltan.
24620
24621 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24622
24623         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24624         avoid code duplication.
24625
24626         * reflection.h (MonoDynamicImage): New type which is currently unused,
24627         but will be used through the ref.emit code in place of 
24628         MonoDynamicAssembly.
24629
24630         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24631         object layout.
24632
24633         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24634         a MonoDynamicImage instead of just a MonoImage.
24635         
24636         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24637         icalls to ModuleBuilder but keep their semantics, so they will work
24638         with moduleb->assemblyb. This will change later.
24639         
24640 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24641
24642         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24643         object layout.
24644
24645         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24646         main module, since it is now done by the managed code.
24647
24648 2003-11-03  Martin Baulig  <martin@ximian.com>
24649
24650         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24651         `ginst->klass' here.
24652         (method_encode_methodspec): Don't use the `ginst->generic_method's
24653         klass if it's a generic instance, use `ginst->klass' in this case.
24654
24655 2003-11-03  Martin Baulig  <martin@ximian.com>
24656
24657         * reflection.c (mono_image_get_generic_method_param_info):
24658         Removed, use mono_image_get_generic_param_info() instead.
24659         (mono_image_get_type_info): Write the GenericParam table before
24660         the Method table.  This is neccessary because in the GenericParam
24661         table, type parameters of the class (ie. '!0' etc.) must come
24662         before the ones from its generic methods (ie. '!!0' etc).
24663
24664 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24665
24666         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24667
24668 2003-11-02  Martin Baulig  <martin@ximian.com>
24669
24670         * reflection.c (create_generic_typespec): Take a
24671         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24672         the generic parameters from it.
24673
24674 2003-11-02  Martin Baulig  <martin@ximian.com>
24675
24676         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24677         instead of a `MonoClassField *' since we just need the type.
24678         (create_generic_typespec): New static function.  Creates a
24679         TypeSpec token for a generic type declaration.
24680         (mono_image_get_generic_field_token): New static function.
24681         (mono_image_create_token): If we're a FieldBuilder in a generic
24682         type declaration, call mono_image_get_generic_field_token() to get
24683         the token.
24684
24685 2003-11-02  Martin Baulig  <martin@ximian.com>
24686
24687         * reflection.h
24688         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24689         `MonoReflectionGenericInst *declaring_type' and
24690         `MonoReflectionGenericInst *reflected_type' fields.
24691
24692         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24693         `MonoReflectionGenericInst *declaring_type' and a
24694         `MonoReflectionGenericInst *reflected_type' argument instead of a
24695         single `MonoReflectionGenericInst *type' one.  Set
24696         `res->declaring_type' and `res->reflected_type' from them.
24697         (mono_reflection_inflate_field): Likewise.      
24698
24699 2003-11-02  Martin Baulig  <martin@ximian.com>
24700
24701         * class.c (mono_class_setup_vtable): Don't store generic methods
24702         in the vtable.  
24703
24704 2003-11-02  Martin Baulig  <martin@ximian.com>
24705
24706         * reflection.h (MonoReflectionGenericInst): Added
24707         `MonoReflectionType *declaring_type'.
24708
24709         * reflection.c (mono_reflection_bind_generic_parameters): Use
24710         `if (tb->parent)' instead of `klass->parent'.
24711
24712 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24713
24714         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24715         with an empty ASSEMBLY table.
24716
24717         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24718         variable in the inner and outer loops.
24719
24720 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24721
24722         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24723         argument.
24724
24725         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24726         
24727         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24728         icalls. Instead, do everything in managed code. This is needed since
24729         it is hard to restore the original domain etc. in unmanaged code in the
24730         presence of undeniable exceptions.
24731
24732         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
24733         New icalls to push and pop appdomain refs.
24734
24735 2003-10-31  Martin Baulig  <martin@ximian.com>
24736
24737         * class.c (inflate_generic_type): Renamed to
24738         mono_class_inflate_generic_type() and made it public.
24739
24740         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
24741         New interncall.
24742
24743         * loader.c (mono_field_from_memberref): Also set the retklass for
24744         typespecs.
24745
24746         * fielder.c (mono_image_get_inflated_field_token): New static
24747         method; creates a metadata token for an inflated field.
24748         (mono_image_create_token, fixup_method): Added support for
24749         "MonoInflatedField".
24750         (fieldbuilder_to_mono_class_field): New static function.
24751         (mono_reflection_inflate_field): New public function.
24752
24753         * reflection.h
24754         (MonoReflectionGenericInst): Added `MonoArray *fields'.
24755         (MonoReflectionInflatedField): New typedef.     
24756
24757 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
24758
24759         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
24760         for Solaris and other platforms without s6_addr16
24761
24762 2003-10-30  Martin Baulig  <martin@ximian.com>
24763
24764         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
24765         argument instead of two.
24766         (mono_class_inflate_generic_signature): Likewise.
24767         (inflate_generic_header): Likewise.
24768         (mono_class_inflate_generic_method): Likewise.  In addition, if
24769         `ginst->klass' is set, it becomes the new `method->klass'.
24770
24771         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
24772         field.
24773
24774         * reflection.c (encode_generic_method_sig): Write a 0xa as the
24775         first byte. [FIXME]
24776         (method_encode_methodspec): If we have generic parameters, create
24777         a MethodSpec instead of a MethodRef.
24778         (fixup_method): Added support for "MonoInflatedMethod" and
24779         "MonoInflatedCtor".
24780         (mono_image_create_token): Added support for "MonoInflatedMethod"
24781         and "MonoInflatedCtor".
24782         (inflated_method_get_object): New static function; returns a
24783         managed "System.Reflection.MonoInflatedMethod" object.
24784         (mono_reflection_bind_generic_method_parameters): Return a
24785         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
24786         (mono_reflection_inflate_method_or_ctor): Likewise.
24787         (mono_image_get_generic_method_param_info): Initialize unused
24788         fields to zero.
24789         (mono_image_get_generic_param_info): Likewise.
24790
24791         * reflection.h (MonoReflectionInflatedMethod): New public
24792         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
24793         "S.R.MonoInflatedCtor" classes.
24794
24795         * loader.c (method_from_memberref): If we're a TypeSpec and it
24796         resolves to a generic instance, inflate the method.
24797
24798 2003-10-28  Dick Porter  <dick@ximian.com>
24799
24800         * object.c (mono_runtime_run_main): Convert command-line arguments
24801         into utf8, falling back to the user's locale encoding to do so.
24802
24803 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24804
24805         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
24806         at this time.
24807
24808         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
24809
24810         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
24811         up icalls at method definition time. Partially fixes #33569.
24812
24813 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
24814
24815         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
24816         marshalling of arrays. Fixes #50116.
24817
24818         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
24819
24820         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
24821         points to a vtable in the dying appdomain.
24822
24823         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
24824         listeners into unmanaged code inside the lock.
24825
24826         * object.c (mono_class_vtable): Turn off typed allocation in non-root
24827         domains and add some comments.
24828
24829 2003-10-25  Martin Baulig  <martin@ximian.com>
24830
24831         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
24832
24833         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
24834
24835         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
24836         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
24837         currently parsing.  Create the generic class and store it in
24838         `generic_inst->klass' before parsing the type arguments.  This is
24839         required to support "recursive" definitions; see mcs/tests/gen-23.cs
24840         for an example.
24841         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
24842         to support recursive typespec entries.
24843
24844         * class.c (mono_class_setup_parent): If our parent is a generic
24845         instance, we may get called before it has its name set.
24846         (mono_class_from_generic): Splitted into
24847         mono_class_create_from_generic() and mono_class_initialize_generic().
24848
24849 2003-10-25  Martin Baulig  <martin@ximian.com>
24850
24851         * icall.c (ves_icall_Type_BindGenericParameters): Return a
24852         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
24853         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
24854         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
24855
24856         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
24857         (create_typespec): Likewise.
24858         (mono_reflection_bind_generic_parameters): Return a
24859         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
24860         (mono_reflection_inflate_method_or_ctor): New public function.
24861
24862         * reflection.h (MonoReflectionGenericInst): New typedef.        
24863
24864 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24865
24866         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
24867         inside the domain lock. Fixes #49993.
24868         
24869         * object.c (mono_class_vtable): When typed allocation is used, 
24870         allocate vtables in the GC heap instead of in the mempool, since the
24871         vtables contain GC descriptors which are used by the collector even
24872         after the domain owning the mempool is unloaded.
24873
24874         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
24875
24876         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
24877         reflect what it does. Also invalidate mempools instead of freeing
24878         them if a define is set.
24879
24880         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
24881         of the appdomain.
24882         
24883         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
24884         hold the finalizable objects in this domain.
24885
24886         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
24887         appdomain.
24888
24889         * appdomain.c (mono_domain_set): New function to set the current
24890         appdomain, but only if it is not being unloaded.
24891
24892         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
24893         appdomain which is being unloaded.
24894         
24895         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
24896         unloading of the root appdomain.
24897
24898         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
24899         icall to execute a method in another appdomain. Intended as a 
24900         replacement for InternalSetDomain, which can confuse the code 
24901         generation in the JIT.
24902
24903         * appdomain.c (mono_domain_is_unloading): New function to determine
24904         whenever an appdomain is unloading.
24905
24906         * appdomain.c (mono_domain_unload): New function to correctly unload
24907         an appdomain.
24908
24909         * assembly.c (mono_assembly_load_references): Check that an assembly
24910         does not references itself.
24911
24912         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
24913         domain manually, it asks the finalizer thread to do it, then waits for
24914         the result. Also added a timeout.
24915
24916         * icall.c: Register the new icalls.
24917
24918         * threads.h threads.c: Export the mono_gc_stop_world and 
24919         mono_gc_start_world functions.
24920         
24921         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
24922         function to fill out the mempool with 0x2a.
24923
24924 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
24925
24926         * reflection.h (MonoReflectionMethodAux): New structure to store
24927         information which is rarely used, thus is not in the MonoMethod
24928         structure.
24929
24930         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
24931         store the aux info.
24932
24933         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
24934         and marshalling info into the aux structure.
24935
24936         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
24937         from the aux structure.
24938
24939         * loader.c (mono_method_get_param_names): Retrieve the param names from
24940         the aux structure.
24941         
24942 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
24943
24944         * exception.h exception.c: Add AppDomainUnloadedException && fix 
24945         warning.
24946
24947 2003-10-21  Dick Porter  <dick@ximian.com>
24948
24949         * socket-io.c
24950         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
24951         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
24952
24953 2003-10-21  Martin Baulig  <martin@ximian.com>
24954
24955         * reflection.c (mono_reflection_bind_generic_parameters):
24956         `klass->parent' is NULL for interfaces.
24957
24958 2003-10-21  Martin Baulig  <martin@ximian.com>
24959
24960         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24961
24962 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
24963
24964         * exception.c (mono_exception_from_name_msg): New helper function for
24965         creating exceptions and initializing their message field.
24966
24967         * exception.c: Simplify functions using the new helper.
24968
24969         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
24970         New function.
24971
24972         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
24973         mono_raise_exception, since otherwise gcc doesn't generate the function
24974         epilog for raise_exception, confusing the stack unwinding in the JIT.
24975         Fixes #45043.
24976
24977         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
24978         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
24979         Fixes #49499.
24980
24981 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24982
24983         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
24984         utf8.
24985
24986 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
24987
24988         * icall.c: Removed GetUninitializedObject method because
24989           AllocateUninitializedClassInstance does the same.
24990
24991 2003-10-18  Martin Baulig  <martin@ximian.com>
24992
24993         * class.c (inflate_generic_signature): Renamed to
24994         mono_class_inflate_generic_signature() and made it public.
24995         (my_mono_class_from_generic_parameter): New static function; if we
24996         don't already have the generic parameter's MonoClass, create a
24997         very simple one which is just used internally in the runtime and
24998         not passed back to managed code.
24999
25000         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
25001
25002         * metadata.h (MonoMethodSignature): Moved the
25003         `MonoGenericParam *gen_params' to the MonoMethodHeader.
25004         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
25005
25006         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
25007         ves_icall_MonoMethod_GetGenericArguments(); this is now an
25008         interncall on the MonoMethod class, not on MethodInfo.
25009         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
25010         calling mono_reflection_bind_generic_method_parameters() directly.
25011
25012         * loader.c (mono_method_get_signature): If this is a MethodSpec;
25013         return the already computed `method->signature'.
25014         (method_from_methodspec): New static function to load a method
25015         from a MethodSpec entry.
25016         (mono_get_method_from_token): Call the new method_from_methodspec()
25017         for MethodSpec tokens.  
25018         (mono_get_method_from_token): If we're a generic method, load the
25019         type parameters.
25020
25021         * reflection.c (mono_image_get_memberref_token): Allow
25022         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
25023         table.
25024         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
25025         (mono_image_create_token): First check whether it's a generic
25026         method (so we'd need to create a MethodSpec), then do the other
25027         two alternatives.
25028         (mono_reflection_bind_generic_method_parameters): Return a
25029         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
25030         called directly from the interncall.
25031
25032 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
25033
25034         * reflection.c (load_public_key): Move loading of the public key
25035         into managed code.
25036
25037         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
25038
25039         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
25040         fields.
25041
25042         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
25043         culture, hash_alg and public_key. Fixes #49555.
25044
25045 2003-10-17  Martin Baulig  <martin@ximian.com>
25046
25047         * class.h (MonoGenericInst): Moved this declaration here and added
25048         `MonoMethod *generic_method'.
25049
25050         * icall.c
25051         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
25052         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
25053
25054         * metadata.c (mono_metadata_type_equal): Two types of
25055         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
25056         index; ie. don't compare the address of the `MonoGenericParam'
25057         structure.
25058         (mono_metadata_load_generic_params): Removed the `MonoMethod
25059         *method' argument.
25060
25061         * metadata.h (MonoGenericInst): Moved declaration to class.h.
25062         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
25063
25064         * reflection.c (method_encode_signature): Encode the number of
25065         generic parameters.
25066         (encode_generic_method_sig): New static function.
25067         (method_encode_methodspec): New static function; creates an entry
25068         in the MethodSpec table for a generic method.
25069         (mono_image_get_methodspec_token): New static function.
25070         (mono_image_create_token): Call mono_image_get_methodspec_token()
25071         for generic methods.
25072         (mono_reflection_bind_generic_method_parameters): New public
25073         function.  Instantiates a generic method.
25074
25075 2003-10-16  Martin Baulig  <martin@ximian.com>
25076
25077         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
25078         *gen_params' here from MonoMethodHeader.
25079
25080         * metadata.c (mono_metadata_parse_method_signature): If we have
25081         generic parameters, initialize `method->gen_params' and then set
25082         the correct `type->data.generic_param' in all the parameters.
25083
25084 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
25085
25086         * threads.c (mono_threads_get_default_stacksize): New function to 
25087         return the default stacksize.
25088
25089         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
25090         termination of the finalizer thread, since the previous method had
25091         race conditions. Fixes #49628.
25092
25093         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
25094         as for the other managed threads.
25095
25096 2003-10-16  Martin Baulig  <martin@ximian.com>
25097
25098         * class.c (inflate_generic_signature): Copy `generic_param_count'
25099         and `gen_params'.
25100
25101         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
25102         New interncall.
25103
25104         * metadata.c (mono_metadata_parse_method_signature): Actually set
25105         the `method->generic_param_count' here.
25106         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
25107
25108 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
25109
25110         * object.h: Add a new field to TypedRef to simplify the implementation
25111         of the REFANY opcodes in the JIT.
25112
25113         * icall.c: Make use of the new field.
25114
25115         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
25116         dynamically.
25117
25118 2003-10-15  Martin Baulig  <martin@ximian.com>
25119
25120         * class.c (mono_class_from_gen_param): Renamed to
25121         mono_class_from_generic_parameter() and moved most of the
25122         functionality from mono_reflection_define_generic_parameter()
25123         here; ie. we create a "real" class here.
25124         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
25125         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
25126         previously been called.
25127
25128         * class.h (MonoGenericParam): Moved the declaration of this struct
25129         here from metadata.h and added `MonoMethod *method'.
25130
25131         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
25132         interncall.
25133
25134         * loader.c (mono_get_method_from_token): If we have any generic
25135         parameters, call mono_metadata_load_generic_params() to read them
25136         from the MONO_TABLE_GENERICPAR.
25137
25138         * metadata.c (mono_metadata_load_generic_params): Added
25139         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
25140
25141         * metadata.h (MonoMethodSignature): Replaced
25142         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
25143         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
25144
25145         * reflection.c (mono_reflection_define_generic_parameter): Moved
25146         most of the functionality into the new
25147         mono_class_from_generic_parameter(); set the `method' field if
25148         we're a method parameter.       
25149
25150 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
25151
25152         * marshal.c (emit_struct_conv): if native size is 0
25153         emit no code.
25154
25155 2003-10-14  Martin Baulig  <martin@ximian.com>
25156
25157         * icall.c: The generics API has changed in the spec since it was
25158         added to System.Type; these modifications make it match the spec
25159         again.
25160         (ves_icall_Type_GetGenericParameters): Renamed to
25161         `ves_icall_Type_GetGenericArguments'.
25162         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
25163         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
25164         `ves_icall_MonoType_get_HasGenericArguments'.
25165         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
25166         `ves_icall_MonoType_get_IsGenericParameter'.
25167         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
25168         this is no interncall anymore.
25169         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
25170         `ves_icall_TypeBuilder_get_IsGenericParameter'.
25171
25172 2003-10-14  Martin Baulig  <martin@ximian.com>
25173
25174         * reflection.c (mono_reflection_bind_generic_parameters): Also
25175         inflate generic methods if we're reading the class from IL.
25176
25177 2003-10-13  Martin Baulig  <martin@ximian.com>
25178
25179         * reflection.c (mono_reflection_define_generic_parameter): This
25180         method isn't called directly from the icall anymore; take a
25181         `MonoReflectionAssemblyBuilder *' so we can use this for type and
25182         method generic parameters.
25183         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
25184         (method_builder_encode_signature): Encode generic parameters.
25185         (mono_image_get_method_info): Write generic params to the
25186         MONO_TABLE_GENERICPARAM table.
25187
25188         * reflection.h (MonoReflectionMethodBuilder): Added
25189         `MonoArray *generic_params'.
25190
25191         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
25192
25193         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
25194         wrapper for mono_reflection_define_generic_parameter().
25195         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
25196
25197 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
25198
25199         * marshal.h: Add missing function to fix build.
25200
25201         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
25202         the SetLastError pinvoke attribute.
25203
25204         * marshal.c (mono_marshal_set_last_error): New helper function called
25205         by the generated code.
25206         
25207         * marshal.c (mono_mb_emit_branch): New helper function.
25208
25209         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
25210
25211         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
25212         classes as parameters and return values of delegates. Fixes #29256. 
25213
25214 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
25215
25216         * locales.c: use gint32 in non HAVE_ICU case
25217
25218 2003-10-11  Martin Baulig  <martin@ximian.com>
25219
25220         * mono-debug.c (mono_debug_add_method): Added a workaround for
25221         bug #48591.
25222
25223 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
25224
25225         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
25226         delegates passed to native code must use the STDCALL calling 
25227         convention. Fixes #35987.
25228
25229 2003-10-10  Martin Baulig  <martin@ximian.com>
25230
25231         * class.c (inflate_generic_type): If we're inflating for a generic
25232         type instance (and not for a generic method), return
25233         MONO_TYPE_MVAR unchanged.
25234
25235 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25236
25237         * string-icalls.c: Join ignores null strings in the source array.
25238         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
25239         * threads.c: GetAvailableTheads is slightly more accurate.
25240
25241 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
25242
25243         * threads.h threads.c : add mono_threads_set_default_stacksize
25244         and pass default to CreateThread calls.
25245
25246 2003-10-09  Dick Porter  <dick@ximian.com>
25247
25248         * icall.c:
25249         * locales.h:
25250         * locales.c: Internal calls for constructing CultureInfo and
25251         related objects from libicu (if its available.)
25252
25253 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
25254
25255         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
25256
25257 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25258
25259         * threadpool.c: added an argument to async_invoke_thread that is the
25260         item to process, pass the MonoAsyncResult to the thread start function
25261         when creating a new thread. This way we don't need to acquire any lock
25262         when we're creating a new thread. Readded a semaphore for faster
25263         response times (instead of that Sleep i added).
25264
25265 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
25266
25267         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25268         get daylight change dates better on Windows, fix handling
25269         of platforms without tm_gmtoff.
25270
25271 2003-10-06  Martin Baulig  <martin@ximian.com>
25272
25273         * class.c (inflate_generic_method): Renamed to
25274         mono_class_inflate_generic_method() and made public.
25275         (mono_class_init): Don't inflate the generic methods here.
25276         (mono_class_from_generic): Added `gboolean inflate_methods'
25277         argument.  Inflate the methods here.
25278
25279         * loader.c (mono_method_get_param_names): Ignore instances of
25280         generic types for the moment.
25281
25282         * reflection.c (fixup_method): Added support for inflated methods.
25283         (mono_image_create_token): Use mono_image_get_methodref_token()
25284         for inflated methods.
25285         (mono_custom_attrs_from_param): Ignore instances of generic types
25286         for the moment.
25287         (mono_reflection_bind_generic_parameters): New public function.
25288         Moved all the functionality from
25289         ves_icall_Type_BindGenericParameters() here and added support for
25290         dynamic types.
25291         (mono_reflection_define_generic_parameter): Initialize
25292         `klass->methods' here.
25293
25294         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
25295         functionality into mono_reflection_define_generic_parameter().
25296         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
25297         TypeBuilder, return that TypeBuilder.
25298
25299 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25300
25301         * appdomain.c: removed mono_delegate_semaphore.
25302
25303         * threadpool.c:
25304         (mono_thread_pool_add): moved hash table creation inside and the thread 
25305         creation outside of the critical region.
25306         (mono_thread_pool_finish): removed obsolete code.
25307         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
25308         continue or exit the thread depending on the queue.
25309
25310 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
25311
25312         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
25313         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
25314         handle more bool marshalling options
25315
25316 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
25317
25318         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
25319         arrays of structs. Also add a more descriptive error message when
25320         a structure member is marshalled as LPArray.
25321
25322 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
25323
25324         * marshal.c (mono_marshal_get_native_wrapper): Add support for
25325         marshalling arrays of complex types. Fixes #29098. Also remove an
25326         usused and incomplete function.
25327
25328 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25329
25330         * gc.c: report heap_size - free_bytes as total memory allocated
25331         (bug#49362).
25332
25333 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
25334
25335         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
25336         fix timezone handling problems on Windows.
25337         
25338         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
25339         asserts when the year is outside the range handled by ms the functions.
25340
25341         * class.c (setup_interface_offsets): If the class is an interface,
25342         fill out its interface_offsets slot.
25343
25344 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25345
25346         * threadpool.c: mark threadpool threads as background.
25347
25348 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
25349
25350         * decimal.c - define DECINLINE to nothing if not using GCC
25351
25352 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
25353
25354         * assembly.c: More refcount fixes.
25355
25356 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25357
25358         * string-icalls.c: if we're not trimming, return the same string.
25359         When not splitting, don't create a new string.
25360
25361 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25362
25363         * image.c:
25364         (mono_image_open): increment the ref_count inside the critical section.
25365
25366 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
25367
25368         * image.c (mono_image_open): Fix reference counting bug.
25369
25370 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
25371
25372         * marshal.c (mono_marshal_type_size) struct alignment changed for 
25373         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
25374         64bits. Avoid leak in mono_marshal_get_native_wrapper when
25375         mono_lookup_pinvoke_call throws.        
25376
25377 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
25378
25379         * reflection.c (mono_reflection_parse_type): Fix #49114.
25380
25381         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
25382         temporary workaround for cygwin header problem.
25383
25384         * object.c (mono_object_isinst): Synchronize this with the code
25385         generated by the JIT for casts.
25386
25387 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
25388
25389         * reflection.c (encode_type): Fix #38332.
25390
25391 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
25392
25393         * marshal.c (mono_marshal_method_from_wrapper): New function to return
25394         the original method from the wrapper method.
25395
25396 2003-09-25  Martin Baulig  <martin@ximian.com>
25397
25398         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
25399         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
25400         (ves_icall_Type_get_IsGenericInstance): New interncall.
25401
25402 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
25403
25404         * object.c: fix cast warning in big endian code.
25405
25406 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
25407
25408         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
25409         
25410 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25411
25412         * assembly.c: don't call check_env from mono_assembly_load. It's
25413         already done once in mono_assemblies_init and may cause headaches when
25414         multiple threads are loading assemblies.
25415
25416 2003-09-19  Martin Baulig  <martin@ximian.com>
25417
25418         * reflection.c (mono_reflection_define_generic_parameter): Don't
25419         allocate `klass->methods', set `klass->flags' to
25420         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25421
25422 2003-09-18  Martin Baulig  <martin@ximian.com>
25423
25424         * class.c (mono_class_init): Don't create `class->methods' if it's
25425         already initialized.
25426
25427         * metadata.c (mono_metadata_load_generic_params): Make this
25428         actually work.
25429
25430         * reflection.c (mono_reflection_define_generic_parameter): Set
25431         parent class and interfaces from the constraints.
25432
25433         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25434         to keep this struct in sync with the declaration in TypeBuilder.cs.
25435
25436 2003-09-17  Martin Baulig  <martin@ximian.com>
25437
25438         * metadata.h (MonoType): Replaced the data's `int type_param'
25439         field with `MonoGenericParam *generic_param'.
25440         (MonoGenericParam): Added `MonoClass *klass'.
25441
25442         * class.c (mono_class_from_gen_param): Removed the
25443         `MonoImage *image' and `int type_num' arguments.
25444
25445         * metadata.c (mono_metadata_parse_generic_param): New static
25446         method; creates a MonoGenericParam which just contains the index.
25447         (do_mono_metadata_parse_type): Call
25448         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25449         MONO_TYPE_MVAR.
25450
25451         * reflection.c (mono_image_typedef_or_ref): Generic type
25452         parameters may be in the same assembly, but never use a typedef
25453         for them.
25454         (mono_reflection_define_generic_parameter): We're now creating a
25455         "real" class for the type parameter; it's now safe to call
25456         mono_class_from_mono_type() on the class'es type, it'll do the
25457         right thing.
25458
25459 2003-09-16  Martin Baulig  <martin@ximian.com>
25460
25461         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25462         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25463         the `symfile' data structure must be fully initialized before it
25464         gets added to the table.
25465
25466 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25467
25468         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25469
25470         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25471         class init trampolines.
25472
25473 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25474
25475         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25476         to the built-in profiler to turn off time and allocation profiling
25477         respectively.
25478
25479 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25480
25481         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25482         g_direct_equal.
25483
25484         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25485         in human readable form.
25486
25487 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25488
25489         * reflection.c icall.c: Fixed warnings.
25490
25491         * image.c (load_class_names): Use a temporary hash table to hold the
25492         namespaces in order to avoid doing many string comparisons.
25493
25494         * image.h: Fix typo.
25495
25496         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25497         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25498         since the NULL case is short-circuited inside g_hash_table_lookup, 
25499         leading to better performance.  
25500
25501         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25502         obtain the first custom attribute for a given index. Depends on the
25503         CustomAttribute table being sorted by the parent field.
25504
25505         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25506         for better performance.
25507
25508 2003-09-07  Martin Baulig  <martin@ximian.com>
25509
25510         * class.c (mono_class_init): If we're a generic instance, inflate
25511         all our methods instead of loading them from the image.
25512         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25513
25514 2003-09-07  Martin Baulig  <martin@ximian.com>
25515
25516         * mono-debug-debugger.c: Added support for constructors.
25517
25518 2003-09-06  Martin Baulig  <martin@ximian.com>
25519
25520         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25521         New interncall.
25522
25523         * reflection.c (mono_reflection_setup_generic_class): Call
25524         ensure_runtime_vtable() to create the vtable.
25525
25526 2003-09-05  Martin Baulig  <martin@ximian.com>
25527
25528         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25529         MONO_TYPE_MVAR.
25530
25531 2003-09-04  Martin Baulig  <martin@ximian.com>
25532
25533         * reflection.c (mono_reflection_define_generic_parameter): Generic
25534         parameters start with zero.
25535
25536 2003-09-04  Martin Baulig  <martin@ximian.com>
25537
25538         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25539
25540         * reflection.h (MonoReflectionGenericParam): New typedef.
25541         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25542         the generic parameters from the managed TypeBuilder.
25543
25544         * reflection.c (mono_reflection_define_generic_parameter): New function.
25545         (mono_reflection_create_runtime_class): Encode generic parameters.
25546         (mono_reflection_setup_generic_class): New function; this is
25547         called after adding adding all generic params to the TypeBuilder.
25548         (encode_type): Added MONO_TYPE_VAR.
25549
25550 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25551
25552         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25553         here from the JIT.
25554
25555         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25556         load hook.
25557
25558 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25559
25560         * reflection.h reflection.c class.h class.c: Delete duplicate 
25561         definition of mono_type_get_name () from reflection.c and export the
25562         one in class.c.
25563
25564         * class.c: Class loading fixes from Bernie Solomon 
25565         (bernard@ugsolutions.com).
25566
25567         * reflection.c: Endianness fixes from Bernie Solomon 
25568         (bernard@ugsolutions.com).
25569         
25570 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25571
25572         * assembly.h assembly.c: Define a file format version for AOT
25573         libraries.
25574         
25575         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25576
25577         * appdomain.h (MonoJitInfo): New field to determine whenever the
25578         code is domain neutral.
25579         
25580 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25581
25582         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25583
25584 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25585
25586         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25587         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25588         Avoid caching the result since strings must be domain specific. Fixes
25589         #48050.
25590
25591 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25592
25593         * marshal.c (mono_marshal_init): Make this callable multiple times
25594         since it is hard to find a correct place to call it.
25595
25596         * object.c (mono_runtime_class_init): Execute static constructors in
25597         the correct appdomain.
25598
25599         * image.c (build_guid_table): Handle the case when multiple images have
25600         the same GUID.
25601
25602 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25603
25604         * icall.c: added a couple of icalls for System.Web.
25605
25606 2003-08-28  Martin Baulig  <martin@ximian.com>
25607
25608         * icall.c (ves_icall_Type_BindGenericParameters): Use
25609         `klass->generic_inst' instead of `&klass->byval_arg' in the
25610         mono_type_get_object() call.  The returned type must be
25611         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25612
25613 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25614
25615         * NOTES: New file.
25616
25617         * object.c (mono_class_proxy_vtable): Make it thread safe.
25618
25619         * pedump.c: Fix warning.
25620
25621         * object.c appdomain.h: Get rid of metadata_section. 
25622         It is no longer needed and it was causing deadlocks with domain->lock.
25623
25624         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25625
25626 2003-08-26  Martin Baulig  <martin@ximian.com>
25627
25628         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25629
25630 2003-08-26  Martin Baulig  <martin@ximian.com>
25631
25632         * pedump.c (main): Call mono_metadata_init(),
25633         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25634         and mono_loader_init().
25635
25636 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25637
25638         * loader.h: Add missing include to fix build.
25639
25640         * image.h: mono_image_load_references is no more.
25641
25642         * assembly.c: Reworked assembly loading to make it really thread safe.
25643         After these changes, the assembly returned by mono_assembly_open is
25644         fully initialized, i.e. all its references assemblies are loaded.
25645
25646         * assembly.c (mono_image_load_references): Renamed to 
25647         mono_assembly_load_references, and made private, since clients no
25648         longer need to call it.
25649
25650         * class.c: Removed calls to mono_assembly_load_references, since it was
25651         a source of deadlocks.
25652
25653         * loader.h loader.c class.h class.c: Protect data structures using a 
25654         new lock, the loader lock.
25655
25656         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25657         GPtrArrays only when needed.
25658
25659         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25660         into empty structures by mcs. Fixes pinvoke7.cs.
25661         
25662         * domain.c (mono_init): Call a new initialization function.
25663
25664         * appdomain.c (mono_runtime_init): Call the new initializer function
25665         of the marshal module.
25666
25667         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25668         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25669
25670         * marshal.h marshal.c: Added locks around the wrapper caches to make
25671         this module thread safe.
25672
25673         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25674         this argument. Fixes pinvoke1.exe.
25675
25676 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25677
25678         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25679         enumeration of values. Removed fields to store remote call output values in
25680         MonoAsyncResult. Not needed any more.
25681         * object.c: Initialize call_type and async_result fields in mono_message_init.
25682         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25683         dispatching the message.
25684         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25685         async call to finish. To do it use a message with EndInvoke call type.
25686
25687 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25688
25689         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25690         determines whenever a method has marshalling info.
25691
25692 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25693
25694         * assembly.c: fix the build on windows.
25695
25696 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25697
25698         * object.cs: Fixed bug #47785.
25699
25700 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25701
25702         * string-icalls.c (StringReplace): If their are no occurances of
25703         the old string found return a reference to the supplied
25704         string. This saves some memory and matches MS behavoir.
25705         
25706 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25707
25708         * socket-io.c: fixed compilation for systems that define AF_INET6
25709         and don't define SOL_IP/SOL_IPV6.
25710
25711 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25712
25713         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25714         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25715
25716         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25717
25718         * domain.c: Make this module thread safe.
25719
25720         * domain.c (mono_init): Call new initialization function.
25721
25722         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25723         reference types too. Fixes #38812.
25724
25725         * image.c (mono_image_init): Fixed warnings.
25726
25727         * class.c (mono_class_from_typeref): Handle assembly load failure
25728         correctly.
25729
25730         * appdomain.c (add_assemblies_to_domain): Handle the case when
25731         the references of an assembly are not yet loaded.
25732
25733         * metadata.c image.c assembly.c: Moved initialization of global
25734         variables to a separate function called at startup since lazy 
25735         initialization of these variables is not thread safe.
25736         
25737         * image.c assembly.c: Made this module thread safe by adding locks in 
25738         the appropriate places.
25739
25740         * domain.c (mono_init): Call the new initialization functions of the
25741         three modules.
25742
25743 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
25744
25745         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
25746           make a direct call. It is proxy's work to make the call asynchronous.
25747           mono_delegate_end_invoke(): If the targe is a proxy, just collect
25748           the return values.
25749         * object.cs: mono_method_call_message_new(): read AsyncResult and
25750           state object from parameters list, if this info is requested.
25751         * object.h: Added fields to store remote call output values in
25752           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
25753
25754 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25755
25756         * object.h: add needed fields to MonoThread.
25757         * threads.c, threads.h: allow registering a function to cleanup data
25758         allocated per thread by the JIT.
25759
25760 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25761
25762         * loader.h: portability fix by Bernie Solomon
25763         * <bernard@ugsolutions.com>.
25764
25765 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
25766
25767         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
25768         return a MonoArray. This simplifies the code and also ensures that
25769         the cache allways contains an object reference as a value.
25770
25771         * icall.c (ves_icall_get_parameter_info): Simplified using the new
25772         function.
25773
25774 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25775
25776         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
25777         fixes a problem with byte ordering when getting the address family for
25778         a socket.
25779
25780 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
25781
25782         * .cvsignore: Added monosn.
25783
25784         * reflection.h reflection.c loader.c: Added support for parameter
25785         marshalling to dynamically created types. Fixes #47295.
25786
25787 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25788
25789         * rand.c: remove useless warnings.
25790
25791 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25792
25793         * class.c: implemented ldtoken for methods and fieldrefs.
25794
25795 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25796
25797         * threadpool.c: when mono_async_invoke was called, no one took care of
25798         monitoring the queue. So if the method invoked took some time and we
25799         got new async invoke requests after 500 ms (the thread created waited
25800         that long in WaitForSingleObject), the new async invoke was not called
25801         until the previous one finished.
25802
25803         This is fixed now. Thanks to Totte for helping with it.
25804
25805 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25806
25807         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
25808
25809 2003-08-11  Martin Baulig  <martin@ximian.com>
25810
25811         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
25812
25813 2003-08-06  Martin Baulig  <martin@ximian.com>
25814
25815         * mono-debug-debugger.c: Added support for static fields,
25816         properties and methods.
25817
25818 2003-08-06  Martin Baulig  <martin@ximian.com>
25819
25820         * mono-debug-debugger.c: Don't store the MonoString's vtable to
25821         make this work for applications with multiple application domains.
25822
25823 2003-08-04  Martin Baulig  <martin@ximian.com>
25824
25825         * mono-debug-debugger.c: Completely reworked the type support; the
25826         most important thing is that we're now just using one single
25827         `MonoType' instance per type.
25828
25829 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
25830
25831         * mono-endian.h, mono-endian.c, icall.c: Added icall
25832         ves_icall_System_Double_AssertEndianity to assert double word endianity
25833         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
25834
25835 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25836
25837         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
25838         support, icalls and fixes.
25839
25840 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
25841
25842         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
25843         classes that are a punctuation character in .NET is not the same a
25844         g_unichar_ispunct.
25845
25846 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25847
25848         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
25849
25850 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
25851
25852         * icall.c: Add new MemCopy internalcall.
25853         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
25854         Simplified code; It is not necessary to handle all the cases here,
25855         as the C# code takes care of it.  Only handle the case of the name
25856         resource embedded into the assembly.
25857
25858         Changed signature to return the data pointer and the size of the
25859         data. 
25860
25861 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
25862
25863         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
25864         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
25865
25866 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25867
25868         * socket-io.c: ignore EINTR error in select.
25869
25870 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
25871
25872         * class.h, class.c: removed unused subclasses field in MonoClass.
25873
25874 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25875
25876         * icall.c: improve fix of get_base_definition(). If the parent class
25877           doesn't have the mehod, look at the parent of the parent.
25878         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
25879           to check if a parameter is an in or out parameter
25880           (PARAM_ATTRIBUTE_IN is not set by default).
25881           mono_method_return_message_restore(): Use mono_class_value_size to
25882           get the size of a value type. mono_type_stack_size (parameterType)
25883           does not return the correct value if parameterType is byRef.
25884           mono_load_remote_field(), mono_load_remote_field_new(),
25885           mono_store_remote_field(), mono_store_remote_field_new():
25886           raise exception if the remote call returns an exception.
25887
25888 2003-07-28  Martin Baulig  <martin@ximian.com>
25889
25890         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
25891         method.  This is a wrapper around mono_runtime_invoke() which
25892         boxes the instance object if neccessary.
25893
25894 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25895
25896         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
25897         metadata.h, row-indexes.h, verify.c: first cut of generics support.
25898
25899 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25900
25901         * icall.c: disable mcs bug workaround.
25902
25903 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25904
25905         * object.c (mono_runtime_class_init): Take the metadata_section
25906         mutex before obtaining the domain mutex.
25907
25908         * appdomain.h: Added definition of metadata_section mutex here. 
25909
25910         * object.c: define metadata_mutex here.
25911
25912 2003-07-24  Ravi Pratap  <ravi@ximian.com>
25913
25914         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
25915         fixed.
25916
25917 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
25918
25919         * reflection.c: Fix bug #46669
25920
25921 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25922
25923         * exception.c:
25924         * exception.h:
25925         * icall.c:
25926         * object.h: fill in the type name for TypeLoadException.
25927
25928 2003-07-23  Ravi Pratap  <ravi@ximian.com>
25929
25930         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
25931         relationship between TypeBuilders while compiling corlib) and bug
25932         45993 (Array types returned from the runtime while compiling
25933         corlib were from the loaded corlib).
25934
25935 2003-07-22  Martin Baulig  <martin@ximian.com>
25936
25937         * mono-debug-debugger.c: Reworked the type support a bit more;
25938         distinguish between types and classes.
25939
25940 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
25941
25942         * icall.c: add IsArrayImpl icall.
25943
25944 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
25945
25946         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
25947         initializing real_size only once. Also fix bug #46602.
25948
25949 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
25950
25951         * object.c: Renamed mono_metadata_section to metadata_section.
25952
25953 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
25954
25955         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
25956           empty array if the type is an array. Fixed.
25957           ves_icall_MonoMethod_get_base_definition: if the base method
25958           is abstract, get the MethodInfo from the list of methods of
25959           the class.
25960         * reflection.c: ParameterInfo.PositionImpl should be zero-based
25961           and it was 1-based. Fixed in mono_param_get_objects.
25962
25963 2003-07-20  Martin Baulig  <martin@ximian.com>
25964
25965         * mono-debug.h: Set version number to 31.
25966         (mono_debug_init): Added `MonoDomain *' argument.
25967
25968         * mono-debug-debugger.c: Reworked the type support; explicitly
25969         tell the debugger about builtin types; pass the `klass' address to
25970         the debugger.
25971
25972 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
25973
25974         * image.c: Allow new metadata tables to be loaded without a
25975         warning. Also update the warning message to give the new constant value.
25976                 
25977 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25978
25979         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
25980         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
25981         array type representation changes.
25982
25983 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25984
25985         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
25986         on Environment.Exit () call.
25987
25988 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25989
25990         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
25991         requires a matching corlib.
25992
25993 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25994
25995         * Changelog: My editor decided to add a CR to each line. Sorry about that.
25996           Committed again without the CRs.
25997         
25998 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25999
26000         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
26001           getting it from the "this" socket instance. Did not work
26002           if the socket is a subclass of Socket.
26003           Also fixed bug #35371.
26004
26005 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26006
26007         * metadata.c: fixed size for TypedByRef.
26008         * loader.c: when searching for a method, consider the vararg amrker.
26009         * unicode.c, decimal.c: constify some arrays.
26010
26011 2003-07-15  Dick Porter  <dick@ximian.com>
26012
26013         * socket-io.c: Fixed compilation for gcc < 3.2.
26014
26015         Fixed compilation for machines that don't have AF_INET6 (thanks to
26016         Bernie Solomon <bernard@ugsolutions.com> for that part.)
26017
26018         Fixed compile warnings.
26019         
26020         Fixed formatting and line endings.
26021
26022 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
26023
26024         * socket-io.h:
26025         * socket-io.c: Added IPv6 support.
26026
26027 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
26028
26029         * class.c (mono_class_is_assignable_from): New function to implement
26030         the is_assignable_from logic. Used by mono_object_isinst, 
26031         Type::IsAssignableFrom () and the interpreter.
26032
26033         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
26034         Object, even interfaces.
26035         
26036         * object.c (mono_object_isinst): Implement in terms of 
26037         is_assignable_from.
26038
26039         * icall.c (ves_icall_type_is_assignable_from): New icall.
26040
26041 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
26042
26043         * domain.c (foreach_domain): fix compiler warning.
26044
26045 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
26046
26047         * image.c (load_metadata_ptrs): use g_strndup because strndup is
26048         not available on all plattforms
26049
26050 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
26051
26052         * image.h image.c: Store the metadata version string in MonoImage.
26053         * icall.c: New icall to retrieve the image version.
26054         * reflection.c (create_dynamic_image): Fill in the image version field
26055         * reflection.c (build_compressed_metadata): Use the image version
26056         from the image structure.
26057
26058 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26059
26060         * appdomain.c: modified comment.
26061         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
26062         That will be its last iteration when mono_gc_cleanup is called from
26063         mono_runtime_cleanup and before the domain is unloaded.
26064
26065         Fixes bug #45962.
26066
26067 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
26068
26069         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
26070         attributes.
26071
26072 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26073
26074         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
26075         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
26076         Bernie Solomon <bernard@ugsolutions.com>.
26077
26078 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26079
26080         * object.c, object.h: provide mono_object_new_fast() for faster
26081         allocation in some special cases.
26082
26083 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
26084
26085         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
26086         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
26087
26088 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
26089
26090         * threadpool.c: fix leaks.
26091
26092 2003-07-01  Dick Porter  <dick@ximian.com>
26093
26094         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
26095         using MonoGHashTables.  Fixes threadpool bug posted to list.
26096
26097 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
26098
26099         * image.h, image.c: added support to load an assembly from a byte array.
26100         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
26101         assembly bundle support.
26102
26103 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
26104
26105         * threadpool.c (mono_thread_pool_add): keep a reference to the
26106         AsyncResult to prevent GC
26107
26108 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26109
26110         * class.c: leak fix.
26111
26112 2003-06-25  Dick Porter  <dick@ximian.com>
26113
26114         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
26115         for the async object, the WaitHandle object will close the handle.
26116         Fixes bug 45321.
26117
26118 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26119
26120         * class.c: in mono_array_class_get (), lookup from the hash with the
26121         same type we insert: this works around a bug in
26122         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
26123         lluis. The real fix will have to wait for after the release.
26124
26125 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26126
26127         * icall.c: fix memory leak when getting type members.
26128
26129 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26130
26131         * reflection.c: added more pubtoken special cases.
26132
26133 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
26134
26135         * class.c: handle field offset correctly when class size
26136         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
26137
26138 2003-06-20  Martin Baulig  <martin@ximian.com>
26139
26140         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
26141         *image' field.
26142
26143 2003-06-20  Martin Baulig  <martin@ximian.com>
26144
26145         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
26146
26147 2003-06-20  Martin Baulig  <martin@ximian.com>
26148
26149         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
26150         just distinguish between variables in registers and variables at
26151         an offset relative to a register.
26152
26153 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26154
26155         * icall.c: #ifdef out latest changes until mcs is fixed.
26156
26157 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26158
26159         * icall.c: return members in metadata order.
26160
26161 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
26162
26163         * icall.c: avoid infinite loop in GetTimeZoneData.
26164
26165 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
26166
26167         * icall.c: added Marshal.Prelink/All icalls.
26168
26169 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26170
26171         * object.c, object.h: fix warnings and do some overflow checking
26172         when creating arrays.
26173
26174 2003-06-17  Dick Porter  <dick@ximian.com>
26175
26176         * file-io.h:
26177         * file-io.c: File attributes need to be tweaked slightly when
26178         passed from the managed to the w32 world.
26179
26180 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26181         * profiler.h profiler-private.h profiler.c: Rework last patch
26182         based on suggestion by Paolo.
26183         
26184 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26185
26186         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
26187         instruction level coverage data collection.
26188         * profiler.h profiler.c (: Added new callback function which can be
26189         used by the profiler to limit which functions should have coverage
26190         instrumentation.
26191         * profiler.c (mono_profiler_load): Call g_module_build_path to
26192         generate the file name of the profiler library.
26193
26194 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26195
26196         * profiler.c, profiler.h, profiler-private.h: added basic block 
26197         coverage profiling API.
26198
26199 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
26200
26201         * reflection.c (mono_reflection_create_runtime_class): Add support
26202         for events in dynamically generated code.
26203
26204         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
26205         not allocated.
26206
26207 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26208
26209         * icall.c: when getting timezone info, return reasonable values if we
26210         can't get the actual data.
26211
26212 2003-06-14  Dick Porter  <dick@ximian.com>
26213
26214         * threads.c (start_wrapper): Remove the reference to the thread
26215         object in the TLS data, so the thread object can be finalized.
26216         This won't be reached if the thread threw an uncaught exception,
26217         so those thread handles will stay referenced :-( (This is due to
26218         missing support for scanning thread-specific data in the Boehm GC
26219         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
26220
26221 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
26222
26223         * reflection.c: ensure streams and tables are first allocated with
26224         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
26225
26226 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26227
26228         * icall.c: fixed GetElementType for byrefs (bug# 44792).
26229
26230 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
26231
26232         * reflection.c (mono_reflection_create_runtime_class): Add support for
26233         properties to dynamically created classes.
26234         * reflection.c: Fix a few places where non-MonoObjects were inserted
26235         into the tokens hashtable.
26236
26237 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26238
26239         * object.c: some support to handle out of memory exceptions.
26240
26241 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
26242
26243         * marshal.c (mono_marshal_get_native_wrapper): support reference
26244         return types
26245
26246 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26247
26248         * object.h, object.c: more portability stuff from Bernie Solomon.
26249         Unexport mono_object_allocate(). Added mono_object_unbox ().
26250         Set exitcode when an unhandled exception is thrown.
26251
26252 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
26253
26254         * marshal.c (mono_marshal_get_native_wrapper): use custom
26255         marshaler for return types.
26256
26257 2003-06-10  Dick Porter  <dick@ximian.com>
26258
26259         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
26260         ip_mreq is available
26261
26262 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
26263
26264         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
26265         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
26266         by Bernie Solomon <bernard@ugsolutions.com>.
26267
26268 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
26269
26270         * gc.c (mono_gc_init): Avoid error message on shutdown when
26271         GC_DONT_GC=1 is used.
26272
26273         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
26274         New icall to return the GUID of a module.
26275
26276 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26277
26278         * class.c: ensure instance size always includes the parent's size
26279         even whem class size is set explicitly (fixes bug#44294).
26280
26281 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26282
26283         * profiler.h, profiler.c: made the simple profiler thread-safe,
26284         get more accurate timing info. Allow the loading of an
26285         externally-developed profiler module.
26286
26287 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
26288
26289         * marshal.c (mono_marshal_get_native_wrapper): improved
26290         class/byref arguments.
26291         (mono_marshal_get_native_wrapper): better string marshaling support.
26292
26293 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
26294
26295         * class.c: ensure .pack and .size are handled correctly and
26296         simplified layout of static fields.
26297
26298 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
26299
26300         * appdomain.c
26301         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
26302
26303         * loader.c (mono_lookup_pinvoke_call): look for modules in the
26304         current directory (fix bug 44008)
26305
26306 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
26307
26308         * marshal.c (mono_marshal_get_native_wrapper): started support for
26309         custom marshalers.
26310         (mono_delegate_to_ftnptr): consider marshalling specifications
26311
26312 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
26313
26314         * reflection.c, reflection.h: emit custom marshal info.
26315
26316 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26317
26318         * object.c: free the GError.
26319         * icall.c: added CloseEvent_internal.
26320         * threads.[ch]:
26321         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
26322         call.
26323
26324 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
26325
26326         * loader.c (mono_method_get_signature): Add support for dynamic
26327         assemblies.
26328
26329 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
26330
26331         * reflection.c: fixed bug #43905.
26332
26333 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26334
26335         * class.c, domain.c, icall.c, metadata.h, object.h: support for
26336         handling TypedReference and ArgIterator.
26337         * loader.c, loader.h: added function to get signature at call site.
26338
26339 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26340
26341         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
26342         data readonly. Buglets and warning fixes. Some MethodSpec support.
26343
26344 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26345
26346         * class.h, class.c, object.c: remove relative numbering support.
26347
26348 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
26349
26350         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
26351         free the string, until we get a chance to fix Gtk#
26352
26353 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26354
26355         * marshal.c: revert last patch.
26356
26357 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
26358
26359         * icall.c: updates for new mono_class_vtable() not calling
26360         the type constructor anymore.
26361
26362 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26363
26364         * object.h, object.c: separate vtable creation from type
26365         initialization. Make running the .cctor thread safe.
26366
26367 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
26368
26369         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
26370
26371 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
26372
26373         * loader.c (mono_get_method): consider calling convention
26374
26375 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
26376
26377         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
26378         to return the invisible global type for a module.
26379
26380         * reflection.c (mono_image_build_metadata): Emit global fields too.
26381
26382 2003-05-20  Peter Williams  <peterw@ximian.com>
26383
26384         * loader.c (mono_lookup_internal_call): Add a few newlines.
26385
26386 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
26387
26388         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
26389         literal strings.
26390
26391         * appdomain.c (set_domain_search_path): Recalculate search path when
26392         AppDomainSetup.PrivateBinPath changes.
26393
26394         * object.c (mono_class_compute_gc_descriptor): It turns out some
26395         parts of the class libs (like System.Thread) holds pointers to
26396         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
26397         to treat native int a pointer type here.
26398         
26399 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
26400
26401         * appdomain.h, domain.c: add hashtable for jump target resolution.
26402
26403 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
26404
26405         * reflection.h reflection.c icall.c: Added new icalls 
26406         GetManifestResourceInfoInternal, GetModulesInternal and support
26407         infrastructure.
26408
26409 2003-05-16  Dick Porter  <dick@ximian.com>
26410
26411         * icall.c:
26412         * file-io.h:
26413         * file-io.c: Implement System.IO.MonoIO::GetTempPath
26414
26415 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
26416
26417         * object.c: mono_store_remote_field: little fix to previous patch.
26418
26419 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26420
26421         * class.c: add constructors to array classes.
26422         * icall.c: special case array construction for InternalInvoke (),
26423
26424 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26425
26426         * class.h class.c reflection.c object.c: Added support for field
26427         defaults in dynamically generated classes.
26428
26429 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26430
26431         * reflection.c: properly encode charset for ddlimport.
26432
26433 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26434
26435         * threads.c: allow compiling without GC.
26436
26437 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26438
26439         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26440         handling of thread static data.
26441
26442 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26443
26444         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26445
26446 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26447
26448         * class.c (mono_array_class_get): always set the serializable flags
26449         (mono_array_class_get): always set the SEALED attribute for array types
26450
26451 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26452
26453         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26454         attributes (fix for bug 42021).
26455
26456 2003-05-12  Dick Porter  <dick@ximian.com>
26457
26458         * gc.c: Don't run finalizers when the finalizer thread is
26459         finishing up, because the default domain has already been
26460         destroyed.
26461
26462 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26463
26464         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26465         value is null, we should throw an exception.   This is slightly
26466         different than the other conventions used for the constructor.
26467
26468 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26469
26470         * socket-io.c: fixed windows build.
26471
26472 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26473
26474         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26475
26476 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26477
26478         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26479         compilers.
26480
26481 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26482
26483         * class.c (mono_class_layout_fields): Add experimental GC aware
26484         auto layout facility. Requires class library changes to work correctly.
26485
26486         (mono_class_setup_vtable): Avoid overriding explicit interface
26487         method implementations. Fixes iface3.exe test.
26488
26489         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26490         object reference.
26491         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26492         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26493
26494         * metadata.h: Add new type classification macro which determines
26495         whenever the type holds an object reference.
26496
26497 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26498
26499         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26500
26501 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26502
26503         * gc.c (finalizer_thread): Work around a GC bug.
26504
26505 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26506
26507         * marshal.c (emit_struct_conv): allow unions
26508
26509         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26510
26511 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26512
26513         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26514
26515 2003-05-06  Martin Baulig  <martin@ximian.com>
26516
26517         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26518
26519 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26520
26521         * socket-io.c:
26522         (Select_internal): allow NULLs, don't create arrays if not needed.
26523         Coupled with Socket.cs changes.
26524
26525         * threadpool.c:
26526         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26527         register a finalizer for it that will close the semaphore handle. This
26528         fixes the leak and make Lupus' test run with > 4080 loops.
26529
26530 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26531
26532         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26533         Jerome Laban (bug #42287)
26534
26535 2003-05-02  Martin Baulig  <martin@ximian.com>
26536
26537         * debug-mono-symfile.h
26538         (MonoSymbolFile): Moved declaration into mono-debug.h.
26539         (MonoDebugMethodJitInfo): Likewise.
26540         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26541         argument.
26542         (_mono_debug_address_from_il_offset): Take a
26543         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26544
26545         * mono-debug.h
26546         (MonoDebugDomainData): New struct.
26547         (mono_debug_get_domain_data): New function.
26548         (mono_debug_add_method): Take an additional `MonoDomain *'
26549         argument.
26550         (mono_debug_source_location_from_address): Likewise.
26551         (mono_debug_il_offset_from_address): Likewise.
26552         (mono_debug_address_from_il_offset): Likewise.
26553
26554 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26555
26556         * reflection.c: one more check for null type in custom attrs.
26557
26558 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26559
26560         * reflection.c: avoid warning (comparison is always false due to limited
26561         range of data type).
26562
26563 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26564
26565         * icall.c: throw an exception in Type.GetField if the argument 'name'
26566         is NULL.
26567
26568 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26569
26570         * reflection.c: fixed handling of enums in named arguments to custom
26571         attributes (bug #42123).
26572
26573 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26574
26575         * reflection.c: use the right array element type and handle
26576         a null for a Type argument, too.
26577
26578 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26579
26580         * reflection.c: handle arrays as arguments to custom attributes.
26581
26582 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26583
26584         * reflection.c: handle a string value in a custom attr
26585         ctor that takes an object.
26586
26587 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26588
26589         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26590         (fix bug #42063)
26591
26592 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26593
26594         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26595
26596 2003-04-27  Martin Baulig  <martin@ximian.com>
26597
26598         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26599         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26600         MONO_DEBUGGER_EVENT_BREAKPOINT.
26601         (mono_breakpoint_trampoline_code): Removed.
26602         (mono_debugger_event_handler): The last argument is now a
26603         `guint32'.
26604         (mono_debugger_insert_breakpoint_full): Removed the
26605         `use_trampoline' argument.
26606         (mono_debugger_method_has_breakpoint): Likewise.
26607         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26608         mono_debugger_breakpoint_callback(); take the method and
26609         breakpoint number as arguments.
26610
26611 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26612
26613         * metadata.c: fix off by one when loading parameters attributes.
26614
26615 2003-04-24  Martin Baulig  <martin@ximian.com>
26616
26617         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26618
26619 2003-04-24  Martin Baulig  <martin@ximian.com>
26620
26621         * mono-debug-debugger.c: Moved all code which interacts with the
26622         Mono Debugger here.
26623
26624         * debug-mono-symfile.c: This code now just deals with the symbol
26625         file itself, the debugger code is now in mono-debug-debugger.c.
26626
26627 2003-04-23  Martin Baulig  <martin@ximian.com>
26628
26629         * mono-debug.c (mono_debug_source_location_from_il_offset):
26630         New method; like mono_debug_source_location_from_address(), but
26631         takes an IL offset instead of a machine address.
26632
26633 2003-04-23  Martin Baulig  <martin@ximian.com>
26634
26635         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26636         `line' field; this is now computed by the debugger.
26637
26638 2003-04-23  Martin Baulig  <martin@ximian.com>
26639
26640         * mono-debug.[ch]: New files.  This is the new debugging interface.
26641
26642         * mono-debug-debugger.[ch]: New files.  Moved all code which
26643         interacts with the Mono Debugger here.
26644
26645 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26646
26647         * domain.c (mono_init): initialize mono_defaults.monitor_class
26648
26649 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26650
26651         * reflection.c (method_encode_code): Add a spicy exception to help
26652         future compiler authors.
26653
26654 2003-04-21  Martin Baulig  <martin@ximian.com>
26655
26656         * icall.c
26657         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26658         Make this work with relative pathnames; g_filename_to_uri() needs
26659         an absolute filename.
26660
26661 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26662
26663         * icall.c: Track name changes in Object and ValueType.
26664
26665 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26666
26667         * metadata.c (mono_type_stack_size): size should be a multiple of
26668         sizeof (gpointer)
26669
26670 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26671
26672         * gc.c:
26673         (internal_domain_finalize): moved into mono_domain_finalize. No need
26674         to create another thread because the finalizers will be run in the
26675         finalizer thread.
26676         
26677         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26678         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26679         to be run (MS does this too).
26680
26681 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26682
26683         * object.c (mono_class_compute_gc_descriptor): Update comment.
26684
26685         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26686
26687         * image.h: Add synchronized wrapper cache.
26688
26689         * image.c (do_mono_image_open): Initialize cache.
26690
26691         * reflection.c (create_dynamic_mono_image): Initialize cache.
26692
26693 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26694
26695         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26696         ves_icall_System_Buffer_ByteLengthInternal.
26697
26698 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26699
26700         * reflection.c: setup klass->nested_in earlier. Allow
26701         a dash in the assembly name.
26702
26703 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26704
26705         * metadata.c (mono_type_to_unmanaged): dont access
26706         type->data.klass for MONO_TYPE_OBJECT
26707         (mono_type_to_unmanaged): consider System.Delegate class
26708
26709 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26710
26711         * class.c: just setup supertypes in the proper place instead of
26712         initializing the full element class for arrays.
26713
26714 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26715
26716         * class.c: ensure the element class of arrays is initialized.
26717         Setup the supertype info for array classes, too.
26718
26719 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26720
26721         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26722
26723 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26724
26725         * Makefile.am: re-added -m option when running cygpath. This way,
26726         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26727         separator.
26728         * mono-config.c: same codepath for locating mono config file for WIN32
26729         and the rest.
26730         * assembly.c: if mono_assembly_setrootdir is called, don't override
26731         the value set.
26732
26733 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26734
26735         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
26736         MONO_ASSEMBLIES variable.
26737
26738 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
26739
26740         * icall.c: added Assembly::GetNamespaces() icall.
26741
26742 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26743
26744         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
26745
26746 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
26747
26748         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
26749         * object.c: fixed bug in the construction of vtable for proxies
26750
26751 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
26752
26753         * object.c (mono_array_new): Mark mono_array_new as an icall.
26754
26755 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26756
26757         * class.c: fixed test for public method when overriding interfaces.
26758         Closes bug #40970.
26759
26760 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26761
26762         * appdomain.h, domain.c: added mono_domain_foreach() to
26763         be able to access the currently loaded appdomains.
26764         * object.c: make string interning work across sppdomains.
26765         Mark some functions for use as icalls.
26766
26767 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26768
26769         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
26770
26771         * reflection.h reflection.c: Allocate long living data using 
26772         GC_MALLOC_ATOMIC so the collector does not need to scan it.
26773
26774         * reflection.c: Double the allocation size in streams instead of
26775         increasing it, to prevent unneccesary copying on large assemblies.
26776         
26777         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
26778         creation if the assembly does not have the Run flag set.
26779
26780 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
26781
26782         * class.h: avoid the C++ keywords in header files (Jerome Laban
26783         spotted and fixed this).
26784
26785 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26786
26787         * object.c:
26788         (mono_unhandled_exception): fill in the arguments for the
26789         UnhandledException event. Only trigger that event for the default
26790         domain (as MS does).
26791
26792 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
26793
26794         * object.c: Improve typed allocation stuff based on suggestions from
26795         Paolo. Also turn it on if the GC library supports it.
26796
26797 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26798
26799         * object.c object.h class.h: Added experimental typed allocation
26800         facility using the interfaces in gc_gcj.h.
26801
26802         * os/gc_wrapper.h: Added new include files.
26803         
26804 2003-04-03  Martin Baulig  <martin@ximian.com>
26805
26806         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
26807         which is not yet enabled by default.
26808
26809         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
26810         functions.
26811         (mono_gc_lock, mono_gc_unlock): New static functions.
26812
26813         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
26814         functions; stop/start the world for the garbage collector.  This
26815         is using the windows API; we need to complete the SuspendThread()/
26816         ResumeThread() implementation in the io-layer to make this work on Unix.
26817         (mono_gc_push_all_stacks): New public function; tells the garbage
26818         collector about the stack pointers from all managed threads.
26819
26820 2003-04-03  Martin Baulig  <martin@ximian.com>
26821
26822         * object.h (MonoThread): Added `gpointer stack_ptr'.
26823
26824         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
26825
26826 2003-04-03  Martin Baulig  <martin@ximian.com>
26827
26828         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
26829
26830 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26831
26832         * reflection.c (typebuilder_setup_fields): Initialize field.first and
26833         field.last.
26834
26835 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
26836
26837         * loader.c (mono_lookup_internal_call): Report the corlib that is
26838         out of sync.
26839
26840 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
26841
26842         * icall.c (ves_icall_type_GetTypeCode): fixed check for
26843         System.DBNull (it's class not valuetype).
26844
26845 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26846
26847         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
26848         if the array method was already assigned a token (fixes bug#40646).
26849
26850 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
26851
26852         * reflection.c (mono_reflection_get_type): Attempt type resolve even
26853         if no assembly is given.
26854
26855 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
26856
26857         * metadata.h: Added the new tables.
26858
26859         * row-indexes.h: Added definitions for new tables.
26860
26861         * metadata.c: Add schemas for new tables, and add support for
26862         computing the sizes of them.
26863
26864         * class.c: Update for handling the new type cases.
26865
26866 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
26867
26868         * metadata.h (MONO_TYPE_IS_VOID): new macro
26869
26870 2003-03-31  Martin Baulig  <martin@ximian.com>
26871
26872         * threads.h (MonoThreadCallbacks): Added `thread_created'.
26873
26874         * threads.c (mono_thread_new_init): Call `thread_created' in the
26875         mono_thread_callbacks.
26876
26877 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
26878
26879         * loader.h: added marshalbyrefobject_class to mono_defaults
26880         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
26881         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
26882           generation of output parameters.
26883           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
26884         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
26885           contextbound and the target object belongs to the context of the caller.
26886         * object.h: added context and unwrapped_server variables in MonoRealProxy.
26887         * object.c: Implemented support for interfaces and abstract classes
26888           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
26889           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
26890
26891 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
26892
26893         * class.h class.c (mono_class_is_subclass_of): New function.
26894         
26895         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
26896         routines for most common case (calls from ArrayList::ToArray).
26897
26898         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
26899         routine so programs which call Environment::Exit() can be profiled.
26900
26901         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
26902         Added MONO_ARCH_SAVE_REGS.
26903
26904         * icall.c (ves_icall_type_is_subtype_of): Use new function.
26905
26906 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
26907
26908         * blob.h: Add a couple of new MonoType types definitions.
26909
26910         * tabledefs.h: Add a couple of new call convs.
26911
26912 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
26913
26914         * reflection.h (MonoReflectionDynamicAssembly): track changes in
26915         the layout of the class.
26916
26917         * reflection.c (alloc_table): double the size on overflow to avoid
26918         unnecessary copying.
26919
26920         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
26921         avoid filling out metadata tables and blobs. Also set mb->ilgen to
26922         null so it can be garbage collected.
26923         
26924 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
26925
26926         * reflection.c (mono_reflection_get_type): Return the resolved type
26927         only if it is in the assembly we searched.
26928
26929         * reflection.c (ensure_runtime_vtable): Initialize method slots.
26930
26931         * class.c (mono_class_setup_vtable): Set the slot of the overriding
26932         method.
26933
26934 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26935
26936         * appdomain.c:
26937         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
26938         the right one is 'file:///blah', but MS allows it.
26939         * assembly.c:
26940         (mono_assembly_open): allow 'file://blah'
26941
26942         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
26943
26944 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
26945
26946         * socket-io.c: fixes bug #40310.
26947
26948 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
26949
26950         * reflection.c (mono_reflection_parse_type): handle deeply nested
26951         types correctly.
26952
26953         * reflection.c (mono_image_create_token): Use unique token values
26954         since they will be put into a hash table.
26955
26956         * class.c (mono_class_setup_vtable): If a method occurs in more than
26957         one place in the vtable, and it gets overriden, then change the
26958         other occurances too.
26959
26960         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
26961         object as return type.
26962
26963 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26964
26965         * icall.c: Deleted "ToString" implementation for double and float
26966         because they are full implemented in managed code.
26967
26968 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26969
26970         * reflection.c, reflection.h: implemented and exported functions
26971         to retrieve info about custom attributes.
26972
26973 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26974
26975         * appdomain.c: moved Uri handling to assembly.c
26976         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
26977         work when using a file Uri in *nix and windows.
26978
26979         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
26980         GetReferencedAssemblies.
26981
26982 2003-03-18  Dick Porter  <dick@ximian.com>
26983
26984         * icall.c: Rename a couple of internal calls
26985
26986         * threads.c: Set the thread state to Stopped when a thread exits.
26987         Fixes bug 39377.
26988
26989 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
26990
26991         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
26992         New icall.
26993
26994         * object.c (mono_class_vtable): fix warning.
26995
26996 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
26997
26998         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
26999
27000         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
27001         memory.
27002         (method_encode_clauses): Create exception info structures in the right
27003         order.
27004         (mono_reflection_setup_internal_class): Initialize supertypes field.
27005
27006         * class.c object.c: Handle interfaces which implement other interfaces 
27007         correctly.
27008
27009         * class.h class.c: Move the supertypes array initialization code into 
27010         a separate function so it can be used for dynamic types too. Also call
27011         it earlier, in mono_class_init(), since it can be used before the
27012         type is initialized.
27013
27014 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27015
27016         * Makefile.am:
27017         * assembly.c:
27018         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
27019
27020         * appdomain.c:
27021         * appdomain.h:
27022         * marshal.c:
27023         * object.c: remove warnings.
27024
27025 2003-03-13  Martin Baulig  <martin@ximian.com>
27026
27027         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
27028         (MonoDebugLexicalBlockEntry): New types.
27029
27030         * debug-mono-symfile.c
27031         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
27032
27033 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27034
27035         * process.c: ret can be any non-zero value accroding to MS doc.
27036
27037 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
27038
27039         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
27040         fixing a warning for a miss-used prototype, would have cause
27041         random memory corruption.
27042
27043 2003-03-07  Martin Baulig  <martin@ximian.com>
27044
27045         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
27046         getting really annoying ....
27047
27048 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
27049
27050         * reflection.c (fixup_method): added support for array methods.
27051
27052 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
27053
27054         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
27055         (pointed out by Michael Adams).
27056
27057 2003-03-04  Dick Porter  <dick@ximian.com>
27058
27059         * icall.c: Temporarily reverted the Double and Single ToString()
27060         change, because it broke nunit.
27061
27062 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
27063
27064         * object.h, threads.h: make include files compatible with C++
27065         (patch by Jerome Laban <jlaban@wanadoo.fr>).
27066
27067 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27068
27069         * icall.c: Erased ToString helper functions for Double and Single.
27070         Now, that implementations ar all in managed code (Double and Single
27071         Formatters).
27072
27073 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
27074
27075         * appdomain.c: Added method for initializing the default context of
27076         a domain. Added internal call for getting the default context.
27077         * appdomain.h: Added context variable in MonoDomain struct.
27078         * domain.c: mono_domain_set also sets the default context of the domain
27079         * icall.c: Mapped internal method InternalGetDefaultContext.
27080         * object.c: mono_object_get_virtual_method returns always a remoting
27081         wrapper if the object is a transparent proxy.
27082         mono_runtime_invoke_array: when creating an object by calling the
27083         constructor, if the created object is a proxy, then the constructor should
27084         be called using the a remoting wrapper.
27085
27086 2003-03-03  Dick Porter  <dick@ximian.com>
27087
27088         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
27089         variable so it compiles on solaris.  Problem spotted by
27090         Christopher Taylor <ct@cs.clemson.edu>
27091
27092 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27093
27094         * appdomain.c:
27095         (get_info_from_assembly_name): don't leak value.
27096
27097         * icall.c:
27098         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
27099         result.
27100
27101 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
27102
27103         * assembly.c: export mono_image_load_references ().
27104         * class.c: handle function pointers. mono_class_from_name() now
27105         supports nested type names directly.
27106
27107 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
27108
27109         * reflection.h reflection.c: Encode already created dynamic methods 
27110         and fields correctly as a DEF instead of a REF.
27111
27112         * reflection.c: Get rid of the force_ref argument to 
27113         mono_image_typedef_or_ref since it was wrong in the first place.
27114
27115         * string-icalls.c: add error checking to string constructors according
27116         to the MSDN docs.
27117
27118         * reflection.c: Emit types in the order their TypeBuilders were 
27119         created. Previously, a new table index was assigned to each type before
27120         the tables were emitted. This was wrong because the signature blob
27121         might already refer to a type by its original table index.
27122
27123 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
27124
27125         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
27126         change.
27127         
27128 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27129
27130         * Makefile.am: make assemblies dir have \ instead of / on windows.
27131
27132 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
27133
27134         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
27135         iterate over the NESTEDCLASS table using a linear search since the
27136         table is not guaranteed to be sorted by the secondary key.
27137
27138         * class.c (mono_class_create_from_typedef): fixed up call to
27139         mono_metadata_nesting_typedef.
27140         
27141 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
27142
27143         * marshal.c (mono_string_to_byvalstr): clear the memory as
27144         suggested by Jerome Laban <jlaban@wanadoo.fr>
27145
27146 2003-02-26  Dick Porter  <dick@ximian.com>
27147
27148         * process.c: Cope with padding in .rsrc blocks
27149
27150 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27151
27152         * metadata.h: reverted the filter_len change, it breaks reflection
27153         
27154 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27155
27156         * metadata.h: added a new field to store the filter_len
27157         
27158
27159 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
27160
27161         * reflection.c: handle custom attributes for types and members
27162         created with Reflection.Emit (bug#38422).
27163
27164 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
27165
27166         * reflection.c: define RTSpecialName automatically for constructors for
27167         compatibility with MS.NET.
27168
27169         * reflection.c (mono_reflection_create_runtime_class): initialize
27170         nested_in field of dynamically created classes.
27171
27172 2003-02-22  Martin Baulig  <martin@ximian.com>
27173
27174         * debug-mono-symfile.h: Incremented version number.
27175
27176 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27177
27178         * object.h icall.c process.c: fix warnings.
27179
27180 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27181
27182         * appdomain.h appdomain.c:
27183         (mono_domain_try_type_resolve): split the 
27184         name_or_tb argument into a name and a tb argument.
27185         (mono_domain_has_type_resolve): new function to check whenever the
27186         application has registered a TypeResolve event handler.
27187         
27188         * icall.c reflection.h reflection.c: move the type resolve logic into
27189         mono_reflection_get_type () so it will be invoked when 
27190         Assembly::GetType () is called.
27191
27192         * reflection.c:
27193         (mono_reflection_get_type): renamed to get_type_internal.
27194         (mono_reflection_get_type): fixed type name generation so it works 
27195         for nested types too.
27196         (mono_reflection_get_type): call has_type_resolve () to avoid the 
27197         costly type name generation if there is no resolve event handler.
27198
27199 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27200
27201         * class.c, image.c: load exported types from file references.
27202
27203 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
27204
27205         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
27206           used to cache the managed methods used to create proxies and make 
27207           remote invocation of methods.
27208         * class.h: Added in MonoVTable a flag to indicate that a class needs 
27209           to be remotely created.
27210         * object.c: Modified the method mono_class_vtable(). It now initializes 
27211           the remote flag of the vtable. Modified mono_object_new_specific(), 
27212           so now it checks the remote flag.
27213         * icall.c: Added a couple of internal methods, one for enabling instance 
27214           creation interception for a type, and one for creating objects bypassing
27215           the remote check.
27216
27217 2003-02-18  Martin Baulig  <martin@ximian.com>
27218
27219         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
27220         New interncall to get a method's metadata token.
27221
27222         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
27223         New interncall for the debugger.
27224
27225 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
27226
27227         * class.c (mono_class_setup_vtable): allocate supertype array
27228
27229 2003-02-18  Martin Baulig  <martin@ximian.com>
27230
27231         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
27232
27233 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27234
27235         * reflection.c:
27236         (assembly_name_to_aname): jump over unknown properties (i've found
27237         something like: 'type, assembly, version=xxx, custom=null, public...',
27238         so now will ignore custom=null and still get the rest of the values).
27239
27240 2003-02-17  Dick Porter  <dick@ximian.com>
27241
27242         * threads.c: Have Thread.Start() wait for a semaphore to signal
27243         that the thread has set up all its local data.  This fixes bug
27244         34323, where Abort() raced the new thread's TLS data.
27245
27246         Also removes the handle_store() call from start_wrapper, because
27247         threads are now always created suspended and there is no longer a
27248         race between the parent and child threads to store the info.
27249
27250 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
27251
27252         * image.c: explain the #- heap issue in a message, hopefully
27253         avoiding FAQs on mono-list.
27254
27255 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27256
27257         * icall.c:
27258         (GetEntryAssembly): if the domain has not invoked
27259         AppDomain.ExecuteAssembly yet, return the assembly of the default
27260         AppDomain.
27261
27262 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
27263
27264         * class.c (mono_ldtoken): make it work in dynamic assemblies.
27265
27266 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
27267
27268         * metadata.c, reflection.c: simple speedup to type hash
27269         and equals code.
27270
27271 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
27272
27273         * image.c, image.h, class.c, assembly.c: move module loading
27274         to MonoImage. When loading metadata, consider alignemnet from
27275         the start of metadata, not from the metadata address in memory.
27276
27277 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
27278
27279         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
27280         AssemblyBuilder objects. Factored out custom attribute creation into
27281         a separate function.
27282         (create_custom_attr): new function to create custom attributes.
27283
27284 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
27285
27286         * Makefile.am: Got tired of typing the full pathname to pedump.
27287         Until there is another option, am installing this.
27288
27289 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
27290
27291         * class.c (class_compute_field_layout): always set field->parent 
27292         (mono_ldtoken): use mono_defaults.fieldhandle_class;
27293
27294 2003-02-11  Dick Porter  <dick@ximian.com>
27295
27296         * threads-types.h:
27297         * monitor.c: Rewrote Monitor, making lock much faster and
27298         Pulse/Wait work as specified.  Also uses much fewer handles, and only
27299         creates them as needed.
27300
27301         * exception.c: Added SynchronizationLockException
27302
27303         * threads.c: Deleted old Monitor implementation.  The new one is
27304         in a new file.
27305
27306 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
27307
27308         * class.c: handled TypedReference type code. Set the correct size for
27309         class data. Setup interface_offsets for interface classes, too.
27310
27311 2003-02-09  Martin Baulig  <martin@ximian.com>
27312
27313         * debug-mono-symfile.h: Reflect latest symbol writer changes.
27314
27315 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
27316
27317         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
27318         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
27319         * object.c: fixed mono_object_get_virtual_method () for interfaces.
27320         * verify.c: check for code that runs after the end of the method.
27321
27322 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27323
27324         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
27325         "System.Math::Round2".
27326         * sysmath.h: Added Floor, Round and Round2 definitions.
27327         * sysmath.c: Modified certain functions that were not 100% compliant
27328         with MS.NET (math precision) and added the implementation of Floor,
27329         Round and Round2.
27330
27331 2003-02-07  Martin Baulig  <martin@ximian.com>
27332
27333         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
27334
27335 2003-02-07  Martin Baulig  <martin@ximian.com>
27336
27337         * debug-mono-symfile.c: Reflected latest symwriter changes.
27338         (mono_debug_create_mono_symbol_file): Removed.
27339         (mono_debug_open_mono_symbol_file): Take an argument which
27340         specifies whether to create a dynamic symbol file.
27341
27342 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
27343
27344         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
27345
27346 2003-02-05  Martin Baulig  <martin@ximian.com>
27347
27348         * reflection.c (mono_image_build_metadata): Make this public,
27349         protect it against being called multiple times, don't create
27350         resources and don't build the compressed metadata here.
27351         (mono_image_create_pefile): Do this here.
27352
27353         * icall.c
27354         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
27355
27356 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27357
27358         * socket-io.c: fixed bug #36322.
27359
27360 2003-02-06  Piers Haken <piersh@friskit.com>
27361
27362         * appdomain.[ch]:
27363         * class.h:
27364         * debug-mono-symfile.c:
27365         * icall.c:
27366         * loader.c:
27367         * mono-config.c:
27368         * monosn.c:
27369         * reflection.c:
27370         * socket-io.c: warning cleanups
27371
27372 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
27373
27374         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
27375         function. works like remoting invoke, but does a check for the Proxy first.
27376
27377 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
27378
27379         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
27380
27381 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
27382
27383         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
27384         array of pointers.
27385         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
27386         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
27387
27388         * object.c (mono_store_remote_field_new): used by the new jit
27389         instead of mono_store_remote_field
27390         (mono_load_remote_field_new): used by the new jit
27391         instead of mono_load_remote_field
27392
27393 2003-02-05  Patrik Torstensson
27394
27395         * appdomain.c: changed unload to take the domain id instead
27396         of domain
27397         
27398         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
27399
27400
27401 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27402
27403         * appdomain.c: don't look for assemblies in ApplicationBase if
27404         PrivateBinPathProbe is set.
27405
27406 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27407
27408         * object.c: make the first argument in main_args contain the absolute
27409         path to the assembly. Fixes bug #37511.
27410
27411 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27412
27413         * icall.c: get correct UTC offset for countries not using daylight
27414         time saving. Fixes bug #30030.
27415
27416 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27417
27418         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27419         and 1 are the family).
27420
27421 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27422
27423         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27424
27425         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27426
27427 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27428
27429         * reflection.c: added support for SignatureHelper tokens, which is
27430         needed by the Calli opcode.
27431
27432         * reflection.h: track changes to SignatureHelper class.
27433
27434         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27435
27436 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27437
27438         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27439
27440 2003-02-03  Patrik Torstensson
27441         * appdomain.[c|h], domain.c : 
27442          - Added support for getting a domain via domain id
27443          - Support for setting and getting domain from System.AppDomain 
27444            (used in cross appdomain channel)
27445          - Added support for get/set for a MonoAppContext on a thread 
27446            (Context class in System.Runtime.Remoting.Contexts),
27447          - Removed hack in Get/SetData and ExecuteAssembly.
27448         
27449         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27450         the managed world to get control when a proxy is created.
27451
27452         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27453         
27454 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27455
27456         * icall.c
27457         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27458         Populate the codebase field as well.
27459
27460 2003-02-02  Martin Baulig  <martin@ximian.com>
27461
27462         * debug-mono-symfile.c
27463         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27464         (mono_debug_symfile_add_method): Allow interncalls.
27465
27466 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27467
27468         * icall.c: throw parse exception if strtod fails or the string is empty.
27469
27470 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27471
27472         * marshal.c: handle object type separately from defined
27473         class types.
27474
27475 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27476
27477         * marshal.c: handle NATIVE_LPSTR for strings when it's
27478         explicitly specified.
27479
27480 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27481
27482         * reflection.c, reflection.h, icall.c: setup the reflection
27483         handle cache for ModuleBuilders and AssemblyBuilders.
27484
27485 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27486
27487         * reflection.c (reflection_methodbuilder_to_mono_method): set
27488         pinvoke flag
27489
27490 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27491
27492         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27493
27494 2003-01-29  Dick Porter  <dick@ximian.com>
27495
27496         * threads.c: No need for the fake_thread kludge now that Thread
27497         doesn't run a class constructor
27498         
27499 2003-01-29  Dick Porter  <dick@ximian.com>
27500
27501         * threads.c: Use g_direct_hash instead of the rather bogus
27502         g_int_hash
27503
27504 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27505
27506         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27507         (fix pinvoke12.exe)
27508         (mono_marshal_get_struct_to_ptr): generate valid IL code
27509         (mono_marshal_get_ptr_to_struct): generate valid IL code
27510         (*): correctly set sig->pinvoke, we need to memdup the signature
27511         to do that
27512
27513 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27514
27515         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27516         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27517
27518 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27519
27520         * profiler.c: provide more callers information.
27521
27522 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27523
27524         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27525
27526         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27527
27528         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27529
27530 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27531
27532         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27533         exception instead of going into an infinite loop on dates which it 
27534         can't yet handle.
27535
27536         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27537         out-of-range exception if needed.
27538
27539         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27540         an implementation for an interface method and to override an inherited
27541         method at the same time. 
27542         Imagine a scenario when a virtual method is used to override a
27543         virtual abstract method in a parent class, and this same method 
27544         provides an implementation for an method inherited from an interface. 
27545         In this case, the interface resolution code will set im->slot, which 
27546         means that the virtual method override pass will skip this method 
27547         which means a pointer to the abstract method inherited from the parent
27548         will remain in the vtable of this non-abstract class.
27549
27550         * class.c: (mono_class_setup_vtable): continue search for a real 
27551         method if only an abstract method is found.     
27552
27553 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27554
27555         * reflection.c: add size to encoding for ByValStr and ByValArray
27556         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27557
27558 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27559
27560         * class.c (mono_class_setup_vtable): pass the override info as an
27561         argument.
27562
27563         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27564         correctly.
27565         
27566         * reflection.c (ensure_runtime_vtable); add support for method 
27567         overrides.
27568         
27569 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27570
27571         * reflection.c (resolution_scope_from_image): Hack to work to work with
27572         dynamic assemblies.
27573
27574         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27575         added a 'force_ref' argument to force this function to allways return 
27576         a TypeRef. This is needed by mono_image_get_memberref_token ().
27577         
27578 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27579
27580         * reflection.c (mono_image_get_type_info): interfaces really don't have
27581         a parent.
27582
27583         * reflection.c (mono_image_basic_init): fill out missing fields of
27584         image structure.
27585
27586         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27587         dynamic assemblies. This is required so dynamic assemblies show up in
27588         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27589         Type::GetType() etc. This is consistent with MS behaviour.
27590
27591         * image.c image.h reflection.c: add newly created classes to the name 
27592         cache so mono_class_get () will find them.      
27593
27594 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27595
27596         First part of changes to get IKVM.NET running under mono.
27597         
27598         * appdomain.h, appdomain.c: added new function 
27599         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27600         This function will call AppDomain::DoTypeResolve to do the actual work.
27601
27602         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27603         moved existing code dealing with dynamic tokens to a new function 
27604         called mono_reflection_lookup_dynamic_token (). This function will 
27605         raise TypeResolve events when appropriate. Since reflection.c is not 
27606         part of libmetadata, a new hook function called 
27607         mono_lookup_dynamic_token() is added to class.c which will call this.
27608
27609         * assembly.h assembly.c: make the invoke_load_hook function public,
27610         so it can be called for dynamic assemblies.
27611
27612         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27613
27614         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27615         type isn't found.
27616
27617         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27618         MonoGHashTable, since it contains pointers to objects which the GC 
27619         needs to track.
27620
27621         * assembly.c (search_loaded): remove unused variable.
27622         
27623 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27624
27625         * object.c: fixed issue exposed by gcc-generated IL programs
27626         that use RVA data for pointers.
27627
27628 2003-01-25  Martin Baulig  <martin@ximian.com>
27629
27630         * threads.c (start_wrapper): Moved the initialization of
27631         `start_func' above the mono_new_thread_init() call to which we
27632         pass it as argument.
27633
27634 2003-01-24  Martin Baulig  <martin@ximian.com>
27635
27636         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27637         the MonoThread pointer.
27638
27639 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27640
27641         * icall.c: Rename `PowImpl' to Pow.
27642
27643 2003-01-23  Dick Porter  <dick@ximian.com>
27644
27645         * threads.c (start_wrapper): Create a Thread object if needed, so
27646         the Main() thread can do the class initialisation in a subthread
27647         that has been set up to allow managed code execution.
27648
27649         Pass the thread ID instead of the MonoThread pointer to the thread
27650         start and attach callbacks.  This change is required, because the
27651         jit thread start callback must be called _before_ the Thread
27652         object can be created.
27653         
27654         (mono_thread_init): Removed much object creation code that is no
27655         longer needed.  No managed code is called from here now.
27656
27657         * object.c (mono_runtime_exec_managed_code): Create a subthread
27658         for Main, and call back to the runtime to use it.
27659         Set the exit code when Main exits.
27660
27661         * gc.c: Make sure domain finalisation happens in a subthread.
27662         Re-enable threaded GC, fixing bug 31333 (again).
27663
27664         * environment.c: System.Environment internall calls (so far just
27665         ExitCode is here, the others are still in icall.c)
27666
27667         * appdomain.c (mono_runtime_cleanup): All threads running managed
27668         code should have finished before mono_runtime_cleanup() is
27669         reached, so no need to clean up threads.
27670
27671 2003-01-22  Martin Baulig  <martin@ximian.com>
27672
27673         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27674         `gpointer func' arguments.      
27675         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27676         but added `MonoThread *thread' argument.
27677         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27678
27679         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27680         and pass it to the mono_thread_start_cb callback.
27681         (mono_install_thread_callbacks): New public function to install a
27682         set of callbacks which are set by the debugger.
27683         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27684
27685 2003-01-22  Martin Baulig  <martin@ximian.com>
27686
27687         * Makefile.am: Install debug-mono-symfile.h.
27688
27689 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27690
27691         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27692
27693 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27694
27695         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27696         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27697         (mono_array_class_get): correctly set access levels of arrays
27698
27699 2003-01-20      Patrik Torstensson
27700         * image.h (MonoAssemblyName): changed major, minor, build, revision
27701         from signed to unsigned.
27702
27703 2003-01-20  sean kasun <skasun@azstarnet.com>
27704
27705         * reflection.c (load_cattr_value): Now this handles
27706         MONO_TYPE_SZARRAY.  Fixes bug #35629
27707
27708 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27709
27710         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27711         integer value
27712
27713 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27714
27715         * decimal.c: fixed bug #26056.
27716
27717 2003-01-17  Martin Baulig  <martin@ximian.com>
27718
27719         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27720
27721 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27722
27723         * exception.[ch]:
27724         (mono_get_exception_type_initialization): new function.
27725
27726         * object.c: throw a TypeInitializationException when an exception is
27727         thrown invoking the class constructor.
27728
27729 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27730
27731         * reflection.c: fixed attribute reading.
27732
27733 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27734
27735         * icall.c:
27736         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
27737         provided, look for the type in the calling assembly and then in
27738         mscorlib; if the assembly name is provided, only try that one.
27739
27740 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
27741
27742         * object.c: register the vtable before there is a chance it's
27743         queried again recursively.
27744
27745 2003-01-13  Duncan Mak  <duncan@ximian.com>
27746
27747         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
27748         gc-internal.h. 
27749         
27750 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
27751
27752         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
27753
27754 2003-01-11  Martin Baulig  <martin@ximian.com>
27755
27756         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
27757         this to 20 for the release.
27758
27759 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
27760
27761         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
27762
27763         * loader.c (mono_method_get_marshal_info): bug fix
27764
27765         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
27766         structures with explicit layout
27767
27768 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27769
27770         * profiler.c: made the output more readable (and sorted). 
27771         Added caller information for the allocation profiler.
27772
27773 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
27774
27775         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
27776
27777 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27778
27779         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
27780         to get value types.
27781         
27782 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
27783
27784         * object.c, profiler.h, profiler.c, profiler-private.h:
27785         Added object allocation profiler.
27786
27787 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
27788
27789         * reflection.h, reflection.c: handle global methods.
27790         Compress blob entries.
27791
27792 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
27793
27794         * marshal.c: fix compilation.
27795
27796 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
27797
27798         * loader.c (mono_method_get_marshal_info): impl.
27799
27800         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
27801
27802 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27803
27804         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
27805         for reference types.
27806
27807 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
27808
27809         * loader.c: fixed off by one error in loaded parameter names.
27810
27811 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
27812
27813         * marshal.c (mono_marshal_get_icall_wrapper): like
27814         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
27815         instead of a MonoMethod.
27816
27817 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27818
27819         * decimal.c: fixed bug #36537.
27820
27821 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
27822
27823         * marshal.c: throw a missing method exception if a
27824         P/Invoke method is not found.
27825
27826 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27827
27828         * icall.c: allow a null this for constructors.
27829
27830 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
27831
27832         * icall.c: raise the proper exceptions if the arguments to the
27833         internal Invoke are incorrect.
27834
27835 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
27836
27837         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
27838
27839 2003-01-03  Martin Baulig  <martin@ximian.com>
27840
27841         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27842
27843 2002-12-31  Martin Baulig  <martin@ximian.com>
27844
27845         * debug-mono-symfile.c: Completely rewrote the type section.
27846         Instead of using individual malloc()ed fields, we use one big
27847         continuous memory area and offsets into this area.
27848         See the comments in the source code for details.
27849
27850 2002-12-30  Martin Baulig  <martin@ximian.com>
27851
27852         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
27853
27854 2002-12-30  Martin Baulig  <martin@ximian.com>
27855
27856         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
27857         line number table in this data blob instead of using an external
27858         pointer.
27859
27860 2002-12-28  Martin Baulig  <martin@ximian.com>
27861
27862         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27863
27864 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
27865
27866         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
27867         as a boxed return type.
27868
27869 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
27870
27871         * appdomain.c
27872         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
27873         g_build_filename to properly get separators on the filename created.
27874
27875         * object.h: Small change, introduce MonoMarshalByRefObject to
27876         track the layout of that structure in the C# universe as we make
27877         changes there.
27878
27879 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
27880
27881         * object.c: removed assert to allow static fields on interfaces.
27882         * loader.c: a TypeSpec may be used for any type, not just arrays.
27883
27884 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27885
27886         * class.c, class.h: added mono_class_array_element_size ().
27887         Ignore static methods in interfaces.
27888
27889 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27890
27891         * threads.c: fixed the build under cygwin.
27892
27893 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27894
27895         * reflection.c: handle nullref constants. Allocate keys for
27896         reflection handles with the GC.
27897
27898 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27899
27900         * threads.c, threads.h: added mono_thread_get_abort_signal()
27901         to get a suitable signal for thread abort.
27902
27903 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27904
27905         * metadata.c: fix handling of ExportedType table.
27906
27907 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27908
27909         * icall.c: added WriteWindowsDebugString internal call.
27910
27911 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27912
27913         * reflection.h: added fields to match C# implementation.
27914
27915 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27916
27917         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
27918
27919 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
27920
27921         * gc.h, gc-internal.h: Rename header for GC internal calls to
27922         gc-internal.h from gc.h as to not clash with Boehm GC having its
27923         header installed as <gc.h> in outside include paths.
27924         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
27925         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
27926
27927 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27928
27929         * icall.c: assign minor, build and revision in FillName.
27930
27931 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
27932
27933         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
27934         Added support for running code generated by Reflection.Emit.
27935
27936 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27937
27938         * appdomain.c: check for NULL argument in LoadFrom.
27939
27940 2002-12-10  Dick Porter  <dick@ximian.com>
27941
27942         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
27943
27944 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27945
27946         * appdomain.c: fix buglet when building exe file name.  Handle full
27947         assembly name (needed after latest changes to AssemblyName).
27948         * image.c:
27949         (mono_image_close): free some hashtables.
27950
27951 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
27952
27953         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
27954         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
27955         on some systems (redhat 7.3) 
27956
27957 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
27958
27959         * threads.c: delete the critical section of a sync block,
27960         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
27961
27962 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
27963
27964         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
27965
27966 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27967
27968         * appdomain.[ch]: handle the assembly preload event to try loading the
27969         assemblies using the paths we have in the current domain.
27970
27971         * assembly.[ch]: created an assembly preload hook that is called to try
27972         loading the assembly by other means that the ones provided here.
27973
27974         * domain.c: initialize the domain search path.
27975
27976         From now on, assemblies (TODO: except corlib and System) are loaded
27977         according to these rules when using mono_assembly_load ():
27978
27979                 1. It tries to load the assembly from the ApplicationBase
27980                 of the current domain appending .dll and .exe (TODO: have to
27981                 try loading from name/name.dll and name/name.exe).
27982
27983                 2. It tries the search path specified in PrivateBinPath for the
27984                 current domain (if any).
27985
27986                 3. Previous behavior.
27987
27988 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
27989
27990         * icall.c: implemented GetInterfaceMap() related icall.
27991         * domain.c, loader.h: load MethodInfo in mono_defaults.
27992
27993 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27994
27995         * gc.c: disable the finalizer thread for now, untill all the issues
27996         with it are resolved.
27997
27998 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27999
28000         * string-icalls.c: handle embedded nulls in string ctor when the
28001         length is specified.
28002
28003 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
28004
28005         * class.c: look for explicit interface implementation in parent
28006         classes, too.
28007
28008 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
28009
28010         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
28011
28012 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
28013
28014         * gc.c: protect handles with a critical section.
28015
28016 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28017
28018         * icall.c:
28019         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
28020         parameters. If no assembly specified, try getting the type from all
28021         the assemblies in the current domain, else, load the assembly and get
28022         the type from it.
28023
28024 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28025
28026         * marshal.c: applied patch from Aleksey Demakov that fixes
28027         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
28028
28029 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28030
28031         * icall.c: fixed get_location.
28032
28033 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
28034
28035         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
28036         declarations to make it work with older gcc. 
28037
28038         * loader.c (mono_get_method): set signature->pinvoke for native calls
28039
28040 2002-11-20  Dick Porter  <dick@ximian.com>
28041
28042         * threads.c (mono_thread_init): Set the main thread's handle
28043
28044 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
28045
28046         * gc.c: allow compilation without GC support. Changed to match the
28047         mono coding style.
28048
28049 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28050
28051         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
28052
28053 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
28054
28055         * reflection.c: set a public key token on the core assemblies.
28056
28057 2002-11-18  Dick Porter  <dick@ximian.com>
28058
28059         * threads.c: Split out some thread initialisation so that other
28060         files can set the start callback function.
28061
28062         * gc.c: Run finalisers in a separate thread, to avoid stack
28063         overflow.  Fixes bug 31333.
28064
28065         * appdomain.c: Set up GC finalisation thread.
28066
28067         * reflection.c: 
28068         * object.c: 
28069         * domain.c: Use gc.h macros for GC_malloc
28070         
28071 2002-11-15  Dick Porter  <dick@ximian.com>
28072
28073         * threadpool.c: 
28074         * threads.c:
28075         * appdomain.c: Removed mono_runtime_init_with_attach(),
28076         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
28077         merging the extra parameter with the existing function.  Removed
28078         unneeded code in mono_thread_attach().
28079
28080 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
28081
28082         * image.c (mono_image_loaded_by_guid): a method to get loaded
28083         images by guid. 
28084         (load_metadata_ptrs): we store the guid as string.
28085
28086 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
28087
28088         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
28089
28090         * metadata.c (mono_guid_to_string): imported method form Zoltan
28091         Varga (slightly modified)
28092
28093         * assembly.c (mono_assembly_open): load precompiled code
28094
28095         * loader.h (MonoMethod): we store the method token for use in the
28096         aot compiler. 
28097
28098 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28099
28100         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
28101         the hook function called when an assembly is loaded.
28102         
28103         * domain.c: Modified file.
28104         (mono_domain_assembly_load): removed hash table insertion of assemblies.
28105
28106         Fixes bug #33196.
28107
28108 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
28109
28110         * reflection.c: Map PEFileKind to the value expected by the WinNT
28111         image loader. 
28112
28113 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28114
28115         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
28116         Read until the buffer is filled completely.
28117
28118 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28119
28120         * icall.c: implemented MonoType.InternalGetEvent ().
28121
28122 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28123
28124         * appdomain.c: implemented InitAppDomainSetup. Delayed
28125         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
28126         the entry_assembly.
28127
28128         * assembly.c: base_dir is now an absolute path ending with
28129         G_DIR_SEPARATOR.
28130
28131         * icall.c: modified get_location according to the above changes.
28132
28133         * object.c: init AppDomain.SetupInformation for the default domain after
28134         we have the entry assembly.
28135
28136         * domain.c: when unloading a domain, setup = NULL.
28137
28138 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
28139
28140         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
28141
28142 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
28143
28144         * object.h, object.c: introduced mono_object_get_virtual_method ()
28145         to lookup the method invoked on an object when a callvirt is done on
28146         a method.
28147         * icall.c: make MethodInfo::Invoke() always do a virtual call.
28148
28149 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28150
28151         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
28152         current domain when loaded an assembly and failed to load it.
28153
28154         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
28155
28156 2002-10-31  Dick Porter  <dick@ximian.com>
28157
28158         * icall.c: 
28159         * file-io.h: 
28160         * file-io.c: Return the error status in a parameter, as the
28161         GetLastError() value has long since been blown away if we try and
28162         look it up in a subsequent internal call invocation.  Delete the
28163         GetLastError() internal call, because it's useless.
28164
28165 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
28166
28167         * class.[ch]: added cast_class to fix bug 29517
28168
28169 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
28170
28171         * marshal.c: create valid IL code in the filter clause:
28172         the new JIT is less forgiving:-)
28173
28174 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28175
28176         * icall.c: removed get_property internal call.
28177
28178 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
28179
28180         * appdomain.h domain.c: Added an ID to appdomains.
28181         
28182         * threads.c threads.h icall.c: Implement icall
28183         Thread:GetDomainID(), and remove unused icall 
28184         CurrentThreadDomain_internal.
28185
28186 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28187
28188         * icall.c: Don't recurse through the base types in GetConstructor.
28189         Fixes bug #32063. 
28190
28191 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
28192
28193         * mempool.h, mempool.c: added mono_mempool_empty() and
28194         mono_mempool_stats().
28195
28196 2002-10-23  Dick Porter  <dick@ximian.com>
28197
28198         * file-io.c: 
28199         * file-io.h: 
28200         * icall.c: Added MonoIO.GetFileType internal call
28201
28202 2002-10-17  Dick Porter  <dick@ximian.com>
28203
28204         * appdomain.c (mono_runtime_cleanup): Don't signal the async
28205         delegate semaphore before waiting for all threads to finish,
28206         because new threads can also call async delegates.  Fixes bug
28207         32004.
28208
28209         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
28210         of 3 seconds, in case another async job is queued.  (This part is
28211         needed because the bug fix reintroduced the 3s exit lag.)  This
28212         makes the mono_runtime_shutdown flag superfluous.
28213
28214 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
28215
28216         * reflection.c: include ehader size in method section headers.
28217         Really check for suplicated modules entries.
28218
28219 2002-10-17  Martin Baulig  <martin@gnome.org>
28220
28221         * debug-mono-symfile.c: Added back support for locals.
28222
28223 2002-10-14  Martin Baulig  <martin@gnome.org>
28224
28225         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
28226         MONO_TYPE_VOID.
28227
28228 2002-10-14  Martin Baulig  <martin@gnome.org>
28229
28230         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
28231         mono_class_get() instead of looking in the class cache. 
28232
28233 2002-10-13  Martin Baulig  <martin@gnome.org>
28234
28235         * debug-mono-symfile.c: Set version number to 28, include the
28236         signature in method names.
28237
28238 2002-10-13  Martin Baulig  <martin@gnome.org>
28239
28240         * debug-mono-symfile.h: Set version number to 27.
28241
28242 2002-10-11  Martin Baulig  <martin@gnome.org>
28243
28244         * gc.c: Don't register/unregister NULL pointers as disappearing links.
28245
28246 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28247
28248         * metadata.c, metadata.h: added helper function to allocate signatures.
28249
28250 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28251
28252         * icall.c: added internal call to get the location of machine.config.
28253
28254 2002-10-08  Martin Baulig  <martin@gnome.org>
28255
28256         * debug-mono-symfile.c: Ignore classes with a pending init for the
28257         moment.
28258
28259 2002-10-03  Dick Porter  <dick@ximian.com>
28260
28261         * threads.c: Freebsd pthread_t is a pointer
28262
28263 2002-10-03  Dick Porter  <dick@ximian.com>
28264
28265         * socket-io.c: Implemented GetHostName_internal
28266
28267 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28268
28269         * mono-config.c:
28270         (mono_config_parse_file): don't leak the text.
28271
28272 2002-10-02  Martin Baulig  <martin@gnome.org>
28273
28274         * debug-mono-symfile.c: Added support for methods.
28275
28276 2002-10-01  Martin Baulig  <martin@gnome.org>
28277
28278         * debug-mono-symfile.c: Don't emit methods and line numbers for
28279         the dynamic symbol file, just write the type table.  We can easily
28280         have an external helper program which creates a symbol file for an
28281         IL file.        
28282
28283 2002-10-01  Dick Porter  <dick@ximian.com>
28284
28285         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
28286         Only add the handle to the cleanup array when we're about to
28287         launch the thread.  Bug 31425 deadlocked when the test was run on
28288         mono under w32.
28289
28290 2002-10-01  Martin Baulig  <martin@gnome.org>
28291
28292         * debug-mono-symfile.c: Added support for properties.
28293
28294 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28295
28296         * reflection.c: unaligned store fix from Mark Crichton
28297         <crichton@gimp.org>.
28298
28299 2002-09-27  Martin Baulig  <martin@gnome.org>
28300
28301         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
28302         New interncall.
28303
28304 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
28305
28306         * assembly.h, assembly.c: use a sane API to hook into the assembly
28307         loading process instead of a useless special-purpouse hack
28308         (ngen needs a hook, too, for example).
28309
28310 2002-09-27  Dick Porter  <dick@ximian.com>
28311
28312         * threads.c (mono_thread_init): Call GetCurrentProcess() so
28313         io-layer can set up some process handle info.  Not needed on w32,
28314         but doesn't hurt either.
28315
28316         * process.c: Pass the program name in the second parameter to
28317         CreateProcess, so the path is searched.  Include the working
28318         directory. Implemented process name, process enumeration, and some
28319         process detail internal calls.
28320         
28321         * icall.c: Added internal calls for process lookup, and some
28322         process details
28323
28324 2002-09-26  Martin Baulig  <martin@gnome.org>
28325
28326         * assembly.c (mono_install_open_assembly_hook): New global
28327         function to install a function to be invoked each time a new
28328         assembly is loaded.
28329         (mono_assembly_open): Run this callback function if set.
28330
28331         * debug-mono-symfile.c: Put back line numbers for the dynamic
28332         symbol file and also record the .il file as source file.  This
28333         allows us to install the temporary symbol file as `file.dbg' just
28334         like a compiler-generated one.
28335
28336 2002-09-26  Nick Zigarovich <nick@chemlab.org>
28337
28338         * Corrected typo in gc.c (BOHEM vs BOEHM).
28339
28340 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28341
28342         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
28343         GetProperties. Also avoid calling g_slist_length in GetProperties and
28344         GetMethods.
28345
28346 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28347
28348         * reflection.c: avoid unaligned stores (bug spotted by
28349         Mark Crichton  <crichton@gimp.org>).
28350
28351 2002-09-25  Martin Baulig  <martin@gnome.org>
28352
28353         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
28354         instead of guint64 for addresses and added prologue/epilogue info.
28355
28356 2002-09-25  Martin Baulig  <martin@gnome.org>
28357
28358         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
28359         store line number info.  For the dynamic symbol file, we only need
28360         to provide the JIT generated dynamic line number info for the dynamic
28361         symbol file.
28362
28363 2002-09-25  Martin Baulig  <martin@gnome.org>
28364
28365         * debug-mono-symfile.h: Incremented version number.
28366
28367 2002-09-24  Martin Baulig  <martin@gnome.org>
28368
28369         * class.c (mono_debugger_class_init_func): New global function
28370         pointer variable.
28371         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
28372         call it.
28373
28374         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
28375         function.  This is called via the mono_debugger_class_init_func
28376         hook to add all types to the dynamic type table.
28377         (ves_icall_MonoDebugger_GetType): New interncall to get a class
28378         from its metadata token.
28379
28380         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
28381         New interncall for the debugger.
28382
28383 2002-09-24  Nick Drochak <ndrochak@gol.com>
28384
28385         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
28386         before using it in case it is null.
28387         
28388 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28389
28390         * metadata.c: allow custom modifiers in local var signatures
28391         (bug spotted by Zoltan Varga).
28392
28393 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28394
28395         * class.c: deal with the <Module> class that may have a NULL vtable.
28396         Eliminate warnings.
28397
28398 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28399
28400         * image.c, image.h: more strong name helpers.
28401         * monosn.c: more work: convert pem keys to cryptoapi format.
28402
28403 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28404
28405         * string-icalls.c: speedup IndexOf.
28406
28407 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28408
28409         * icall.c: updates from Zoltan.2.Varga@nokia.com.
28410
28411 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28412
28413         * icall.c: cleanup: use mono_object_domain ().
28414
28415 2002-09-23  Martin Baulig  <martin@gnome.org>
28416
28417         * debug-mono-symfile.c: Improved type support.
28418
28419 2002-09-22  Martin Baulig  <martin@gnome.org>
28420
28421         * debug-mono-symfile.c: Added support for reference types and strings.
28422
28423 2002-09-22  Martin Baulig  <martin@gnome.org>
28424
28425         * debug-mono-symfile.c: Started to work on the type table.
28426
28427 2002-09-21  Martin Baulig  <martin@gnome.org>
28428
28429         * debug-mono-symfile.c: Largely reworked the symbol table format.
28430         The symbol table is now incrementally updated each time a new
28431         method is added.  We're now also using our own magic and version
28432         so that you don't need to recompile all your classes if the
28433         dynamic table changes.
28434         (mono_debug_update_mono_symbol_file): Removed.
28435         (mono_debug_symfile_add_method): New function to add a method.
28436
28437 2002-09-21  Martin Baulig  <martin@gnome.org>
28438
28439         * icall.c
28440         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28441         New interncall.
28442
28443         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28444         New interncall to get a method from its metadata token.
28445
28446 2002-09-21  Martin Baulig  <martin@gnome.org>
28447
28448         * debug-mono-symfile.c: Create type table.
28449
28450 2002-09-20  Martin Baulig  <martin@gnome.org>
28451
28452         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28453
28454 2002-09-20  Martin Baulig  <martin@gnome.org>
28455
28456         * debug-mono-symfile.c: Provide information about params and locals.
28457
28458 2002-09-20  Martin Baulig  <martin@gnome.org>
28459
28460         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28461         New interncall.
28462
28463         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28464         interncall to get a method from its metadata token.
28465
28466 2002-09-20  Martin Baulig  <martin@gnome.org>
28467
28468         * debug-mono-symfile.c: Added a few checks for method->header
28469         being non-NULL.  This should never happen, but for the moment
28470         let's use a g_warning() rather than a g_assert().
28471
28472 2002-09-19  Mark Crichton  <crichton@gimp.org>
28473
28474         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28475         even if support for it isn't present.  Added an #ifdef to fix this.
28476
28477         * socket-io.c: Added checks back for Solaris support.
28478
28479 2002-09-19  Martin Baulig  <martin@gnome.org>
28480
28481         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28482         changes in the symbol file format.
28483
28484 2002-09-18  Martin Baulig  <martin@gnome.org>
28485
28486         * debug-mono-symfile.c: Set version number to 21.
28487
28488 2002-09-18  Dick Porter  <dick@ximian.com>
28489
28490         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28491         on netbsd.  Fixes bug 30051.
28492
28493 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28494
28495         * reflection.c:
28496         (set_version_from_string): little fix.
28497
28498 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28499
28500         * monosn.c, Makefile.am: added strong name utility.
28501         * reflection.h, reflection.c: implemented delayed signing,
28502         locale, version and hash id assembly attributes.
28503
28504 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28505
28506         * loader.c, metadata.c: load param attributes in signatures.
28507
28508 2002-09-16  Martin Baulig  <martin@gnome.org>
28509
28510         * debug-mono-symfile.c: Added string table with all method names.
28511
28512 2002-09-14  Martin Baulig  <martin@gnome.org>
28513
28514         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28515         fast method lookup.
28516
28517 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28518
28519         * reflection.c: record the public key token of referenced assemblies.
28520
28521 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28522
28523         * image.c, image.h: added functions to get the strong name and the
28524         public key of an assembly.
28525         * pedump.c: use them.
28526
28527 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28528
28529         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28530
28531 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28532
28533         * marshal.c (mono_marshal_get_managed_wrapper): Added
28534         MONO_TYPE_BOOLEAN 
28535
28536 2002-09-11  Martin Baulig  <martin@gnome.org>
28537
28538         * gc.c: Call GC_unregister_disappearing_link() on all links when
28539         finalizing them, this is necessary to aviod a crash in boehm's
28540         finalize handler.
28541
28542 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28543
28544         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28545         nick@chemlab.org.
28546
28547 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28548
28549         * icall.c: implemented MonoType::Module.
28550         * reflection.c, reflection.h: mono_module_get_object () from
28551         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28552
28553 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28554
28555         * icall.c: ignore overridden methods in GetMethods ().
28556         Fix for FieldInfo::SetValue().
28557         * object.c: handle float/double in runtime invoke.
28558
28559 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28560
28561         * object.c: allow a constructor to be called again on an object.
28562
28563 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28564
28565         * class.h, class.c: move field layout code to it's own function and
28566         export it. Get an interface id earlier. Move fields in MonoClass
28567         so they are more cache friendly and align the bitfields.
28568         * loader.c: temporary handle get_param_names() for a runtime method.
28569         * reflection.c, reflection.h: more code to handle runtime creation of
28570         types.
28571
28572 2002-09-09  Martin Baulig  <martin@gnome.org>
28573
28574         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28575         signature with the pinvoke field being set for the actual call.
28576
28577 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28578
28579         * icall.c: removed some unused icalls. Start of map of glib charsets
28580         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28581
28582 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28583
28584         * debug-helpers.c: break infinite loop (found and fixed by
28585         Holger Arnold <harnold@gmx.de>).
28586
28587 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28588
28589         * icall.c: target may be null in create_delegate.
28590
28591 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28592
28593         * marshal.c: handle a boolean return type.
28594
28595 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28596
28597         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28598
28599 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28600
28601         * gc.c: fix weakreferences.
28602
28603 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28604
28605         * icall.c: added icall to get default codepage.
28606
28607 2002-09-03  Dick Porter  <dick@ximian.com>
28608
28609         * threads.h: 
28610         * threads.c: Use MonoThread instead of MonoObject where
28611         apropriate.
28612
28613         Store running thread objects in a hash table, so that we have all
28614         the info to hand when waiting for them to finish
28615         (means we don't need OpenThread() any more, so mingw builds should
28616         be fully functional again.)
28617
28618         * verify.c:
28619         * object.h: Added thread ID to MonoThread
28620
28621 2002-09-03  Martin Baulig  <martin@gnome.org>
28622
28623         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28624
28625 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28626
28627         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28628
28629 2002-09-03  Martin Baulig  <martin@gnome.org>
28630
28631         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28632         argument to store the end address of the disassembled instruction.
28633
28634         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28635         here from debug-symfile.h.
28636         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28637         JIT into this struct.
28638         (MonoSymbolFile): Added `char *image_file' field.
28639         (MonoDebugGetMethodFunc): Removed.
28640         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28641         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28642         (mono_debug_find_method): New method.
28643
28644         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28645         create a full symbol file.
28646         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28647         and static symbol files.
28648         (mono_debug_find_method): The symbol file keeps an internal method hash,
28649         call this to get a MonoDebugMethodInfo from a MonoMethod.
28650
28651         * debug-symfile.[ch]: Removed.
28652
28653 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28654
28655         * image.c (do_mono_image_open): Remove linker version check.
28656
28657 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28658
28659         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28660         wrappers for instance methods.
28661         
28662 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28663
28664         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28665
28666 2002-08-28  Dick Porter  <dick@ximian.com>
28667
28668         * Makefile.am: Export HOST_CC for w32 builds
28669
28670 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28671
28672         * file-io.c process.c: MonoString are null terminated, no
28673         need for mono_string_to_utf16() anymore.
28674
28675 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28676
28677         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28678
28679 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28680
28681         * icall.c, reflection.h: speedup System.MonoType.
28682
28683 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28684
28685         * reflection.c: allow null as the value of a string argument in
28686         custom attributes constructors.
28687
28688 2002-08-27  Martin Baulig  <martin@gnome.org>
28689
28690         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28691         `trampoline_address' field.
28692
28693 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28694
28695         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28696         check (fixes bug #29486) 
28697
28698 2002-08-27  Martin Baulig  <martin@gnome.org>
28699
28700         * debug-mono-symfile.c: Changed the file format in a way that allows us
28701         open it read-only and to use a specially malloced area for all the
28702         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28703         debugging IL code and there is no MCS generated symbol file for it.
28704
28705 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28706
28707         * object.c: added a define for a good string and array
28708         creation speedup (not enabled by default because we need to deal with
28709         the synch stuff).
28710
28711 2002-08-26  Martin Baulig  <martin@gnome.org>
28712
28713         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28714         function to create a dynamic symbol file.  This is used by the
28715         debugger to create a symbol file for IL code on-the-fly.
28716
28717 2002-08-26  Martin Baulig  <martin@gnome.org>
28718
28719         * loader.c (mono_lookup_pinvoke_call): Include the error message
28720         from g_module_error() in the error message.
28721
28722 2002-08-24  Martin Baulig  <martin@gnome.org>
28723
28724         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28725         function to update the symbol file.  The symbol file is mmap()ed
28726         writable, but private.  This allows us to install the symbol file
28727         together with the assembly.
28728
28729 2002-08-24  Martin Baulig  <martin@gnome.org>
28730
28731         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
28732         but they can read the new symbol file format which mcs is now creating.
28733
28734         * debug-symfile.c (mono_debug_find_source_location): Moved to
28735         debug-mono-symfile.c; this is now operating on the new symbol file.
28736
28737 2002-08-23  Martin Baulig  <martin@gnome.org>
28738
28739         * debug-helpers.c (mono_method_desc_from_method): New function to get
28740         a MonoMethodDesc from a MonoMethod.
28741
28742 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28743
28744         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
28745         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
28746
28747 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
28748
28749         * string-icalls.[ch]: make helper methods static.
28750
28751 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28752
28753         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
28754         types to it and to SetValueInternal.
28755
28756         * object.c: Moved handle_enum label to its proper place. This was the
28757         f... bug! ;-)
28758
28759         This time i compiled mcs and gtk-sharp and they both work.
28760
28761 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28762
28763         * icall.c: reverted partially my previous patch until 
28764         object.c:set_value handles enums correcly.
28765
28766 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28767
28768         * icall.c:
28769         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
28770         (ves_icall_System_Environment_get_MachineName): removed warning when
28771         compiling under cygwin.
28772
28773 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28774
28775         * object.c: fixed field_get_value() for reference types.
28776
28777 2002-08-22  Dick Porter  <dick@ximian.com>
28778
28779         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
28780         Don't free a buffer while it's still needed.  Patch from Jonathan
28781         Liger <Jonathan.liger@wanadoo.fr>
28782
28783 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
28784
28785         * icall.c (ves_icall_System_Environment_get_Platform): Add new
28786         internal call.
28787
28788 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
28789
28790         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
28791         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
28792
28793         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
28794         we call unmanaged code which throws exceptions.
28795
28796 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28797
28798         * appdomain.h: added per-domain entry_assembly.
28799         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
28800         arguments.
28801         * icall.c: Assembly::GetEntryAssembly icall.
28802         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
28803         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
28804
28805 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28806
28807         * appdomain.h, gc.c: added mono_domain_finalize ().
28808
28809 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28810
28811         * object.c:
28812         (mono_print_unhandled_exception): changed g_warning by g_printerr
28813         because g_log has a 1024 characters limit (yeah, i got a big stack
28814         trace). Don't print exception name, that should be in ToString 
28815         returned string.
28816
28817 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28818
28819         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
28820         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
28821
28822 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28823
28824         * object.c:
28825         (mono_print_unhandled_exception): after previous commit, i realized
28826         that MS calls ToString on the exception. I changed this function to
28827         do that. This way we get stack_trace for free.
28828
28829 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28830
28831         * object.c:
28832         (mono_print_unhandled_exception): invoke Message property instead of
28833         getting 'message' field from Exception. Don't allocate memory for
28834         'trace' and 'message' if not needed.
28835
28836 2002-08-18  Dick Porter  <dick@ximian.com>
28837
28838         * unicode.c: Fix asserts to match Encoder.cs checks
28839
28840 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28841
28842         * marshal.c: fix unaligned store issue and a few wrong
28843         opcode argument types.
28844
28845 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28846
28847         * icall.c: added GetUninitializedObjectInternal internal call.
28848
28849 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
28850
28851         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
28852         to the right domain.
28853
28854 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
28855
28856         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
28857
28858         * class.c (class_compute_field_layout): set blittable to false for Strings
28859
28860         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
28861
28862 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28863
28864         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
28865         first chunk of code to create types at runtime. Code to
28866         handle ReflectedType/DeclaringType. Make reflection handles
28867         domain specific.
28868
28869 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
28870
28871         * class.c: set correct name in arrays.
28872
28873 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
28874
28875         * appdomain.c (mono_domain_transfer_object): make it work with
28876         valuetypes. bug fixes.
28877
28878 2002-08-12  Dick Porter  <dick@ximian.com>
28879
28880         * object.h: Rename some parameters to avoid c++ keywords (Patch
28881         from Joseph Wenninger <kde@jowenn.at>)
28882
28883 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
28884
28885         * icall.c: added icall to implement Assembly.GetFile*.
28886
28887 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28888
28889         * reflection.h, reflection.c: code to embed managed resources.
28890
28891 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28892
28893         * class.c: move all the type size stuff into
28894         class_compute_field_layout().
28895
28896 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28897
28898         * class.c: ensure enums have always the correct instance size.
28899         * unicode.c: remove wrong assert.
28900
28901 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28902
28903         * assembly.c: fix mem corruption issue.
28904         * image.h, image.c: added mono_image_get_resource () to access
28905         managed resources.
28906         * icall.c: implemented Assembly.EntryPoint property and some
28907         Managed Resources related internalcalls.
28908
28909
28910 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28911
28912         * image.c, image.h: impemented mono_image_get_entry_point ().
28913         * appdomain.c: use mono_image_get_entry_point.
28914
28915 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28916
28917         * reflection.c: support the object type argument when loading
28918         custom attributes.
28919
28920 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
28921
28922         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
28923         String as return type.
28924
28925 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
28926
28927         * reflection.c: fix encoding of named args for custom attrs to match
28928         the ms implementation. Read them back when instantiating custom
28929         attributes.
28930
28931 2002-08-02  Radek Doulik  <rodo@ximian.com>
28932
28933         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
28934         by Dietmar as quick fix
28935         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
28936         16 as stack size, used on more places as quick fix before Dietmar
28937         will fix it properly
28938
28939 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28940
28941         * object.h, object.c: added accessors for fields and properties.
28942
28943 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28944
28945         * class.c, class.h: made mono_class_get_field_from_name ()
28946         loop on parent types.
28947         Added mono_class_get_property_from_name ().
28948
28949 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28950
28951         * class.c, class.h: move the code to setup the type vtable in its own
28952         function so that it can be reused also for types created at runtime.
28953         Eliminate the "class" identifier from the header file.
28954         * reflection.c: setup the vtable for enums so that we can create
28955         objects for use in SetConstant ().
28956
28957 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
28958
28959         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
28960         instead of the delegate itself as this pointer (bug #28383)
28961
28962 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
28963
28964         * marshal.c (mono_marshal_get_managed_wrapper): added return type
28965         conversions.
28966
28967 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28968
28969         * loader.c: don't set the pinvoke bit on icalls.
28970
28971 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
28972
28973         * debug-helpers.c (mono_method_full_name): only print a number to
28974         indicate wrapper type (so that the output is more readable in traces).
28975
28976 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
28977
28978         * class.c (mono_class_init): include method override patch from Paolo
28979
28980 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
28981
28982         * icall.c: fixed GetTypeCode().
28983
28984 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
28985
28986         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
28987         use real delegate invoke function to make it work with multicast
28988         delegates (fix bug# 28291).
28989
28990 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
28991
28992         * object.c: load constant strings.
28993
28994 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28995
28996         * reflection.c: no magic numbers.
28997         * tabledefs.h: security action enum.
28998
28999 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29000
29001         * assembly.c: fix possible memory corruption.
29002
29003 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29004
29005         * reflection.h, reflection.c: added support for linking resources.
29006         * verify.c: check we have an updated corlib.
29007
29008 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
29009
29010         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
29011         string arrays.
29012         (mono_marshal_string_array): null terminate unmanaged string arrays.
29013         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
29014
29015 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29016
29017         * icall.c: Type.GetType () can now return also types from the
29018         calling assembly.
29019
29020 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29021
29022         * loader.h, loader.c: stack walking support.
29023         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
29024         GetCallingAssembly.
29025
29026 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
29027
29028         * marshal.c: added optimisations for blittable types 
29029
29030         * class.c (mono_array_class_get): do not set blittable attribute on arrays
29031         (mono_class_setup_mono_type): set blittable attribute for single
29032         and double.
29033
29034         * marshal.c (mono_string_utf8_to_builder): impl.
29035         (mono_string_builder_to_utf8): impl.
29036         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
29037
29038 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
29039
29040         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
29041         (mono_marshal_get_managed_wrapper): impl. byref types
29042
29043 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29044
29045         * icall.c:
29046         (search_method): don't display debug message. 
29047
29048 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29049
29050         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
29051
29052 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29053
29054         * appdomain.c: set the missing filename when throwing exception.
29055
29056 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29057
29058         * metadata.c (mono_type_size): code cleanup
29059         (mono_type_stack_size): removed some test code
29060
29061 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
29062
29063         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
29064         mono_get_exception_file_not_found now.
29065
29066         * exception.c (mono_exception_from_name_two_strings): New version
29067         that will call a constructor with two string arguments. 
29068         (mono_get_exception_file_not_found): New helper routine, used to
29069         report file-not-found errors.
29070
29071 2002-07-20  Dick Porter  <dick@ximian.com>
29072
29073         * process.h:
29074         * process.c: Pass file handles to CreateProcess
29075         
29076         * icall.c:
29077         * file-io.h:
29078         * file-io.c: Implemented CreatePipe
29079
29080 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29081
29082         * metadata.c (mono_get_param_info): set alignment for value types
29083
29084 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29085
29086         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
29087         Constify mono_domain_assembly_open().
29088         * loader.c: handle null namespace in icalls.
29089
29090 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29091
29092         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
29093         (emit_str_to_ptr_conv): marshal object as structs
29094
29095         * metadata.c (mono_type_to_unmanaged): marshal object as structs
29096
29097         * marshal.c (mono_marshal_get_runtime_invoke): support value types
29098
29099 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
29100
29101         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
29102         (mono_marshal_get_native_wrapper): we an now return value types
29103
29104 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29105
29106         * verify.c: more checks implemented.
29107
29108 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
29109
29110         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
29111         (fix bug #27695)
29112         (mono_marshal_get_native_wrapper): allow byref arguments
29113         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
29114         impl. PtrToStringXXX methods
29115         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
29116         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
29117         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
29118         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
29119         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
29120
29121 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29122
29123         * reflection.c: fix buglet in parsing an assembly name.
29124
29125 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29126
29127         * marshal.c (emit_ptr_to_str_conv): first impl.
29128
29129 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29130
29131         * object.c, class.h: cache the vtable in the class as suggested by
29132         vargaz@freemail.hu (Zoltan Varga).
29133
29134 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29135
29136         * class.h, loader.c: added mono_field_from_token().
29137         * verify.c: first cut of type checking code.
29138
29139 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29140
29141         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
29142
29143 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
29144
29145         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
29146         (fix bug #27782)
29147         (mono_marshal_get_remoting_invoke): impl.
29148         (mono_delegate_begin_invoke): impl.
29149         (mono_mb_emit_save_args): impl.
29150         (mono_delegate_end_invoke): impl.
29151         (mono_marshal_get_delegate_begin_invoke):
29152         (mono_marshal_get_delegate_end_invoke):
29153         (mono_marshal_get_delegate_invoke): generate a special name for
29154         those methods (including the signature) and associate them whith
29155         the delegate class. 
29156
29157 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
29158
29159         * reflection.[ch]: 
29160         (mono_reflection_type_from_name): now it has a MonoImage parameter
29161         which is used as the default image to search the type in. If the image
29162         is NULL or getting the type from it fails, it defaults to corlib.
29163
29164         * icall.c: changed 1 call to mono_reflection_type_from_name to match
29165         new parameter.
29166
29167 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29168
29169         * reflection.c: update the parameter table index.
29170
29171 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29172
29173         * domain.c: don't include the mark byte in the string hash.
29174
29175 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29176
29177         * icall.cs: icall for Type.GetTypeCode ().
29178         * verify: a couple of fixes and disabled local initialization checks.
29179
29180 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
29181
29182         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
29183
29184         * debug-helpers.c (mono_method_full_name): print the type of the
29185         runtime wrapper
29186
29187         * metadata.c (mono_signature_hash): a hash function for signatures
29188         (mono_signature_hash): better hash algorithm
29189
29190         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
29191
29192         * debug-helpers.c (mono_method_full_name): this can now generate
29193         method names with signatures
29194
29195         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
29196         method dont have this pointers.
29197
29198 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29199
29200         * reflection.c: fixup typebuilder tokens.
29201         * image.c: fix buglet.
29202         * marshal.h: remove whitespace.
29203         * metadata.h, metadata.c: reinstate code that was removed.
29204         * verify.c: handle catch directives and fix another couple of bugs.
29205
29206 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
29207
29208         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
29209         (mono_marshal_get_native_wrapper): make it comp. with the old code
29210         (mono_marshal_get_native_wrapper): support boolean
29211         (mono_marshal_get_managed_wrapper): support more types
29212
29213 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
29214
29215         * class.c (class_compute_field_layout): compute class->blittable attribute.
29216
29217 2002-07-09  Dick Porter  <dick@ximian.com>
29218
29219         * threads.c: Make the thread cleaning up cope with threads that
29220         call ExitThread()
29221
29222 2002-07-08  Radek Doulik  <rodo@ximian.com>
29223
29224         * reflection.c (method_encode_code): use non-translated values to
29225         compute finally_start, this fixes exception handling on ppc, yay!
29226
29227         * decimal.h (struct signscale): fix endianess
29228
29229 2002-07-07  Radek Doulik  <rodo@ximian.com>
29230
29231         * reflection.c: swap box_val and not val
29232
29233 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29234
29235         * reflection.c, reflection.h: handle full assembly info in type name.
29236         Handle Type arguments when loading custom attributes.
29237         * icall.c: updated to use new mono_reflection_type_from_name () method.
29238
29239 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29240
29241         * loader.c:
29242         (method_from_memberref): also print assembly name when method not found.
29243
29244 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29245
29246         * icall.c:
29247         (ves_icall_TypeGetProperties): fixed bug #27473. 
29248
29249 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29250
29251         * reflection.c: display image name and token when cannot find the
29252         .ctor for an attribute.
29253
29254 2002-07-05  Martin Baulig  <martin@gnome.org>
29255
29256         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29257
29258 2002-07-04  Dick Porter  <dick@ximian.com>
29259
29260         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
29261         compile on mingw.  This will cause mingw builds to not wait for
29262         subthreads to terminate after the main thread does.  I've lodged a
29263         bug with the mingw developers for them to wrap OpenThread().
29264
29265 2002-07-03  Dick Porter  <dick@ximian.com>
29266
29267         * threads.c: Store thread IDs instead of handles, because
29268         GetCurrentThread() returns a pseudohandle and therefore stores
29269         useless values.  mono_thread_cleanup() continues checking the
29270         array of threads until it is empty, to cope with subthreads
29271         spawning new threads after the main thread has finished.
29272
29273         * profiler.h:
29274         * profiler.c:
29275         * profiler-private.h: Pass the thread ID to thread profiler
29276         functions, instead of a handle
29277
29278 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29279
29280         * verify.c: fixes to make it more usable.
29281         * pedump.c: added --verify code to verify IL code in an assembly.
29282
29283 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29284
29285         * reflection.c: turn errors into warnings to allow compiling corlib.
29286
29287 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29288
29289         * reflection.c: add special cases to compile corlib.
29290
29291 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29292
29293         * reflection.c: handle properties with only a set method.
29294
29295 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29296
29297         * opcodes.h: add enum with opcodes in opval order.
29298
29299 2002-07-01  Dick Porter  <dick@ximian.com>
29300         
29301         * object.h:
29302         * object.c (mono_runtime_run_main): Removed unneeded argument
29303
29304 2002-06-28  Martin Baulig  <martin@gnome.org>
29305
29306         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29307
29308 2002-06-27  Dick Porter  <dick@ximian.com>
29309
29310         * threads.c: Store the handle in both the parent thread and in the
29311         subthread, to minimise the time between starting a new thread and
29312         storing its ID.
29313
29314 2002-06-26  Dick Porter  <dick@ximian.com>
29315
29316         * appdomain.c (mono_runtime_cleanup): Close the socket library
29317         after all the threads have finished, not before
29318
29319 2002-06-26  Martin Baulig  <martin@gnome.org>
29320
29321         * debug-symfile.c (mono_debug_find_source_location): Added
29322         `guint32 *line_number' argument.  If it's not NULL, store the line number
29323         there and return the file name without the line number.
29324
29325 2002-06-25  Dick Porter  <dick@ximian.com>
29326
29327         * icall.c:
29328         * process.h:
29329         * process.c: Process forking and other support functions
29330
29331 2002-06-25  Dick Porter  <dick@ximian.com>
29332
29333         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
29334         things dont happen when the image is closed.
29335         (mono_image_lookup_resource): Walk the resource section looking
29336         for a particular entry
29337
29338         * cil-coff.h: PE resource section decoding
29339
29340 2002-06-25  Dick Porter  <dick@ximian.com>
29341         
29342         * assembly.h:
29343         * assembly.c: 
29344         (mono_assembly_foreach): Accessor functions to walk the list of
29345         loaded assemblies
29346         (mono_assembly_set_main):
29347         (mono_assembly_get_main): Process methods need to know which
29348         assembly is the "main" one
29349
29350         * object.c (mono_runtime_run_main): Record the main assembly
29351
29352         * debug-helpers.c: Fix typo
29353
29354 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
29355
29356         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
29357         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
29358
29359 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29360
29361         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
29362
29363 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
29364
29365         * image.c (do_mono_image_open): Initialize reference count,
29366         otherwise we leak the MonoImage.
29367
29368 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29369
29370         * reflection.c: small tweak to handle self-hosting.
29371
29372 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29373
29374         * reflection.c: fix type name parse code.
29375
29376 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29377
29378         * reflection.c: break out of the loop.
29379         * image.c: special case corlib.
29380
29381 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29382
29383         * reflection.c: add all the custom attrs at the end to ensure the
29384         ctors have been properly initialized when the attributes are defined
29385         in the current assembly.
29386
29387 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29388
29389         * reflection.c: handle correctly multiple-nested types.
29390
29391 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
29392
29393         * row-indexes.h: fix typos.
29394         * reflection.c: adjust for typos and fix method_def_or_ref
29395         encoding in MethodImpl table.
29396
29397 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29398
29399         * reflection.c: fix entry point patching (thanks Serge!).
29400
29401 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
29402
29403         * verify.c: add check for System.Exception
29404
29405 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29406
29407         * image.c, class.c: minifix for code just c&p'ed.
29408         * reflection.c: warning fix.
29409         * object.h, loader.h, domain.c: load also StringBuilder.
29410
29411 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29412
29413         * marshal.h, marshal.c: some support code to handle complex marshaling.
29414
29415 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29416
29417         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29418         Better signatures with vtable error dump.
29419
29420 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29421
29422         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29423
29424 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29425
29426         * icall.c (ves_icall_Type_GetField): impl.
29427
29428 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29429
29430         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29431         to retrieve a marshal description blob for a field or param.
29432
29433 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29434
29435         * reflection.h, reflection.c: change order of nested type emission
29436         to avoid table corruption. The NestedTypes table is sorted.
29437         * icall.c: change order of GetConstructor results to workaround mcs bug.
29438
29439 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29440
29441         * reflection.h, reflection.c: handle field and param marshal
29442         information.
29443
29444 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29445
29446         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29447
29448 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29449
29450         * reflection.c: fix call convention.
29451
29452 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29453
29454         * reflection.h, reflection.c: mono_image_get_memberref_token()
29455         takes a type instead of a class, now. Added
29456         mono_image_get_array_token() to create tokens for the special
29457         multi-dim array methods.
29458
29459 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29460
29461         * assembly.c: handle modules (no assembly table). Split
29462         loading references in its own function.
29463         * class.c: handle moduleref resolution scope.
29464         * image.c, image.h: cache module name in image.
29465
29466 2002-06-07  Martin Baulig  <martin@gnome.org>
29467
29468         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29469         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29470
29471 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29472
29473         * icall.c: more signature fixes that used uint instead of int.
29474
29475 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29476
29477         * reflection.c: fixed signature of field refs.
29478
29479 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29480
29481         * class.c, reflection.c: handle typerefs of nested types
29482         (both on read and when writing files).
29483
29484 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29485
29486         * icall.c: fix method signatures that tried to workaround the previous
29487         typo, d'oh!
29488
29489 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29490
29491         * debug-helpers.c: fix typo.
29492
29493 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29494
29495         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29496         rewrote the PE/COFF writing code (our programs are understood by the
29497         ms runtime, now).
29498
29499 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29500
29501         * gc.c, gc.h, icall.c: weakreference support.
29502
29503 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29504
29505         * Makefile.am, mono-config.c: use $(sysconfdir).
29506
29507 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29508
29509         * icall.c: changed default precision of Double.ToString() to 15.
29510         Fixed memory leak. Unified with Single.ToString.
29511
29512 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29513
29514         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29515
29516 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29517
29518         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29519         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29520         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29521         and myself.
29522
29523 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29524
29525         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29526
29527 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29528
29529         * reflection.c, socket-io.c: more compilation fixes.
29530
29531 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29532
29533         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29534         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29535         unicode.c: warning and compiler compatibility fixes.
29536
29537 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29538
29539         * class.h, metadata.c: fixed warnings/compilation errors.
29540
29541 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29542
29543         * Makefile.am, mono-config.c, mono-config.h: configuration file
29544         support routines.
29545         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29546         config file. Export methods to insert and lookup mappings.
29547
29548 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29549
29550         * reflection.c: handle types and boxed objects in custom attr
29551         constructors.
29552
29553 2002-05-30  Martin Baulig  <martin@gnome.org>
29554
29555         * debug-symfile.c
29556         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29557
29558 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29559
29560         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29561         to lookup the implmap row for a P/Invoke method.
29562         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29563         P/Invoke method from the runtime on an as needed basis.
29564
29565 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29566
29567         * metadata.c (mono_metadata_parse_signature): impl.
29568
29569 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29570
29571         * class.c: handle .pack directive.
29572
29573 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29574
29575         * object.c: initialize static fields with RVA data.
29576
29577 2002-05-25  Martin Baulig  <martin@gnome.org>
29578
29579         * debug-symfile.c
29580         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29581
29582 2002-05-24  Martin Baulig  <martin@gnome.org>
29583
29584         * debug-symfile.c
29585         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29586         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29587         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29588
29589 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29590
29591         * object.c: special case string ctros in invoke.
29592         * gc.c: silly whitespace changes.
29593
29594 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29595
29596         * threadpool.[ch]: impl. a threadpool that can
29597         be used by mint and mono.
29598
29599 2002-05-22  Martin Baulig  <martin@gnome.org>
29600
29601         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29602         The first argument is now a `MonoReflectionModuleBuilder *', the return
29603         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29604         `methods' field to get the method builder.  The `token' argument is the
29605         unfixed token.
29606
29607         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29608         invalid characters instead of g_assert_not_reached()ing.  This seems
29609         to be the behaviour of mscorlib.
29610
29611 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29612
29613         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29614         Hestilow to fix bug #25104
29615
29616 2002-05-21  Martin Baulig  <martin@gnome.org>
29617
29618         * debug-symfile.c (mono_debug_find_source_location): New function.
29619         Looks up an IL offset in the line number table and returns the source
29620         location as a string.
29621
29622 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29623
29624         * icall.c:
29625         (mono_double_ToStringImpl): changed %f by %g until we have something
29626         better.
29627
29628 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29629
29630         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29631         parameters first in C#.
29632
29633 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29634
29635         * icall.c, reflection.h: added icall to get info about an event.
29636
29637 2002-05-20  Radek Doulik  <rodo@ximian.com>
29638
29639         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29640         endian
29641         (mono_value_box): don't use memcpy for small sizes on
29642         architectures with unaligned access
29643
29644 2002-05-20  Martin Baulig  <martin@gnome.org>
29645
29646         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29647         if `tb->parent == NULL'.
29648         (mono_reflection_create_internal_class): New function.  This is
29649         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29650         for enum types.
29651
29652         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29653         New interncall.
29654
29655 2002-05-19  Martin Baulig  <martin@gnome.org>
29656
29657         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29658         argument to get the length, don't default to the array length.
29659
29660 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29661
29662         * assembly.c (mono_assembly_setrootdir): New function used to
29663         override the MONO_ASSEMBLIES directory.
29664
29665 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29666
29667         * icall.c: ValueType_GetHashCode() initialize local var.
29668
29669 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29670
29671         * reflection.c: sort custom attributes table.
29672
29673 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29674
29675         * reflection.c: support named args in custom attributes (write support).
29676
29677 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29678
29679         * reflection.c: fix finally position calculation.
29680
29681 2002-05-15  Radek Doulik  <rodo@ximian.com>
29682
29683         * reflection.c: fixed endianess at many places
29684
29685         * icall.c (ves_icall_InitializeArray): comment out debug msg
29686
29687 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29688
29689         * object.c (mono_unhandled_exception): new function to handle
29690         unhandled exceptions.
29691         (mono_unhandled_exception): call the UnhandledException event.
29692         (mono_runtime_delegate_invoke): impl.
29693
29694 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29695
29696         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29697         returns the RVA, not the direct pointer to the data. Handle the case
29698         when the class size is fixed.
29699
29700 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29701
29702         * reflection.c: fix some endianess issues.
29703
29704 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29705
29706         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29707
29708         * threads.c (mono_thread_init): added a callback which is invoked
29709         at thread start.
29710
29711 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29712         
29713         * icall.c: make GetHashCode return non-negative values.
29714
29715 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29716
29717         * object.c, icall.c, gc.c: revert to address-based hashcode.
29718
29719 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29720
29721         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29722
29723 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29724
29725         * icall.c, class.c: special case <Module>.
29726
29727 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29728
29729         * icall.c: fix bug in GetNow().
29730
29731 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
29732
29733         * object.c (mono_runtime_class_init): make sure that we call all
29734         static class constructors.
29735
29736 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29737
29738         * reflection.c: sort methodsemantics table.
29739
29740 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29741
29742         * reflection.h, reflection.c: honour init locals setting.
29743
29744 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
29745
29746         * icall.c: copied Double ToStringImpl for Single ToStringImpl
29747
29748 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29749
29750         * reflection.c: support ContructorBuilders in attribute blob creation.
29751
29752 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29753
29754         * reflection.c: some changes to build a binary that can be run
29755         directly in windows.
29756
29757 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29758
29759         * loader.c: print a big message when an icall can't be found.
29760
29761 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29762
29763         * string-icalls.c: fix bug 24248.
29764
29765 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29766
29767         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
29768         icall.c, reflection.h: separate assembly loading by pathname and by
29769         assembly name. Use the MONO_PATH env var to search for assemblies.
29770
29771 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29772
29773         * assembly.c, image.h: add some support for assemblies
29774         with multiple modules.
29775         * class.c, class.h: export mono_class_from_typeref().
29776         * loader.c: remove duplicated code and use mono_class_from_typeref(),
29777         instead.
29778
29779 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29780
29781         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
29782         documentation says (the ECMA one is correct).
29783
29784 2002-05-02  Dick Porter  <dick@ximian.com>
29785
29786         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
29787         Don't name the synchronisation mutex.
29788
29789 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
29790
29791         * rand.c
29792         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
29793         Make the prototypes match.
29794         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
29795         Same.
29796
29797         * icall.c
29798         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
29799         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
29800         all systems have tm.tm_zone, so use strftime() with %Z to print
29801         the timezone abreviation into a temp string.
29802
29803         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
29804         rather than mono_array_addr() on a MonoString on Big Endian
29805         machines.
29806
29807 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
29808
29809         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
29810         fix bug 24041
29811
29812 2002-04-30  Dick Porter  <dick@ximian.com>
29813
29814         * socket-io.c: Cope with SOCKET being an integer rather than a
29815         pointer now.
29816
29817         * threads.c: Added Thread_free_internal, to deal with thread
29818         handle cleanup.  Moved calls to handle_store() and handle_remove()
29819         to start_wrapper(), so each can only be called once.  Allocate
29820         synchronisation blocks with GC_malloc(), and use GC finalisation
29821         to close the handles.
29822
29823         * icall.c: added System.Threading.Thread::Thread_free_internal
29824
29825 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29826
29827         * icall.c: support Environment.Exit, CommandLineArgs().
29828
29829 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29830
29831         * object.c, object.h: added mono_runtime_run_main () and
29832         mono_runtime_get_main_args () for use in System.Environment.
29833
29834 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29835
29836         * gc.c: fix thinko, enable actual finalization since the jit is now
29837         fixed.
29838
29839 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29840
29841         * gc.c, object.c: take into account that an object may be offset wrt the address
29842         returned by GC_malloc().
29843
29844 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29845
29846         * image.c: handle files without entries in the assembly table (modules).
29847
29848 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
29849
29850         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
29851         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
29852         allowed to be null when it's System.Object class setup.
29853
29854 2002-04-27  Martin Baulig  <martin@gnome.org>
29855
29856         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
29857         if `tb->parent == NULL' rather than crashing.
29858
29859 2002-04-28  Nick Drochak  <ndrochak@gol.com>
29860
29861         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
29862         calling acos() where asin() should have been called.
29863
29864 2002-04-26  Martin Baulig  <martin@gnome.org>
29865
29866         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
29867         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
29868         there's a subdirectory called `System', but we don't want to read that
29869         subdirectory as an assembly.
29870
29871 2002-04-25  Martin Baulig  <martin@gnome.org>
29872
29873         * debug-symfile.c: Reflect latest MonoString changes.
29874
29875 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29876
29877         * rand.c, rand.h: instance method icalls need to have an explicit
29878         this pointer as first argument in the C implementation.
29879
29880 2002-04-25  Nick Drochak <ndrochak@gol.com>
29881
29882         * icall.c: Fix typo in map for GetNonZeroBytes
29883
29884 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29885
29886         * string-icalls.c : String does now passes unit tests without any 
29887         errors, the following changes has been made:
29888         
29889         Implemented replace methods.
29890         Renaming of methods to (try) follow the standard.
29891         Fixed compare ordinal
29892         Made all memory allocated directly to function instead of via icall function.
29893         Small performance fix in is_in_array function
29894                         
29895  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
29896
29897         c (mono_string_Internal_ctor_charp_int_int):
29898         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
29899         sindex < 0, throw ArgumentOutOfRangeException instead of
29900         ArgumentNullException.
29901
29902         Added new check for length == 0, however
29903         I need to make it return String.Empty from the C code.
29904         
29905         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
29906         that calculate the length for us here.
29907         
29908         (mono_string_Internal_ctor_sbytep_int_int): Replaced
29909         mono_string_new_utf16 with mono_string_new, since value is utf8.
29910
29911 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29912
29913         * object.c: register the object for finalization if needed.
29914         Allocate one more char in the string for the terminating 0 char.
29915
29916 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29917
29918         * class.c, class.h, image.c: check if a type implemenst a destructor.
29919         Use the proper key for array class lookups.
29920         * icall.c: register the icalls in the System.GC class.
29921         * gc.c, gc.h: GC-related functions and icalls.
29922
29923 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29924
29925         * icall.c:
29926         * socket-io.c:
29927         * unicode.c: free some strings gotten from mono_string_to_utf8 and
29928         changed a couple of free () by g_free ().
29929
29930         * decimal.c: one-liner in the comments for decimal2string ().
29931
29932 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29933
29934         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
29935
29936 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29937
29938         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
29939         * object.c (mono_runtime_invoke_array) : handle null in params
29940
29941 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29942
29943         * string-icalls.c: fixed bug in split (one off bug)
29944
29945 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29946
29947         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
29948         * icalls.c: added String::Equals as internal method
29949
29950 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29951
29952         * threads.c: fixed bug in the double interlocked functions
29953
29954 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
29955
29956         * threads.c: implemented all of the new interlocked icalls.
29957         * string-icalls.c: fix a bug in insert.
29958         * icalls.c: added the icalls for interlocked, removed old string functions.
29959         
29960 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29961
29962         * loader.c: fix off-by-one error when reading argument names.
29963
29964 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29965
29966         * profiler.c: win32 counter implementation (untested).
29967         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
29968         (the latter needs testing and more complete impl. from win32 folks).
29969
29970 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
29971
29972         * object.c: mono_array_new_full workaround mono_array_class_get
29973         problem.
29974
29975 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29976
29977         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
29978         * object.h (mono_string_chars): Changed casting type.
29979
29980 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29981
29982         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
29983                            method signatures to use gunichar2 instead of gint16.
29984
29985 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
29986
29987         * object.h, object.c: domain-specific versions of mono_object_new and
29988         mono_array_new.
29989
29990 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
29991
29992         * object.c: changed String layout
29993
29994         * string-icalls.c (mono_string_Internal_ctor_chara): added
29995         internal string constructors.
29996
29997 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
29998
29999         * threads.c: pass 'this' to the thread start routine.
30000
30001 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30002
30003         * string-icalls.c: fix IndexOf and LastIndexOf. Now
30004         InternalCompareStr don't call twice mono_string_cmp_char for the last
30005         character. Improved performance in mono_string_cmp_char.
30006
30007 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
30008
30009         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
30010         code into its own library: libmonoruntime.
30011
30012 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
30013
30014         * object.h, object.c: changed array format so that szarrays do not
30015         require a bounds structure.
30016         * icall.c, appdomain.c: support for new szarray format.
30017
30018 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
30019
30020         * metadata.c: compare also the retuns type when comparing signatures:
30021         we didn't do this as an optimization since really overloaded methods
30022         must differ also in the arguments, but this doesn't work with
30023         low-level IL code (or when using explicit conversion operators: see
30024         bug#23498 for an example).
30025
30026 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
30027
30028         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
30029
30030 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
30031
30032         * icall.c: make MonoType::GetElementType its own icall.
30033
30034 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30035
30036         * icall.c: remove MonoMethod_get_Name().
30037         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
30038         object.
30039
30040 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30041
30042         * string-icalls.c: optimized a few methods.
30043
30044 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30045
30046         * icall.c: added all new string internal calls
30047         * string-icalls.c: added, new string internal call implementation.
30048         * object.c: added mono_string_new_size for allocating a string a size
30049
30050 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
30051
30052         * object.c (mono_object_isinst): use the same code as in the
30053         optimized x86 version.
30054
30055 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30056
30057         * profiler.c: TSC-based timer code (faster and more accurate).
30058         Not hooked up in configure, yet (set USE_X86TSC to 1).
30059
30060 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
30061
30062         * profiler.c, profiler.h: track time spent compiling methods.
30063         * threads.c: track thread creation/destruction.
30064
30065 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
30066
30067         * profiler.c, profiler.h, profiler-private.h: profiling interface
30068         and sample implementation. Moved here so that it can be used also by
30069         the jit.
30070
30071 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
30072
30073         * reflection.c, reflection.h: keep types and other handles separate in
30074         the hash tables for referred tokens. Add guid for modules.
30075
30076 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
30077
30078         * assembly.c: fix bugs found with valgrind.
30079         * metadata.h, metadata.c: added mono_metadata_guid_heap().
30080
30081 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
30082
30083         * threads: added icall support for getting current domain for
30084                    the thread.
30085  
30086 2002-04-13  Martin Baulig  <martin@gnome.org>
30087
30088         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
30089         (MonoDebugVarInfo): Added `index' field for register based addresses.
30090         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
30091         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
30092         `MonoDebugVarInfo *params' and `guint32 this_offset' with
30093         `MonoDebugVarInfo *this_var'.
30094
30095         * debug-symfile.c (relocate_variable): New static function to write
30096         a location description for a local variable or method parameter.
30097
30098 2002-04-12  Martin Baulig  <martin@gnome.org>
30099
30100         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
30101         stack offset and begin/end scope address of a local variable.
30102         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
30103         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
30104         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
30105
30106         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
30107         Added new relocation types for start/end scope of a local variable.
30108
30109 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30110
30111         * object.h: add mono_object_domain() macro.
30112         * reflection.c: handle typespecs.
30113         * icall.c: MonoMethod::get_Name() implementation.
30114
30115 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30116
30117         * icall.c: String::GetHashCode() icall implementation.
30118
30119 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30120
30121         * icall.c: String::IndexOfAny icall.
30122         * object.c, object.h: make array->max_length more useful.
30123         Intrduced mono_object_class() and mono_string_length() macros.
30124
30125 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30126
30127         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
30128         instead of g_unichar_isdigit.
30129
30130 2002-04-11  Nick Drochak  <ndrochak@gol.com>
30131
30132         * icall.c: Implement a simple Double.ToString().
30133
30134 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30135
30136         * appdomain.h: only io-layer.h is supposed to be included.
30137         * icall.c: explicitly import environ. Fix warning.
30138
30139 2002-04-10  Nick Drochak  <ndrochak@gol.com>
30140
30141         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
30142                 return true even if it's not Daylight Savings time.
30143                 Only return false for the case where the function isn't
30144                 implemented for a plaform (read Windows).
30145
30146 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30147
30148         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
30149         data with a mutex.
30150
30151 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
30152
30153         * mempool.c (mono_mempool_alloc): only use g_malloc when
30154         absolutely necessary.
30155
30156 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30157
30158         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
30159
30160         * class.c (mono_class_vtable): use domain mempool to allocate vtable
30161         (mono_class_proxy_vtable): use domain mempool
30162
30163 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
30164
30165         * appdomain.h, appdomain.c: split initialization that requires the
30166         execution engine support into mono_runtime_init().
30167
30168 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30169
30170         * class.c (mono_class_init): don't include vtable inside MonoClass
30171         to save some memory, gather some statistics.
30172         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
30173
30174 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30175
30176         * icall.c: internalcall implementation for ValueType.Equals().
30177
30178 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
30179
30180         * object.c (mono_message_init): moved 
30181         (mono_runtime_exec_main): new arch. independent impl.
30182         (mono_runtime_invoke_array): new method - like
30183         mono_runtime_invoke, but you can pass an array of objects.
30184         (mono_remoting_invoke): new arch. independent impl.
30185         (mono_message_invoke): new arch. independent impl.
30186         (mono_runtime_class_init): new arch. independent impl.
30187         (mono_runtime_object_init): new arch. independent impl.
30188
30189 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30190
30191         * metadata.c, object.c, reflection.c: documented the exported
30192         functions.
30193
30194 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
30195
30196         * icall.c: simpler code to pass the assembly builder data to corlib.
30197         Implement GetNestedTypes() internalcall.
30198
30199 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30200
30201         * class.c: warn if a type can't be loaded.
30202
30203 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
30204
30205         * image.h: typedef MonoImageOpenStatus
30206         * types.h: removed unused file
30207         
30208 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
30209
30210         * icall.c: Enum_ToObject accepts enum value arguments.
30211
30212 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30213
30214         * class.c: move initialization of properties, events and nested
30215         classes, so that they happen for interfaces, too.
30216
30217 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30218
30219         * icall.c: cleanup some ugly casts in Array_SetValue*.
30220
30221 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30222
30223         * icall.c: the values array fro enums is of the correct type, now.
30224         Implement (correctly) getFullName instead of assQualifiedName for
30225         MonoType.
30226         * reflection.h, reflection.c: added mono_type_get_name ().
30227
30228 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30229
30230         * assembly.c, image.h: for each MonoImage, record from wich assembly
30231         it was loaded.
30232         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
30233         Make Type.Assembly work.
30234
30235 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
30236
30237         * debug-symfile.h: use char* instead of gpointer to avoid
30238         unnecessary casts.
30239
30240         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
30241
30242         * icall.c (ves_icall_InternalExecute): impl. FielSetter
30243         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
30244
30245 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
30246
30247         * icall.c (mono_message_init): impl. (code cleanup)
30248         (ves_icall_InternalExecute): impl. FieldGetter
30249
30250         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
30251         defined we call all (non-static)methods through the vtable. 
30252
30253 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
30254
30255         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
30256         finalizer even though the memory is still referenced (and the chunk of
30257         memory is not freed).
30258
30259 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30260
30261         * assembly.c: fix brokeness.
30262
30263 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
30264
30265         * class.c: kill some warnings. Check explicit interface method
30266         implementation also without considering the namespace.
30267         Load also literal strings in static class data.
30268
30269 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
30270
30271         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
30272         (default_assembly_name_resolver): Make the resolver take the
30273         "base" directory where the assembly was originally defined, so we
30274         can load DLLs that are in the same directory as the assembly that
30275         is being referenced.
30276
30277 2002-03-28  Dick Porter  <dick@ximian.com>
30278
30279         * file-io.h: 
30280         * file-io.c:
30281         * socket-io.c: 
30282         * unicode.h: 
30283         * unicode.c: Warning cleanups
30284
30285 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
30286
30287         * object.h, reflection.h: use the correct type instead of MonoObject.
30288
30289 2002-03-28  Martin Baulig  <martin@gnome.org>
30290
30291         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
30292         (mono_debug_update_symbol_file): Initialize classes if necessary.
30293
30294 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30295
30296         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
30297         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
30298
30299 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
30300
30301         * assembly.h: fix function prototype.
30302         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
30303         * mono-endian.h: use const cast.
30304
30305 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30306
30307         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
30308
30309 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30310
30311         * loader.c: don't assert when a typeref can't be loaded, give
30312         a chance to the runtime to trow an exception instead.
30313         * loader.h: fix warning.
30314
30315 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30316
30317         * class.c (mono_class_proxy_vtable): added proxy support
30318
30319 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
30320
30321         * icall.c: removed last of PAL calls, added System.Environment
30322         * file-io.h, file-io.c: MonoIO implementation
30323         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
30324
30325 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30326
30327         * appdomain.c: do not use the byte marker in ldstr table lookup.
30328         * debug-helpers.c: allow two ':' to separate class and method name.
30329         * object.c: allocate arrays bounds with the GC, too.
30330         * verify: add a few more checks.
30331
30332 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
30333
30334         * reflection.c: output also literal strings. Allocate parameter data
30335         with GC_malloc() (thanks, Martin, for catching this!).
30336
30337 2002-03-26  Martin Baulig  <martin@gnome.org>
30338
30339         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
30340         include the `this' offset in the `param_offsets'.
30341
30342 2002-03-25  Martin Baulig  <martin@gnome.org>
30343
30344         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
30345         mono_debug_get_class() function to get the classes. Added new
30346         relocation types for arrays and strings.
30347         (mono_debug_get_class): New static function to search in all
30348         referenced assemblies for a metadata token.
30349
30350         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
30351
30352 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30353
30354         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
30355         hold gc-allocated objects. Make the string heap a stream like the
30356         others. Removed duplicated code when writing stream info.
30357         Added asserts to catch possible buffer overflows. Set the sorted map
30358         for tables that need sorting. Added some documentation.
30359
30360 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
30361
30362         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
30363         for interned strings and vtables.
30364
30365 2002-03-24  Martin Baulig  <martin@gnome.org>
30366
30367         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
30368         it in the array since it was created with g_slist_prepend().
30369
30370 2002-03-24  Martin Baulig  <martin@gnome.org>
30371
30372         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
30373         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
30374         (mono_debug_method_from_token): Renamed to
30375         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
30376         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
30377
30378         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
30379         relocation types.
30380
30381         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
30382
30383 2002-03-24  Martin Baulig  <martin@gnome.org>
30384
30385         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
30386         (mono_debug_method_from_token): New func.
30387
30388         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
30389         New interncall, calls mono_debug_local_type_from_signature().
30390         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
30391         calls mono_debug_method_from_token().
30392
30393 2002-03-23  Martin Baulig  <martin@gnome.org>
30394
30395         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
30396         specifies the number of bytes to be converted, not the array size.
30397         Return the number of chars, not the number of bytes.
30398         (ves_icall_iconv_get_chars): The `byteCount' argument
30399         specifies the number of bytes to be converted, not the array size.
30400
30401 2002-03-23  Martin Baulig  <martin@gnome.org>
30402
30403         * reflection.h (MonoReflectionSigHelper): New type.
30404
30405         * reflection.c (mono_reflection_sighelper_get_signature_local),
30406         (mono_reflection_sighelper_get_signature_local): New functions.
30407
30408         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
30409         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
30410         interncalls.
30411
30412 2002-03-23  Martin Baulig  <martin@gnome.org>
30413
30414         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
30415         is_writeable is set.
30416         (mono_raw_buffer_update): New function to write the modified map
30417         back to disk.
30418
30419         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30420
30421         * debug-symfile.c (mono_debug_update_symbol_file): Call
30422         mono_raw_buffer_update() when done writing.
30423
30424 2002-03-23  Martin Baulig  <martin@gnome.org>
30425
30426         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30427
30428         * debug-symfile.c: Added support for arguments and local variables.
30429
30430 2002-03-23  Dick Porter  <dick@ximian.com>
30431
30432         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30433         protected by ifdefs, hence breaking the w32 build.
30434
30435 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30436
30437         * object.c: implement is_interned() the right way.
30438
30439 2002-03-21  Martin Baulig  <martin@gnome.org>
30440
30441         * debug-symfile.[ch]: New files to handle debugging information
30442         files. There's also support to dynamically update these symbol
30443         files to include machine dependent information.
30444
30445 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30446
30447         * threads.c (mono_thread_create): new function to create thread
30448         from C
30449
30450 2002-03-20  Martin Baulig  <martin@gnome.org>
30451
30452         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30453         method is a constructor.
30454         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30455         points to ves_icall_InternalInvoke().
30456
30457 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30458
30459         * file-io.c: Flush shouldn't throw exceptions.
30460
30461 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30462
30463         * file-io.c: FileStream flush support; FileSetLength now
30464         restores file pointer.
30465
30466 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30467
30468         * class.c: set image for pointer classes.
30469
30470 2002/03/19  Nick Drochak <ndrochak@gol.com>
30471
30472         * sysmath.c: Forgot one.
30473
30474 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30475
30476         * sysmath.c: Avoid redefining existing names.
30477
30478 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30479
30480         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30481         handled by runtime as icall rather than dllimport from libm.so
30482         * file-io.c, file-io.h: fixed handle argument type.
30483
30484 2002-03-18  Dick Porter  <dick@ximian.com>
30485
30486         * reflection.c (mono_image_get_type_info): rename interface to
30487         iface, because of "#define interface struct" on windows.
30488
30489 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30490
30491         * class.c, class.h: rename and export mono_ptr_class_get().
30492         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30493         * reflection.c, reflection.h, icall.c: better/saner type name
30494         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30495         method signatures.
30496
30497 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30498
30499         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30500
30501         * icall.c (ves_icall_InternalInvoke): impl.
30502
30503 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30504
30505         * reflection.c: output the interface map table, too.
30506
30507 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30508
30509         * class.c (class_compute_field_layout): separate computation of 
30510         static field layout
30511
30512 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30513
30514         * icall.c: added System.Buffer support.
30515         * file-io.c: moved file icalls from PAL to FileStream.
30516
30517 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30518
30519         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30520
30521 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30522
30523         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30524
30525 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30526
30527         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30528
30529 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30530
30531         * debug-helpers.{c,h}: moved here from monograph some useful functions
30532         to locate a method by name/signature in a class or image. Included
30533         also a small and flexible IL disassembler.
30534
30535 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30536
30537         * reflection.c: fixup tokens in methods with small header size, too.
30538
30539 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30540
30541         * object.c (mono_string_to_utf8): remove assert(!error), instead
30542         print a warning. 
30543
30544 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30545
30546         * icall.c: update to the new mono_Array_class_get interface.
30547
30548 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30549
30550         * appdomain.c, object.c: Boehm-GC enable.
30551         * icall.c: make get_data_chunk() support split data requests.
30552         Ensure a class is initialized in more cases. Return only the first
30553         property found in GetProperties() or the compiler gets confused. 
30554         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30555         * reflection.h, reflection.c: add fixup mechanism for field and method
30556         tokens. Initialize assembly->typeref in a single place. Output
30557         properties after events. Support custom attributes for events, too.
30558         Typo fix for paramter custom attrs.
30559
30560 2002-03-07  Martin Baulig  <martin@gnome.org>
30561
30562         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30563
30564 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30565
30566         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30567
30568 2002-03-06  Martin Baulig  <martin@gnome.org>
30569
30570         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30571         non-zero lower bounds. See testcases #F10-#F13.
30572
30573 2002-03-05  Martin Baulig  <martin@gnome.org>
30574
30575         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30576
30577         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30578         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30579         here.
30580         (ves_icall_System_Array_SetValue): Likewise.
30581         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30582         as argument and does the actual work. This function is used when copying a
30583         multi-dimensional array.
30584         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30585         now do all the widening conversions of value types.
30586         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30587
30588 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30589
30590         * class.c: remove some magic numbers and use the smbolic names,
30591         instead. Added init_events() to load event info at class init time.
30592         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30593         and mono_metadata_methods_from_event().
30594         * reflection.h, reflection.c: added support for writing out the evnets
30595         related information.
30596
30597 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30598
30599         * reflection.h, icall.c: use a different method (GetInterfaces)
30600         to gather interface info and add isbyref, isprimitive and
30601         ispointer to the ves_icall_get_type_info() return value.
30602
30603 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30604
30605         * class.h: stared adding support for events.
30606         * icall.c: split find_members implementation. Added debug icall to get
30607         the address of an object.
30608         * reflection.c: handle TypeBuilders in mono_type_get_object().
30609
30610 2002-03-01  Martin Baulig  <martin@gnome.org>
30611
30612         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30613         ArgumentOutOfRangeException(), not an ArgumentException().
30614         (ves_icall_System_Array_GetLowerBound): Likewise.
30615         (ves_icall_System_Array_GetValue): Improved argument checking.
30616         (ves_icall_System_Array_SetValue): Improved argument checking.
30617
30618 2002-03-01  Martin Baulig  <martin@gnome.org>
30619
30620         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30621         called with invalid arguments rather than just dying with g_assert().
30622         (ves_icall_System_Array_SetValue): Likewise.
30623         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30624         raise a NotImplementedException instead.
30625         (ves_icall_System_Array_GetLength): Added argument checking.
30626         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30627
30628 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30629
30630         * object.h (mono_assert): new macros mono_assert and
30631         mono_assert_not_reached
30632
30633 2002-02-28  Martin Baulig  <martin@gnome.org>
30634
30635         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30636         and "System::String::IsInterned" to "System::String::_IsInterned".
30637
30638 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30639
30640         * icall.c: remove hacks for typebuilder. Added icall to create a
30641         modified type from a tybebuilder.
30642         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30643         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30644         to create a backing MonoClass for a TypeBuilder.
30645
30646 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30647
30648         * class.c, class.h: more refactoring of class init.
30649         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30650
30651 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30652
30653         * marshal.c, marshal.h: start of marshaling interface.
30654
30655 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30656
30657         * icall.c: fix order in assembly qualified name icall.
30658
30659 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30660
30661         * class.c: do not free str, since we store it in the hash table.
30662         * reflection.h: add label field to MonoILExceptionInfo.
30663         * reflection.c: handle references to more than one assembly. Handle
30664         case when there isn't a module created in the assembly.
30665
30666 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30667
30668         * class.c: Fix typo. Start refactoring of class init code.
30669
30670 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30671
30672         * appdomain.c: exit with 1 on error.
30673         * class.c: we already have the name in MonoClassField.
30674         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30675         MonoStreamHeader instead of an offset of image->raw_metadata.
30676
30677 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30678
30679         * appdomain.c (mono_init): Be even more descriptive about the error.
30680
30681 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30682
30683         * appdomain.c: give the user an informative message when corlib can't
30684         be loaded.
30685
30686 2002-02-26  Martin Baulig  <martin@gnome.org>
30687
30688         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30689         New icall to get the time zone data.
30690
30691 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30692
30693         * reflection.c: set virtual and raw size of section correctly.
30694         * threads.c: transfer domain information to newly created threads.
30695
30696 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30697
30698         * class.c: when instancing a class in a domain, load the default
30699         vaules for static fields from the constant table. Fix System.Enum to
30700         not be an enum.
30701         * icall.c: implement Object::GetType() internalcall. Implemented
30702         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30703         Fixed checking of binding flags in find_members().
30704         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30705         * reflection.c: handle enumerations when writing to the constant
30706         table. Use a different object cache for types.
30707
30708
30709 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30710
30711         * object.c (mono_object_isinst): fix for arrays
30712
30713         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30714
30715 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30716
30717         * object.c: don't use mprotect ()  and fix intern pool hash table
30718         lookup for big endian systems.
30719
30720 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30721
30722         * icall.c: change type_is_subtype_of () signature.
30723
30724 2002-02-21  Mark Crichton  <crichton@gimp.org>
30725
30726         * rand.c, rand.h: Added random number generator for
30727         System.Security.Cryptography classes.
30728
30729         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30730
30731         * icall.c: Added System.Security.Cryptography calls.
30732
30733 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30734
30735         * class.c, icall.c, metadata.c: better support for pointer types.
30736         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
30737         * reflection.c: Add support for getting custom attrs for properties
30738         and simplify some code.
30739
30740 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30741
30742         * icall.c: change getToken () and add custom attribute GetBlob()helper
30743         method.
30744         * reflection.h: add custom attrs array to the reflection builder structures.
30745         * reflection.c: encode and emit custom attributes for all the relevant
30746         reflection objects. Cache fieldref and methodref tokens. Change
30747         mono_image_create_token() interface to take a MonoDynamicAssembly.
30748         More complete custom attributes decoder. Load custom attributes for
30749         Assembly, Field, Method and Constructor objects, too. Make the
30750         returned array an Attribute[] one, not object[]. Added
30751         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
30752         custom attribute constructor.
30753
30754 2002-02-20  Dick Porter  <dick@ximian.com>
30755
30756         * icall.c:
30757         * rawbuffer.c:
30758         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
30759         problem code out for now).
30760
30761 2002-02-19  Radek Doulik  <rodo@ximian.com>
30762
30763         * object.c (mono_ldstr): use hash table to avoid multiple swapping
30764
30765 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
30766
30767         * icall.c: register the GetCustomAttributes method.
30768         * object.c, object.h: add mono_string_new_len ().
30769         * reflection.h, reflection.c: added mono_runtime_invoke(),
30770         mono_install_runtime_invoke(). Added
30771         mono_reflection_get_custom_attrs () to load custom attributes and
30772         create the attribute objects.
30773
30774 2002-02-19  Dick Porter  <dick@ximian.com>
30775         * threads-dummy-types.c:
30776         * threads-dummy-types.h:
30777         * threads-dummy.c:
30778         * threads-dummy.h:
30779         * threads-pthread-types.c:
30780         * threads-pthread-types.h:
30781         * threads-pthread.c:
30782         * threads-pthread.h:  Deleted obsolete files
30783
30784 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
30785
30786         * class.c (mono_class_vtable): runtime init the class when we
30787         allocate static class data.
30788
30789         * icall.c (ves_icall_System_Array_SetValue): check for null values.
30790
30791         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
30792         and String - but we will need generic marshalling support in the
30793         future. 
30794         (mono_init): set the domain name in a ms compatible way
30795
30796         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
30797         String[].
30798
30799 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
30800
30801         * object.c (mono_array_clone): use alloca() instead of g_malloc  
30802         for sizes
30803
30804         * appdomain.c (mono_domain_unload): impl.
30805
30806 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30807
30808         * appdomain.c, object.c: fix intern pool implementation.
30809         * class.c: fix alignment code.
30810
30811 2002-02-16  Radek Doulik  <rodo@ximian.com>
30812
30813         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
30814         and s2 > s1, just copy lower bytes to be compatible with little
30815         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
30816         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
30817
30818         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
30819         force big_endian to be 1 for big endian machines 
30820         (ves_icall_iconv_new_decoder): ditto
30821
30822 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
30823
30824         * socket-io.c (convert_sockopt_level_and_name): If the system
30825         doesn't define SOL_IP or SOL_TCP, get them by hand using
30826         getprotobyname() and caching the values (because this could be a
30827         slow operation).
30828         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
30829         Use the appropriate struct when the system does support it. Ie,
30830         not all systems have struct ip_mreqn so use struct ip_mreq when
30831         appropriate.
30832
30833 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
30834
30835         * reflection.c: handle finally clauses.
30836
30837 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
30838
30839         * socket-io.c: use g_snprintf() instead of snprintf.
30840
30841 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30842
30843         * reflection.c (mono_param_get_objects): Cast second argument to
30844         mono_method_get_param_names to a const char** to silence the
30845         compiler warning.
30846
30847         * appdomain.c (mono_domain_assembly_open): Put parens around the
30848         truth statement in the for-loop.
30849
30850         * unicode.c (iconv_convert): Got rid of a compiler warning about
30851         int i being unused when the system has a new iconv.
30852         (iconv_get_length): Same.
30853
30854         * image.c (load_class_names): Cast the second argument to
30855         g_hash_table_insert() to char* to hush compiler warnings about the
30856         arg being a const.
30857         (mono_image_open): Same here.
30858
30859         * socket-io.c: Don't conditionally include sys/filio.h or
30860         sys/sockio.h here anymore since we now get them from
30861         io-layer/io-layer.h
30862         (inet_pton): If the system doesn't support inet_aton, implement
30863         using inet_addr and also #define INADDR_NONE if it isn't defined
30864         by the system.
30865
30866 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30867
30868         * metadata.c, metadata.h: added function to get packing and size info
30869         of a typedef.
30870         * reflection.h, reflection.c: handle field RVA data. Save info about
30871         the table layout if needed. Assign typedef indexes to all the types
30872         before dumping the info about them to avoid forward reference problems.
30873
30874 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
30875
30876         * socket-io.c (convert_sockopt_level_and_name): ifdef
30877         SO_ACCEPTCONN because it is not defined on my system (old debian)
30878
30879 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30880
30881         * opcode.c: use stddef.h to get NULL.
30882
30883 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30884
30885         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
30886         for FIONBIO, FIONREAD and SIOCATMARK.
30887         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
30888         define INADDR_NONE and besides, inet_addr() is deprecated and
30889         should not be used. Use inet_pton() instead - it also has the
30890         added bonus that it can easily handle IPv6 addresses as well.
30891         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
30892
30893 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30894
30895         * decimal.c: remove _MSC_VER conditional.
30896
30897 2002-02-13  Dick Porter  <dick@ximian.com>
30898
30899         * socket-io.c: 
30900         * icall.c: Internal calls for Blocking, Select, Shutdown,
30901         GetSocketOption and SetSocketOption
30902
30903 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30904
30905         * assembly.cs: better resolver: use it instead of some kludgy
30906         code.
30907
30908 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
30909
30910         * reflection.c: the best way to speed-up the compiler is to avoid
30911         infinite loops.
30912
30913 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
30914
30915         * class.c (mono_class_vtable): changed the object layout
30916         (obj->vtable->class). 
30917         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
30918
30919 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30920
30921         * assembly.c: look for assemblies in the assembly dir, too.
30922
30923 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30924
30925         * class.c: fix thinko in mono_class_from_type().
30926
30927 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30928
30929         * exception.h, exception.c: added TypeLoadException.
30930         * object.h, object.c: added mono_array_clone ().
30931         * icall.c: handle throwOnError in AssemblyGetType().
30932         Added Array.Clone().
30933         * opcode.h, opcode.c: use a single value for the opcode val.
30934         Compile fix for non-gcc compilers.
30935
30936 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
30937
30938         * opcodes.c, opcodes.h: export interesting info about opcodes.
30939
30940 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
30941
30942         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
30943         icalls. 
30944
30945         * class.c (class_compute_field_layout): set element_class for enums
30946         (mono_class_create_from_typedef): set element_class for normal classes
30947
30948         * icall.c (ves_icall_System_Enum_get_value): impl.
30949
30950         * class.c (mono_class_create_from_typedef): do not set valuetype
30951         flag for System.ValueType and System.Enum
30952
30953 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
30954
30955         * unicode.c (iconv_convert): fix big endian problem.
30956
30957 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30958
30959         * class.c: add asserts if we are ever going to scribble over memory.
30960         * socket-io.c: not all systems have AF_IRDA defined.
30961
30962 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
30963
30964         * class.c (class_compute_field_layout): do not consider static
30965         fields to compute alignment
30966
30967 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
30968
30969         * appdomain.c (mono_appdomain_get): impl.
30970         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
30971
30972 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30973
30974         * icall.c: ignore "file://" prefix when loading an assembly.
30975
30976 2002-01-23  Dick Porter  <dick@ximian.com>
30977
30978         * socket-io.c:
30979         * icall.c:
30980         * Makefile.am: Added socket support
30981
30982 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30983
30984         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
30985         code back.  This should return the assemblies that are loaded by
30986         the runtime on behalf of an application domain. 
30987
30988         The current implementation is still broken, it just returns every
30989         assembly loaded, but until we get real applications domain this
30990         will do.
30991
30992 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
30993
30994         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
30995         AppDomain object.
30996
30997 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30998
30999         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
31000         the mono_class_from_name lookup.
31001         (ves_icall_get_parameter_info): ditto.
31002         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
31003         method.
31004         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
31005
31006 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
31007
31008         * class.c: load also nested classes on class init.
31009         System.ValueType instance methods gets passed boxed
31010         values, unless methods in derived classed that get a pointer to the
31011         data.
31012         * icall.c: use better name parsing code in GetType().
31013         * image.c, image.h: add mono_image_loaded ().
31014         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
31015         * reflection.c, reflection.h: added mono_reflection_parse_type().
31016
31017 2002-01-22  Veronica De Santis <veron78@interfree.it>
31018
31019         * icall.c : Added mapping of internal calls for Manual and Auto reset events
31020         * threads.c : Added the implementation of internal calls for events
31021         * threads.h : Added prototypes of internal calls for events
31022         
31023 2002-01-21  Radek Doulik  <rodo@ximian.com>
31024
31025         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
31026
31027 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
31028
31029         * class.c (mono_class_init): set min_align to 1 (instead of 0)
31030         (mono_class_value_size): use min_align
31031
31032 2002-01-20  Dick Porter  <dick@ximian.com>
31033
31034         * threads.h:
31035         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
31036         so it compiles on w32.
31037
31038 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
31039
31040         * metadata.c (mono_type_stack_size): impl.
31041
31042         * class.c (mono_class_get_field): impl. memberref token
31043
31044 2002-01-16 Veronica De Santis <veron78@@interfree.it>
31045
31046         * icall.h : Added the internal calls mapping for CreateMutex_internal
31047                     and ReleaseMutex_internal.
31048         * threads.h : Added the prototype of mutexes internal calls.
31049         * threads.c : Added the implementations of mutexes internal calls.
31050
31051 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
31052
31053         * metaparse.h: removed unused file.
31054         * reflection.c, reflection.h: added stream_data_align () function 
31055         to align data in streams and keep stream aligned. Add support for
31056         exception support in method headers.
31057
31058 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
31059
31060         * unicode.c: make iconv_convert () return the number of bytess written
31061         in the output buffer.
31062
31063 2002-01-15  Dick Porter  <dick@ximian.com>
31064         * threads.c: Make the runtime's idea of infinite timeouts coincide
31065         with the class library's
31066
31067         Fix a particularly egregious bug in mono_thread_cleanup(). That
31068         code was so utterly bogus it must have been written on a Monday.
31069
31070 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
31071
31072         * reflection.h: add subtypes field to TypeBuilder.
31073         * reflection.c: encode constants for literal fields.
31074         Handle subtypes. Fix user string token (and add a zero byte)
31075         at the end.
31076         
31077 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
31078
31079         * class.c (mono_class_init): bug fix: assign slot numbers for
31080         abstract methods.
31081
31082 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31083
31084         * reflection.c: don't try to output a code RVA for abstract methods.
31085         Small fixes for method header format. Output parameter info to the
31086         ParamDef table. Save method overriding info to MethodImpl table.
31087         Fix property support. Allow typedef.extends to be a type in the
31088         building assembly.
31089         * verify.c: fix off-by-one error.
31090
31091 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
31092
31093         * class.c: fix mono_class_from_mono_type () for szarray types.
31094         Remove unused cache check in mono_class_from_type_spec().
31095         * icall.c: *type_from_name () functions handle simple arrays and byref.
31096         * reflection.c: handle byref and szarray types. Handle methods without
31097         body (gets P/Invoke compilation working). Handle types and fields in
31098         get_token ().
31099         * reflection.h: add rank to MonoTypeInfo.
31100
31101 2002-01-10  Dick Porter  <dick@ximian.com>
31102
31103         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
31104         internal calls
31105
31106 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
31107
31108         * icall.c: initialize class in type_from_handle ().
31109         Loop also in parent classes for get_method ().
31110         * reflection.c: properly encode class and valuetype types.
31111         Start on encoding TypeBuilder types. Handle fieldrefs.
31112         Use correct length when registering a user string.
31113         Handle ConstructorBuilder and MonoMethod in get_token ().
31114         Make mono_type_get_object () aware of cached types.
31115         * object.c: back out change to mono_string_new ().
31116
31117 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
31118         * object.c: mono_string_new should return a NULL when the string 
31119         passed in is NULL -- not try to deference it.
31120         
31121 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
31122
31123         * icall.c: hack to make IsSubType work for TypeBuilders.
31124         * reflection.c: emit constructors before methods.
31125         Retrieve param names in mono_param_get_objects().
31126
31127 2002/01/05  Nick Drochak  <ndrochak@gol.com>
31128
31129         * Makefile.am: fix list of headers and sources so automake 1.5
31130         doesn't complain. Removed \# at end of list.
31131
31132 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
31133
31134         * reflection.c: get token for a method ref. Set return type of
31135         constructor to void.
31136         * loader.c: debug message.
31137         * class.c: typo fix.
31138
31139 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
31140
31141         * icall.c: fix array init with rank > 1. FindMembers
31142         loops in parent class as well.
31143         * image.c: do not insert nested types in name cache.
31144         * reflection.c: warning fix.
31145         * reflection.h: add override method (for interface impl).
31146
31147 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
31148
31149         * metadata.c: fix customattr decoding.
31150
31151 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
31152
31153         * rawbuffer.cs: Added native Win32 implementation, avoids using
31154         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
31155
31156 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
31157
31158         * class.c: make the low-level routines handle the cache.
31159
31160 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
31161
31162         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
31163
31164 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
31165
31166         * class.c: fix mono_array_element_size() for objects.
31167         * class.h, class.c: add properties to MonoClass and load them
31168         at init time.
31169         * icall.c: check with isinst() when assigning a value to an array
31170         instead of requiring the classes to match exactly.
31171         Implemented icall for System.Type::GetType().
31172         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
31173         enums. Handle bindingflags when looking for methods and fields.
31174         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
31175         and mono_metadata_methods_from_property().
31176         * reflection.h, reflection.c: added structures for propreties,
31177         parameters and enums. Implemented mono_property_get_object() and
31178         mono_param_get_objects().
31179
31180 2001-12-18  Dick Porter  <dick@ximian.com>
31181
31182         * file-io.c: Use mono_string_to_utf16() instead of
31183         mono_string_chars()
31184
31185         * object.c: Added mono_string_to_utf16(), which copies the non
31186         NULL-terminated MonoString into a new double-null-terminated
31187         buffer.
31188
31189 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
31190
31191         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
31192
31193 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
31194
31195         * file-io.c: raise exceptions if handle is invalid.
31196
31197 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
31198
31199         * assembly.c: yet another check for mscorlib.
31200         * class.c, class.h: load nesting info for classes.
31201         * icall.c: many new functions to support the Reflection classes.
31202         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
31203         * reflection.h, reflection.c: mono_image_create_token(),
31204         mono_assembly_get_object(), mono_type_get_object(),
31205         mono_method_get_object(), mono_field_get_object(): methods to return
31206         objects that parallel the C representation of assemblies, types,
31207         methods, fields.
31208
31209 2001-12-11  Dick Porter  <dick@ximian.com>
31210
31211         * icall.c:
31212         * file-io.c: Internal calls for file IO.
31213
31214 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
31215
31216         * tabledefs.h: missing FileAttributes.
31217         * verify.h, verify.c: use is_valid_string () to simplify and check for
31218         valid strings more correctly. Fix warnings and speeling.
31219         Check more tables: Filed, File, ModuleRef, StandAloneSig.
31220         Check code: branches, maxstack, method calls.
31221
31222 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
31223
31224         * object.c (mono_object_allocate): removed static, so that the jit
31225         can allocate value types.
31226
31227         * icall.c (ves_icall_System_DateTime_GetNow): impl.
31228
31229 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31230
31231         * class.c: init enum types right away and register the
31232         token->MonoClass map in mono_class_create_from_typedef ().
31233         * verify.h, verify.c: first cut of the verifier.
31234         * pedump.c: add --verify switch to verify metadata tables.
31235         * tabledefs.h: add some missing enums.
31236
31237 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
31238
31239         * class.c (mono_install_runtime_class_init): impl.
31240         (mono_class_init): renamed mono_class_metadata_init to
31241         mono_class_init, also removed the metadata_inited flag
31242
31243         * object.c (mono_object_isinst): use faster algorithm
31244
31245 2001-11-30  Radek Doulik  <rodo@ximian.com>
31246
31247         * mono-endian.h: reverted last change
31248         added function prototypes
31249
31250         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
31251         add mono-endian.c back
31252
31253         * mono-endian.c: returned back, as Paolo pointed out, it's needed
31254         for unaligned access, I've mistaked it with endianess. I am
31255         sorry.
31256         (mono_read16): fix reverted endianess
31257         (mono_read64): ditto
31258         (mono_read32): ditto
31259
31260 2001-11-30  Dick Porter  <dick@ximian.com>
31261
31262         * exception.c: Implement mono_exception_from_name()
31263
31264 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31265
31266         * metadata.h, metadata.c: remove params_size and locals_size and their
31267         calculation from the metadata code: they are only usefult to the
31268         interp.
31269
31270 2001-11-29  Radek Doulik  <rodo@ximian.com>
31271
31272         * object.c (mono_ldstr): swap bytes here, it's probably not the
31273         best place, but works for me now, I'll redo it once I know mono
31274         better, also note that I add PROT_WRITE and don't reset back, also
31275         note that it's only affects big endians, so x86 should be OK
31276
31277         * mono-endian.h (read16): use just glib macros for both endians
31278
31279         * mono-endian.c: removed as glib macros are used in in
31280         mono-endian.h so we don't need to care about endianess for read
31281         macros as glib does that for us already
31282
31283 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
31284
31285         * class.h, class.h: take minimum alignment into consideration so
31286         that the fields of a class remain aligned also when in an array.
31287
31288 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31289
31290         * loader.h, loader.c: add mono_method_get_param_names().
31291         * class.c: 0-init class fields.
31292
31293 2001-11-26  Dick Porter  <dick@ximian.com>
31294
31295         * icall.c:
31296         * threads-types.h:
31297         * threads.c: New file that handles System.Threading on all platforms
31298
31299         * object.c: 
31300         * object.h: Remove the synchronisation struct from MonoObject,
31301         replace it with a pointer that gets initialised on demand
31302
31303         * Makefile.am: Replace all the system-specific threading code with
31304         a single file that uses the new wrapper library
31305
31306 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
31307
31308         * class.c, class.h: add mono_install_trampoline() so that the runtime
31309         can register a function to create a trampoline: removes the ugly
31310         requirement that a runtime needed to export arch_create_jit_trampoline.
31311         * object.h, object.c: added mono_install_handler() so that the runtime
31312         can install an handler for exceptions generated in C code (with
31313         mono_raise_exception()). Added C struct for System.Delegate.
31314         * pedump.c: removed arch_create_jit_trampoline.
31315         * reflection.c: some cleanups to allow registering user strings and
31316         later getting a token for methodrefs and fieldrefs before the assembly
31317         is built.
31318         * row-indexes.h: updates and fixes from the new ECMA specs.
31319
31320 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
31321
31322         * class.h, class.c: add enum_basetype field to MonoClass.
31323         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
31324         to get index in the constant table reated to a field, param or
31325         property.
31326         * reflection.h, reflection.c: handle constructors. Set public-key and
31327         version number of the built assembly to 0.
31328         * row-indexes.h: update from new ECMA spec.
31329
31330 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31331
31332         * class.h, class.c: add a max_interface_id to MonoClass.
31333         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
31334         since it's used to do that. Added mono_type_type_from_obj().
31335         Make GetType() return NULL instead of segfaulting if the type was not
31336         found. Handle simple arrays in assQualifiedName.
31337         * object.h: add a struct to represent an Exception.
31338         * reflection.c: output call convention in method signature.
31339         Add code to support P/Invoke methods and fixed offsets for fields.
31340
31341 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
31342
31343         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
31344         the value.
31345         * icall.c: use mono_array_addr instead of array->vector: fixes the
31346         reflection image writing.
31347         * reflection.c: init call convention byte to 0 in method signature.
31348         Encode the property signature. Don't output property-related methods
31349         twice. Really process the properties for a type (don't cast a field to
31350         a property, my mom always told me that).
31351         Fix 64 bit issues in pointer alignment in a different and more
31352         readable way.
31353
31354 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
31355
31356         * loader.h: Removed type class from MonoDefaults, added monotype
31357
31358         * loader.c: Loaded MonoType, removed loading of Type
31359
31360         * icall.c (my_mono_new_object): Now returns a System.MonoType,
31361         and fills in System.Type._impl with a RuntimeTypeHandle rather
31362         than the actual MonoClass *
31363
31364         (ves_icall_type_from_handle): change from type_class to
31365         monotype_class
31366
31367         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
31368         implemented
31369
31370         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
31371         implemented
31372
31373         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
31374
31375         (ves_icall_System_Reflection_Assembly_GetType): implemented
31376
31377         (ves_icall_System_MonoType_assQualifiedName): implemented
31378
31379         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
31380
31381 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
31382
31383         * assembly.c (mono_assembly_open): Implement a cache for the
31384         assemblies. 
31385
31386         (mono_assembly_close): only destroy the assembly when the last
31387         reference is gone.
31388         
31389 2001-11-09  Dick Porter  <dick@ximian.com>
31390
31391         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
31392
31393 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
31394
31395         * class.c (mono_class_metadata_init): bug fix: compute the right slot
31396
31397 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31398
31399         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
31400         from Martin Weindel.
31401         * object.h: add mono_string_chars ().
31402
31403 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
31404
31405         * reflection.c (build_compressed_metadata): Eliminates warnings
31406         and uses 64-bit clean code.
31407
31408         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
31409         (mono_type_equal): Change signature to eliminate warnings.
31410
31411 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31412
31413         * icall.c, loader.c: remove the internalcall array constructors.
31414         Changes to match the new MonoArray structure.
31415         * object.h, object.c: an array object doesn't allocate an extra
31416         vector. Add mono_array_new_full () to create jagged arrays easily.
31417
31418 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31419
31420         * metadata.h, metadata.c: add mono_metadata_field_info () to
31421         retreive all the info about a field from vairous tables.
31422         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31423         * class.h, class.c: augment MonoClassField with more info.
31424         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31425         policy and load a field's RVA if needed.
31426
31427 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31428
31429         * class.c (mono_class_metadata_init): create a trampoline for all
31430         virtual functions instead of actually compiling them.
31431
31432 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31433
31434         * class.h, class.c: include name in MonoClassField.
31435         * class.c: fix fundamental type of System.Object and System.String.
31436         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31437         tokens in ldtoken.
31438         * icall.c: remove internalcalls for the Reflection stuff that is now
31439         done in C# code.
31440         * loader.c: mono_field_from_memberref () implementation.
31441         * mono-endian.c: thinko (s/struct/union/g).
31442         * object.c, object.h: make the mono_string_* prototypes actually use
31443         MonoString instead of MonoObject.
31444         * reflection.c, reflection.h: updates for changes in the reflection
31445         code in corlib: we use C structures that map to the actual C# classes.
31446         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31447         fat method header if needed and use the info from the ILGenerator for
31448         methods. Handle fields in types. Misc fixes.
31449
31450 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31451
31452         * class.c (mono_class_metadata_init): bug fix: always allocate
31453         space for static class data
31454
31455 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31456
31457         * class.c (mono_compute_relative_numbering): use relative
31458         numbering to support fast runtime type checks.
31459
31460 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31461
31462         * class.c (mono_class_create_from_typeref): added debugging output
31463         to print class name when MonoDummy is returned instead of real class
31464
31465 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31466
31467         * class.c (mono_class_metadata_init): interface offset table now
31468         contains pointers into the vtable - this is more efficient for the jit
31469
31470 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31471
31472         * class.c (mono_class_metadata_init): use a temporary vtable (the
31473         old algorithm only worked for the interpreter, but not for the jit)
31474
31475 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31476
31477         * loader.c (method_from_memberref): use mono_class_get to get the
31478         class of an array instead of using System.Array directly.
31479         (mono_get_method): also add MEMBERREF methods to the method cache
31480         which usefull for arrays.
31481
31482 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31483
31484         * pedump.c (arch_compile_method): added to compute vtable entry
31485
31486         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31487         number of interfaces.
31488         
31489         * class.h: merged MonoArrayClass into MonoClass
31490
31491         * class.c (mono_class_create_from_typedef): compute the vtable size and
31492         allocate space to include the vtable inside MonoClass
31493         (mono_class_metadata_init): initialize the vtable
31494
31495 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31496
31497         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31498         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31499         * image.c: endian fixes by Laurent Rioux.
31500         * object.h, object.c: rename MonoStringObject to MonoString and
31501         MonoArrayObject to MonoArray. Change some function names to conform to
31502         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31503         guint16* as first argument, so don't use char*.
31504         Provide macros to do the interesting things on arrays in a portable way.
31505         * threads-pthread.c: updates for the API changes and #include <sched.h>
31506         (required for sched_yield()).
31507         * icall.c: updates for the API changes above.
31508         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31509         platforms that need them.
31510
31511 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31512
31513         * class.c: set the correct type for all the fundamental
31514         type when loading the class.
31515
31516 2001-10-05  Dick Porter  <dick@ximian.com>
31517
31518         * threads-pthread.c (pthread_mutex_timedlock): Simple
31519         compatibility version for C libraries that lack this call.
31520
31521 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31522
31523         * class.c: MonoTypes stored in MonoClass are stored as
31524         fundamental MonoTypes when the class represents a
31525         fundamental type (System.Int32, ...).
31526         The TypeHandle return by ldtoken is a MonoType*.
31527         * icall.c: ves_icall_get_data_chunk () write out all the
31528         PE/COFF stuff. Implement ves_icall_define_method (),
31529         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31530         * image.c: properly skip unknown streams.
31531         * loader.h, loader.c: add type_class to mono_defaults.
31532         * metadata.c, metadata.h: export compute_size () as
31533         mono_metadata_compute_size () with a better interface.
31534         Typo and C&P fixes.
31535         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31536         * reflection.c, reflection.h: many cleanups, fixes, output method
31537         signatures and headers, typedef and typeref info, compress the metadata
31538         tables, output all the heap streams, cli header etc.
31539         * row-indexes.h: typo fixes.
31540
31541 2001-10-04  Dick Porter  <dick@ximian.com>
31542
31543         * object.h: Add a synchronisation mutex struct to MonoObject
31544
31545         * object.c (mono_new_object): Initialise the object
31546         synchronisation mutexes
31547
31548         * icall.c: System.Threading.Monitor internal calls
31549         
31550         * threads-pthread.h:
31551         * threads-pthread.c: System.Threading.Monitor internal calls
31552
31553         * threads-types.h: New file, includes the system-specific thread
31554         structures
31555         
31556         * threads-pthread-types.h:
31557         * threads-pthread-types.c: New files, handle pthread-specific
31558         synchronisation types
31559
31560         * threads-dummy-types.h: 
31561         * threads-dummy-types.c: New files of dummy support for
31562         thread-specific types
31563
31564         * metadata.c:
31565         * image.c:
31566         * pedump.c: include mono-endian.h not endian.h
31567         
31568         * Makefile.am: More threads files.
31569         Name mono-endian.h not endian.h
31570
31571 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31572
31573         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31574         stuff and implement a few more bits.
31575         * icall.c: a field needs to be dereferenced twice. Do not use the same
31576         name for two variables in the same scope.
31577         * image.c, image.h: cleanups.
31578
31579 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31580
31581         * class.c (mono_class_metadata_init): bug fix: compute the right size
31582
31583 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31584
31585         * icall.c: implemented some of the Reflection internalcalls.
31586         * image.c, image.h: start writing out the PE/COFF image.
31587         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31588         that does the reverse than decode_blob_size ().
31589         * object.c: use mono_metadata_encode_value (). Move here
31590         temporary implementation of mono_string_to_utf8 ().
31591         * rawbuffer.c: make malloc_map static.
31592
31593 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31594
31595         * metadata.c: fix type comparison for arrays.
31596         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31597         Added a couple of new classes to monodefaults.
31598         * icall.c: added a couple of Reflection-related internalcalls.
31599         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31600         Added a byval_arg MonoType to MonoClass.
31601
31602 2001-09-28  Dick Porter  <dick@ximian.com>
31603
31604         * icall.c:
31605         * threads-pthread.h: 
31606         * threads-pthread.c: Implemented internal calls for
31607         LocalDataStoreSlot operations.  Applied mutexes around all shared
31608         data.  Reworked the thread creation and Start() operations to
31609         avoid a race condition.
31610         
31611         * threads-dummy.h:
31612         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31613
31614 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31615
31616         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31617
31618 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31619
31620         * class.c, loader.c: warn and return NULL instead of erroring out.
31621         * icall.c: added System.AppDomain::getCurDomain().
31622         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31623
31624 2001-09-25  Dick Porter  <dick@ximian.com>
31625
31626         * threads-pthread.h:
31627         * threads-pthread.c: Implemented timed thread joining and added
31628         System.Threading.Thread::Join_internal internal call
31629
31630         * icall.c: Added System.Threading.Thread::Join_internal internal call
31631
31632         * threads-dummy.h:
31633         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31634
31635 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31636
31637         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31638         mono_string_intern () to implement the semantics of the ldstr opcode
31639         and the interning of System.Strings.
31640         * icall.c: provide hooks to make String::IsIntern and String::Intern
31641         internalcalls.
31642
31643 2001-09-23  Dick Porter  <dick@ximian.com>
31644
31645         * threads-dummy.c: 
31646         * threads-dummy.h: New files of dummy threading routines
31647
31648         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31649         support code based on system specifics
31650
31651         Rename PTHREAD_LIBS to THREAD_LIBS
31652         
31653 2001-09-23  Dick Porter  <dick@ximian.com>
31654
31655         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31656         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31657         internal calls.
31658         (mono_thread_init): Set up a Thread object instance to return when
31659         the main thread calls Thread.CurrentThread
31660         (mono_thread_cleanup): Wait for all subthreads to exit
31661
31662         * icall.c: New internal calls for System.Threading.Thread::Sleep
31663         (including Schedule) and CurrentThread
31664
31665         * threads.h: New file, to insulate thread-specific stuff from the
31666         rest of the code
31667
31668 2001-09-21  Dick Porter  <dick@ximian.com>
31669
31670         * threads-pthread.h: 
31671         * threads-pthread.c: New file, for handling pthreads-style
31672         threading support.  Start() now starts a new thread and executes
31673         the ThreadStart delegate instance.
31674
31675         * icall.c: Added the internalcall for
31676         System.Threading.Thread::Start_internal
31677
31678         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31679
31680 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31681
31682         * loader.c: work around the different signatures for delegates
31683         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31684
31685 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31686
31687         * class.h, class.c: add mono_class_get_field_from_name ().
31688         * *: Fix C comments and other ANSI C issues.
31689
31690 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31691
31692         * endian.h, assembly.c: fix some endianness issues.
31693
31694 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31695
31696         * loader.h, load.c: add delegate_class to mono_defaults.
31697         Handle runtime provided methods in mono_get_method ().
31698
31699 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31700
31701         * loader.c (mono_get_method): use pinvoke for internal call
31702
31703         * icall.c: use pinvoke for internal call
31704
31705         * loader.c (method_from_memberref): set the method name
31706
31707 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31708
31709         * metadata.c: help the compiler generate better code for
31710         mono_class_from_mono_type ().
31711
31712 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31713
31714         * class.c (mono_class_metadata_init): delayed computing of the
31715         class size to mono_class_metadata_init ()
31716
31717 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31718
31719         * class.c, class.h: add an interfaces member to MonoClass.
31720         * image.c, image.h: add assembly_name field to MonoImage
31721         from the assembly table.
31722         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31723
31724 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31725
31726         * class.c: Handle Array in mono_class_from_mono_type ().
31727         * metadata.c, pedump.c: some endian fixes.
31728
31729 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31730
31731         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
31732         * metadata.c: fix small problem introduced with the latest commit.
31733
31734 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
31735
31736         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
31737         We don't need a MonoMetadata pointer anymore to compare signatures in
31738         mono_metadata_signature_equal (), update callers.
31739         Reduced memory usage an number of allocations for MonoMethodHeader and
31740         MonoMethodSignature.
31741
31742 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
31743
31744         * metadata.c: added compare for szarray.
31745
31746 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
31747
31748         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
31749         and add a couple more types to it and mono_defaults. Give an hint on
31750         classes that need implementing in our corlib and are referenced
31751         in mscorlib.
31752
31753 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
31754
31755         * class.h, class.c: keep track if a class is also an Enum.
31756         * loader.c: Implement a couple more types for use in libffi
31757         marshalling. Gives better diagnostics when failing to dlopen
31758         a library. Set method->klass for P/Invoke methods, too.
31759
31760 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
31761
31762         * class.c, class.h: add a MonoType this_arg to MonoClass that
31763         represents a pointer to an object of the class' type that
31764         can be used by the interpreter and later the type cache.
31765         Add best guess alignment info for valuetype objects.
31766
31767 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
31768
31769         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
31770         into MonoType: one less level of indirection and allocation and
31771         simplifies quite a bit of code. Added cache for MonoTypes that are
31772         used frequently, so that we don't need to allocate them all the time.
31773
31774 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
31775
31776         * class.c (mono_class_create_from_typedef): System.Enum is also a
31777         value type, although it does not derive from System.ValueType
31778         (maybe a bug in the ms compiler?)
31779
31780         * metadata.c (mono_type_size): return the right size for value types
31781
31782         * loader.c (mono_get_method): only initialize method header if not abstract
31783
31784         * class.c (mono_class_from_mono_type): use mono_default values. 
31785
31786 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
31787
31788         * *: use MonoClass pointers instead of <type_tokens>
31789         
31790         * class.h: new flag: metadata_inited.
31791
31792         * class.c (mono_class_metadata_init): impl.
31793         (mono_class_instance_size): impl.
31794         (mono_class_data_size): impl.
31795
31796 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31797
31798         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
31799         MonoClass now has the name and name_space fields. 
31800         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
31801         mono_get_method () takes and optional MonoClass as argument.
31802         Removed mono_typedef_from_name() and added mono_class_token_from_name()
31803         instead that takes advantage of a map from class names to typedef
31804         tokens in MonoImage.
31805
31806 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
31807
31808         * metadata.c: zero is not a valid alignment boundary.
31809         Merge MONO_TYPE_VOID in default decoding code.
31810
31811 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
31812
31813         * image.h: merged MonoMetadata into MonoImage
31814
31815         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
31816         identify the type of elements.
31817
31818 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
31819
31820         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
31821         * cil-coff.h: split MonoMSDOSHeader and add size info.
31822         * image.c: add some consistency checks.
31823         * metadata.c: fix row size computation: one programmer
31824         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
31825         add explanation for the locator routine.
31826         Fix decoding of size in method header.
31827         
31828 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
31829
31830         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
31831         (g_concat_dir_and_file): Bring g_concat_dir_and_file
31832         function from gnome-libs.  This uses the right path separator
31833         based on the OS, and also works around a bug in some systems where
31834         a double slash is not allowed. 
31835         (default_assembly_name_resolver): Use g_concat_dir_and_file
31836         (mono_assembly_open): ditto.
31837
31838 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
31839
31840         * metadata.c (mono_metadata_signature_equal): impl.
31841
31842         * *: void is now a realy MonoType (instead of using NULL)
31843         
31844         * metadata.c (do_mono_metadata_parse_type): use
31845         mono_metadata_parse_type to parse void value.
31846
31847 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
31848
31849         * metadata.c, metadata.h: in the signature and method header store
31850         only the space required for holding the loca vars and incoming arguments.
31851
31852 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
31853
31854         * metadata.c (do_mono_metadata_parse_type): treat void like any
31855         other type (instead of assigning NULL);
31856
31857 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
31858
31859         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
31860
31861 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
31862
31863         * image.c (do_mono_image_open): added a cache for arrays.
31864
31865 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31866
31867         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
31868         decode a single column from a row in a metadata table and changes
31869         to take advantage of it in the typedef locator (gives a nice speed up).
31870         Store offset info for function params.
31871
31872 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
31873
31874         * image.h (MONO_IMAGE_IS_CORLIB): removed 
31875
31876 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
31877
31878         * assembly.c: how could mono_assembly_close () had ever worked?
31879         * metadata.c, metadata.h: provide offset info for local vars.
31880         Implement mono_type_size () to take care of alignment as well
31881         as size (it was mono_field_type_size in cli/class.c before).
31882
31883 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
31884
31885         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
31886
31887         * assembly.h (CORLIB_NAME): set to corlib.dll
31888
31889         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
31890
31891 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31892
31893         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
31894         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
31895         tokentype.h: massive namespace cleanup.
31896
31897 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31898
31899         * metadata.h, metadata.c: decode exception clauses when parsing method header.
31900
31901 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
31902
31903         * metadata.c (mono_metadata_free_type): added check for type !=
31904         NULL (void) before calling mono_metadata_free_type()
31905
31906 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
31907
31908         * metadata.h, row_indexes.h: added header with enumerations to use
31909         to index in the columns from tables in metadata and to decode coded
31910         tokens: we should start using this instead of embedding magic numbers
31911         all over the code.
31912
31913 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
31914
31915         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
31916         Move metadata_t info from cli_image_info_t to MonoImage, where
31917         it's easily accessible. Changed all the uses accordingly.
31918         Added the method and class caches to MonoImage.
31919         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
31920         and mono_metadata_decode_value () signature to be more consistent
31921         with the other parse functions (and simplify code). Taken advantage
31922         of zero-length array allocation with GCC. Removed reduntant (and
31923         wrong) MonoFieldType struct and use MonoParam instead. Changed
31924         mono_metadata_parse_field_type () to use common code for parsing.
31925         Added mono_metadata_typedef_from_field () and
31926         mono_metadata_typedef_from_method () to lookup a typedef index from a
31927         field or method token.
31928         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
31929
31930 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
31931
31932         * metadata.c (mono_metadata_parse_field_type): Implement. 
31933         (do_mono_metadata_parse_type): Split engine from
31934         mono_metadata_parse_type, so that we can create smaller structures
31935         for things that just have one pointer to the MonoType (look at
31936         the MonoFieldType)
31937
31938 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
31939
31940         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
31941         as Jan Gray found out, it is incorrect. 
31942
31943 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
31944
31945         * assembly.c: Implement asssembly loading.  This loads an image
31946         and loads all the referenced assemblies.  Come to think of it, we
31947         could always do lazy loading of the assemblies. 
31948
31949         * image.c (mono_image_open): Keep loaded images in a hashtable.
31950
31951         * image.h (MonoImage): Add reference count.
31952
31953 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
31954
31955         * assembly.c (mono_assembly_open): Keep track of the file name in
31956         case the assembly has no ASSEMBLY table.
31957
31958         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
31959         from get.c here.
31960
31961 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
31962
31963         * metadata.c, metadata.h: decode local vars in method header
31964         parse function. Change callers accordingly.
31965
31966 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
31967
31968         * metadata.h, cil-coff.h: protect against multiple inclusion.
31969         Added some new structures to hold information decoded from metadata:
31970         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
31971         and relevant decoding/free functions.
31972         * metadata.c: implement decoding functions. Add warning for out of bounds
31973         index in mono_metadata_locate(). Implement mono_get_method () to retreive
31974         all the info about a method signature and invocation. Remove check on
31975         uninitialized local var in parse_mh() and fix memory leak.
31976
31977 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
31978
31979         * metadata.h: More macros.
31980
31981         * tokentype.h: New file.
31982
31983 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
31984
31985         * assembly.c: added a consistency check and initialize
31986         some structures with g_new0().
31987         * metadata.c: fixed a couple more bugs in table size computation
31988         and add other checks for out-of bound access to metadata.
31989
31990 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
31991
31992         * metatada.c: fix bugs computing table sizes. Spew a
31993         warning when index in string heap is out of bounds.
31994
31995 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
31996
31997         * metadata.h: Add a couple of macros to manipulate tokens. 
31998
31999 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
32000
32001         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
32002         cli_section_tables).
32003
32004 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
32005
32006         * metadata.c (mono_metadata_user_string): New function, provides
32007         access to the UserString heap. 
32008
32009 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
32010
32011         * metadata.c: Add inline documentation.
32012
32013 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
32014
32015         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
32016         files. 
32017
32018 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
32019
32020         * typeattr.h: New file, TypeAttribute flags. 
32021
32022 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
32023
32024         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
32025         mono_assembly_ensure_section): Section loading code.
32026         (load_section_tables): Load the sections.
32027
32028         * mono/metadata/metadata.c (mono_metadata_locate_token,
32029         mono_metadata_locate): Functions to locate the information
32030         definition given a token or a table and an index.
32031         (mono_metadata_compute_table_bases): New.
32032         (compute_size): New function to compute the sizes of the various
32033         tables.
32034
32035         * mono/metadata/metadata.h: Finish listing the different index
32036         types. 
32037
32038         * mono/metadata/pedump.c: Improve to dump new information.
32039
32040 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
32041
32042         * mono/metadata/metadata.c: Entered all the tables matching
32043         Beta2. 
32044
32045         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
32046
32047
32048
32049