2008-12-23 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         Backport of r122035.
4
5         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
6         return value.
7  
8         Fixes #461867.
9
10 2008-12-19  Mark Probst  <mark.probst@gmail.com>
11
12         Backport of r121292.
13
14         * metadata/generic-sharing.c: Look for constraints in all type
15         arguments, not just the first one.
16
17 2008-12-17  Geoff Norton  <gnorton@novell.com>
18
19         * threadpool.c: Ensure that the io_queue_lock is initialized
20         in all circumstances, as we always attempt to cleanup against it.
21
22 2008-12-17  Miguel de Icaza  <miguel@novell.com>
23
24         * icall.c (ves_icall_System_Environment_get_Platform): For
25         compatibility reasons for existing client code we will keep
26         returning 4 for a while.   
27
28         For how long will depend on the documentation being updated, and
29         for us to give client code a chance to be updated.
30
31         This reverts the original decison on #433108 since we did not
32         catch roughly 33 instances of the broken code in our own source
33         code base, we did not catch failures on the buildbots, and QA did
34         not bring this as a problem.
35
36         Only today I found some customer's code breaking due to our own
37         class libraries not being fully updated and tracked it down to
38         this change.  I am reverting it because if we could not even get
39         our story straight in our own code base, how can we hope that our
40         end user code be fixed?
41
42         As of this morning, our Wiki page that documents how to detect
43         Unix had not been fixed.    
44
45 2008-12-05  Marek Habersack  <mhabersack@novell.com>
46
47         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
48         (3) functions are present in the C library use them to do the
49         job. If they are absent, make sure that the sum of int_part and
50         dec_part is rounded before returning. This is necessary due to the
51         division of dec_part by the power of 10 before the final addition
52         is performed - if the result is not rounded in some cases it will
53         yield invalid results.
54
55 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
56
57         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
58         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
59         instruction instead of a pointer constant.
60
61 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
62
63         * pedump.c: initialize perf. counters. Fixes a segv.
64
65 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
66
67         * icall.c (mono_method_get_equivalent_method): Make sure
68         method->klass->methods is inited before looping over it.
69
70         Backported from trunk.
71
72 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
73
74         Backport of r119397.
75         
76         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
77         Fixes #444715. Fix a warning.
78
79 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
80
81         Backport of 119064 and 119081.
82
83         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
84           free threaded marshaler when QueryInterface is called on a COM callable
85           wrapper requesting the IMarshal interface.
86
87         Code is contributed under MIT/X11 license.
88
89 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
90
91         Backport of r118724.
92
93         * process.h : Adding method declaration for
94           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
95           
96         * process.c : Adding implementation for
97           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
98           
99         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
100           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
101
102         Code is contributed under MIT/X11 license.
103
104 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
105
106         * appdomain.c (unload_thread_main): Clean up threadpool by
107         calling mono_thread_pool_remove_domain_jobs.
108
109         * domain-internals.h (struct _MonoDomain): Add new fields to
110         help coordinate the cleanup of the threadpool.
111
112         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
113         that cleans up the threadpool of all jobs associated with an appdomain.
114         It does that by cleaning up the queues and making sure all active
115         threads are accounted.
116
117         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
118         unloaded or in the process of. Take this is such way that there is
119         no race condition between another thread starting the unload and the
120         current thread acknowledging it.
121
122         * threadpool.c (async_invoke_thread): Same.
123
124         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
125         firing the new thread.
126
127         * threadpool.c (start_tpthread): Same.
128
129         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
130
131         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
132
133 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
134
135         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
136         Add support for DuplicateHandle.
137         
138         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
139         Add support for DuplicateHandle.
140         
141         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
142         Add support for DuplicateHandle.
143
144         Code is contributed under MIT/X11 license.
145
146 2008-11-06  Mark Probst  <mark.probst@gmail.com>
147
148         * class-internals.h: Make min_align into a whole byte.
149
150         * class.c: Set min_align for SIMD types to 16.
151
152 2008-11-05  Geoff Norton  <gnorton@novell.com>
153
154         * attach.c: Default the attacher to enabled for all cases including
155         embedded.
156
157 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
158
159         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
160         change r117650.
161
162 2008-11-04  Mark Probst  <mark.probst@gmail.com>
163
164         * monitor.c, monitor.h: New function for querying offsets of
165         members of MonoThreadsSync.
166
167 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
168
169         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
170         to speed up this function and to avoid the boundless memory growth caused by
171         the signature_dup () calls.
172
173 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
174
175         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
176         wrapper.
177
178         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
179         by 1 bit.
180
181         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
182
183 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
184
185         * appdomain.c:
186         * domain-internals.h: made mono_set_private_bin_path_from_config()
187         "internal".
188         * object.c: call the above function after setting the configuration
189         file path for the root domain.
190         Fixes bug #314478.
191
192 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
193
194         * assembly.c: when the assembly is loaded from an absolute path, end
195         basedir with a directory separator.
196         Bug #440781 fixed.
197
198 2008-10-30  Mark Probst  <mark.probst@gmail.com>
199
200         * monitor.c (mono_monitor_get_fast_enter_method): If
201         CompareExchange is not available, don't create the fastpath
202         instead of asserting.  (The method is missing in the 1.1 profile.)
203
204 2008-10-30  Mark Probst  <mark.probst@gmail.com>
205
206         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
207
208         * monitor.c, monitor.h: Code for generating Monitor.Enter and
209         Monitor.Exit IL fastpaths.
210
211 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
212
213         * class.c (mono_class_create_from_typedef): Added Vector2ul.
214
215 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
216
217         * class.c (mono_class_create_from_typedef): Added Vector2l.
218
219 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
220
221         * class.c (mono_class_create_from_typedef): Added Vector2d.
222
223 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
224
225         * appdomain.c: translate \ into / for cache_path.
226         * domain-internals.h: new mono_is_shadow_copy_enabled().
227         * icall.c: (fill_reflection_assembly_name) do the same path
228         manipulations that get_code_base does.
229         (get_code_base) use mono_is_shadow_copy_enabled.
230
231 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
232
233         * appdomain.c: shadow-copied assemblies go to CachePath +
234         ApplicationName when both are set. DynamicBase has nothing to do with
235         shadow copies.
236         Bug #406877 fixed.
237
238 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
239
240         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
241         STANDALONESIG table.
242
243         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
244         standalone signatures.
245
246         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
247         comparison code: instead of comparing the signatures using a custom
248         equals function, transform them to a common signature and compare that. This
249         works better with AOT.
250
251 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
252
253         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
254
255         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
256         call for generic instances.
257         (mono_class_setup_properties): Call setup_properties () before accessing
258         gklass->properties.
259
260         * class.c (mono_class_get_virtual_methods): New helper function to iterate
261         over the virtual methods of a class using metadata if possible, avoiding the
262         creation of MonoMethod's for non-virtual methods.
263         
264         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
265         get_virtual_methods () to iterate over the virtual methods of classes.
266
267 2008-10-25  Martin Baulig  <martin@ximian.com>
268
269         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
270
271 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
272
273         * class.c (mono_class_create_from_typedef): Added Vector4i.
274
275 2008-10-24  Mark Probst  <mark.probst@gmail.com>
276
277         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
278         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
279         special-casing applies to eliminate the call completely.
280
281 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
282
283         * class.c (mono_class_create_from_typedef): Added Vector8s.
284
285 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
286
287         * class.c (mono_class_create_from_typedef): Added Vector16sb.
288
289 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
290
291         * icall.c: get rid of annoying warning.
292
293 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
294
295         * threadpool.c: in 1.x, if you change the background status of the
296         threadpool thread, it's not reset.
297         Remove unnecessary calls to SetState.
298
299 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
300
301         * threadpool.c: asynchronously create a set of idle threads upon first
302         use of the threadpool. SetMinThreads will now start the appropriate
303         number of idle threads if they are not already running. The default is
304         1 threadpool thread per CPU. Increased the maximum number of threads
305         per CPU to 10.
306
307 2008-10-22  Martin Baulig  <martin@ximian.com>
308
309         Revert r116521 from Zoltan, it breaks the debugger:
310
311         * class.c (mono_class_get_virtual_methods): New helper function to iterate
312         over the virtual methods of a class using metadata if possible, avoiding the
313         creation of MonoMethod's for non-virtual methods.
314         
315         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
316         get_virtual_methods () to iterate over the virtual methods of classes.
317
318 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
319
320         * threads.c: when creating a threadpool thread, set its state to
321         'background'.
322         * threadpool.c: reset the background state of a threadpool thread
323         after finishing each work item
324         Bug #437888 fixed.
325
326 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
327
328         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
329         
330         * class.c (mono_class_setup_vtable_general): Add an optimized version for
331         generic instances which works by inflating the methods in the container
332         class's vtable.
333
334         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
335         variant which doesn't make a copy if no inflation was done.
336         (mono_class_setup_fields): Use it.
337
338         * metadata.c (mono_metadata_get_shared_type): New helper function to
339         return a shared instance of a given MonoType.
340
341         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
342         a copy of most non-generic types.
343
344 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
345
346         * threadpool.c: remove one more GetSystemInfo () call.
347
348 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
349
350         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
351         use the code in mono-proclib.h to get processor information.
352
353 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
354
355         * appdomain.c: fixed the logic that determines whether assemblies in a
356         directory are "shadow-copied" or not. Bug #433483 fixed.
357
358 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
359
360         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
361         warning.
362
363 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
364
365         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
366         returning a vtype.
367
368         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
369         reflection.c: Use mono_field_get_name () for accessing a field's name.
370
371         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
372         class.c
373
374         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
375         field.
376
377         * loader.c (find_method_in_class): Reenable the metadata optimization by
378         not using it for generic instances.
379
380         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
381         data/def_type fields from MonoClassField into a separate structure.
382         (struct MonoClassField): Remove data/def_type fields.
383         (struct _MonoClass): Add a 'field_def_values' array to store the default
384         values/RVA for fields.
385
386         * class.c reflection.c: Update after the changes.
387         
388         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
389         for accessing field->data.
390
391         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
392
393         * loader.c (find_method_in_class): Revert the last change for now as
394         it breaks Mono.C5 unit tests.
395
396         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
397         'field_generic_types' and 'field_objects' which contain the information
398         previously stored in MonoInflatedField.
399         (MonoInflatedField): Delete.
400         (struct _MonoClassField): Delete 'generic_info' field.
401
402         * reflection.c: Store the information which was previously in 
403         field->generic_info in MonoDynamicGenericClass instead.
404
405         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
406         MonoClassField changes.
407
408 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
409
410         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
411         store the value inside the data array of the MonoMethodWrapper.
412         This saves memory, is faster and fixes the lifetime issues (methods
413         were never removed from the hash previously). May also fix bug#436996.
414
415 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
416
417         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
418         generic instances, compute the type from the generic definition instead of
419         looking in field->generic_info.
420
421         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
422         for inflated fields, the only user was get_fieldref_token () which no
423         longer needs it.
424
425         * class.c (mono_class_init): Revert the last change as it seems to cause
426         crashes.
427
428         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
429         bytes on 64 bit platforms.
430
431         * object.c (mono_class_create_runtime_vtable): Fix a warning.
432         
433         * object.c (mono_class_create_runtime_vtable): Don't initalize
434         field->data/field->def_type here, it is done lazily by 
435         mono_class_get_field_default_value ().
436
437         * icall.c (ves_icall_get_enum_info): Call 
438         mono_class_get_field_default_value () instead of directly accessing
439         field->data and field->def_type.
440
441         * object.c (get_default_field_value): Ditto.
442
443         * class.c (mono_field_get_data): Ditto.
444         
445         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
446         call for generic instances.
447
448         * loader.c (find_method_in_class): If klass != from_class, then inflate
449         the method with the context of from_class, since the caller assumes this.
450
451 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
452
453         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
454         for accessing method->slot.
455
456 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
457
458         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
459
460 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
461
462         * class.c (mono_method_get_vtable_index): Use
463         mono_method_get_vtable_slot () for accessing method->slot.
464
465         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
466         accessing klass->methods.
467
468         * class.c (mono_method_get_vtable_slot): New helper function.
469         (mono_class_get_vtable_entry): Ditto.
470         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
471         accessing method->slot.
472
473         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
474         method to get_inflated_method ().
475
476         * class.c (mono_class_get_inflated_method): New helper method to obtain
477         a method of an inflated class without calling setup_methods ().
478         (mono_class_get_cctor): Use get_inflated_method.
479
480         * generic-sharing.c (mono_class_get_method_generic): Ditto.
481         
482         * marshal.c image.c: Lazily create all the marshal caches.
483
484         * image.c (mono_image_init): Move initialization of runtime_invoke
485         caches to marshal.c.
486
487         * marshal.c (get_cache): New helper function to lazily initialize a 
488         wrapper cache.
489         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
490
491         * debug-helpers.c (mono_method_full_name): Include generic arguments.
492
493 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
494
495         * loader.c: fixed check for interface type.
496
497 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
498
499         * appdomain.c: check for NULL setup before it's referenced.
500
501 p
502 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
503
504         * class.c: remove the unused old vtable setup code.
505
506 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
507
508         * class.c: don't depend on interface order in
509         setup_interface_offsets (bug #435777).
510         * reflection.c: sort the InterfaceImpl table (patch from
511         Jb Evain  <jbevain@novell.com>).
512
513 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
514
515         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
516         the low level assemblies lock.
517
518 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
519
520         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
521         object.c, reflection.c, socket-io.c, threads.c: introduced
522         mono_framework_version () to return the major framewrok version,
523         changed the code that was using more complex patterns to use it.
524         Return the correct value for PlatformID for OSX.
525
526 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
527
528         * icall-def.h, process.h, process.c: added an icall to get info about
529         processes using mono-proclib.
530
531 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
532
533         * mono-perfcounters.c: use the mono-proclib functions to
534         access process information.
535
536 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
537
538         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
539         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
540         reflection.c: remove rawbuffer usage: mmap support is more sanely
541         provided by utils/mono-mmap.
542
543 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
544
545         * gc.c: use posix semaphores when possible so that
546         mono_gc_finalize_notify() is signal safe.
547
548 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
549
550         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
551         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
552         be #ifdef-ed out, the linker will remove the rest.
553
554         * marshal.c: Implement DISABLE_COM.
555
556         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
557
558 2008-10-11  Miguel de Icaza  <miguel@novell.com>
559
560         * locales.c (string_invariant_compare_char): Optimization: do not
561         call g_unichar_type unless we actually need the information.
562
563 2008-10-10  Mark Probst  <mark.probst@gmail.com>
564
565         * object.c, class-internals.h: Also create remoting trampolines
566         for generic methods.  Pass the domain to the remoting trampoline
567         creation function, too.
568
569 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
570
571         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
572
573 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
574
575         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
576         Vector4ui.
577
578 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
579
580         * assembly.c:
581         * locales.c: remove the use of g_strdown. Fixes bug #322313.
582
583 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
584
585         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
586         for the least possible amount of time (extending the fix in r113458).
587
588 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
589
590         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
591
592 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
593
594         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
595         as possible simd intrinsic types.
596         Optimized the test to check for the common prefix first.
597
598 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
599
600         * class.c: back out part of a broken optimization committed on
601         May 23th (bug #433908).
602
603 2008-10-09  Mark Probst  <mark.probst@gmail.com>
604
605         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
606         Win32.  Should fix #432388 for most cases until we have the new
607         profiler on Win32.
608
609 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
610
611         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
612         instead of using inst->id so the hash is stable for AOT.
613
614 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
615
616         * appdomain.c:
617         * icall.c: create a .ini file for shadow-copied assemblies that
618         contains the location of the original assembly. Use this to return the
619         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
620         Also fix the number of '/' for windows when returning the CodeBase.
621         Fixes bug #430920.
622
623 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
624
625         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
626
627         Code is contributed under MIT/X11 license.
628
629 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
630
631         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
632           if if the class vtable needs initialized.
633
634         Code is contributed under MIT/X11 license.
635
636 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
637
638         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
639           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
640           STRING->BSTR, and CLASS->INTERFACE.
641
642         Code is contributed under MIT/X11 license.
643
644 2008-10-07  Marek Habersack  <mhabersack@novell.com>
645
646         * sysmath.h: changed the declaration of the
647         ves_icall_System_Math_Round2 icall by adding an extra
648         away_from_zero parameter.
649
650         * sysmath.c (ves_icall_System_Math_Round2): added support for
651         away from zero rounding. The icall now takes an extra boolean
652         parameter to signal that away from zero operation is requested.
653
654 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
655
656         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
657         the delegate klass so it can work with full-aot.
658         (mono_marshal_get_delegate_end_invoke): Ditto.
659         (mono_marshal_get_delegate_invoke): Ditto.
660
661 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
662
663         * gc.c, attach.h, attach.c: remove a bad pattern:
664         add_finalizer_callback () is not implemented correctly, it can't
665         without adding more overhead to the finalizer loop and it's not
666         even needed, since we know exactly what we need to call, so there is
667         no need to do so through an expensive function pointer.
668
669 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
670
671         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
672         for the no-gc case.
673         * attach.c (mono_attach_init): Remove the #ifdef.
674
675 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
676
677         * attach.c (mono_attach_init): Don't use
678         mono_gc_add_finalizer_thread_callback when compiling without GC.
679         Fixes #432306.
680         
681         Code is contributed under MIT/X11 license.
682
683 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
684
685         * class.c (mono_class_create_from_typedef): Remove the 
686         #ifndef DISABLE_SIMD stuff.
687
688 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
689
690         * class-internals.h (MonoClass): Added simd_type bit field.
691
692         * class.c (mono_class_create_from_typedef): Check if type is a simd
693         intrinsic.
694
695 2008-10-03  Mark Probst  <mark.probst@gmail.com>
696
697         * object.c (mono_method_add_generic_virtual_invocation): Only add
698         instantiations to the thunk whose count is at least as large as
699         the threshold.
700
701 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
702
703         * icall.c: changed the Type of the exception thrown when trying to
704         invoke a constructor on an abstract class. Part of the fix for bug
705         #324185.
706
707 2008-10-02  Mark Probst  <mark.probst@gmail.com>
708
709         * class.c, class-internals.h (mono_method_get_vtable_index): New
710         function which returns the index into the vtable and properly
711         handles inflated virtual generic methods.
712
713 2008-10-01  Mark Probst  <mark.probst@gmail.com>
714
715         * object.c, domain.c, object-internals.h, domain-internals.h:
716         Generalize IMT thunk machinery to also handle thunks for virtual
717         generic method invokes.  When a virtual generic method is invoked
718         more than a number of times we insert it into the thunk so that it
719         can be called without lookup in unmanaged code.
720
721         * generic-sharing.c, class-internals.h: Fetching a
722         MonoGenericInst* for a method from an (M)RGCTX.
723
724 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
725
726         * marshal.c (emit_marshal_string): Applied a variant of a patch by
727         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
728         marshalling. Fixes #431304.
729
730 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
731
732         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
733           handle when ref is specified without In or Out.
734
735         Code is contributed under MIT/X11 license.
736
737 2008-09-30  Mark Probst  <mark.probst@gmail.com>
738
739         * loader.c (mono_get_method_constrained): Don't expand method with
740         the class's context, because it's already a method of that class.
741
742 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
743
744         * attach.c : should be correct build fix.
745
746 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
747
748         * attach.c: Fix the previous change.
749
750 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
751
752         * attach.c : quick w32 build fix.
753
754 2008-09-27  Miguel de Icaza  <miguel@novell.com>
755
756         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
757         crashes MonoDevelop: #430455.
758
759 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
760
761         * domain-internals.h (struct _MonoDomain): Move most fields used only by
762         the JIT do MonoJitDomainInfo in ../mini/mini.h.
763
764         * domain.c: Remove initialization/cleanup of the removed fields.
765
766 2008-09-27  Mark Probst  <mark.probst@gmail.com>
767
768         * class.c (mono_class_generic_sharing_enabled): Enable generic
769         code sharing for PPC.
770
771 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
772
773         * attach.c : Fixing the Windows builds.
774
775         Code is contributed under MIT/X11 license.
776
777 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
778
779         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
780         the default generic sharing mode to 'all'.
781
782 2008-09-25  Mark Probst  <mark.probst@gmail.com>
783
784         * generic-sharing.c, class-internals.h: New function for checking
785         whether a method needs a static RGCTX invoke wrapper.  A few
786         funtions moved from mini/generic-sharing.c.
787
788         * icall.c: New function used.
789
790 2008-09-25  Mark Probst  <mark.probst@gmail.com>
791
792         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
793         Static RGCTX invoke wrapping applies to value type methods, too.
794
795         * class.c (mono_class_setup_vtable_general): In generic-shared
796         value types, wrap methods with a static RGCTX invoke wrapper.
797
798 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
799
800         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
801         osx build.
802
803 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
804
805         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
806         register a callback which is called when the finalizer thread is woken
807         up.
808         (finalizer_thread): Call the callback if it exists.
809
810         * attach.h attach.c: New files, implementing the attach mechanism.
811
812         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
813         
814         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
815         by the previous change.
816
817 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
818
819         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
820         loader.c, marshal.c, metadata-internals.h, metadata.c,
821         method-builder.c, object.c, reflection.c: introduced specific functions
822         to allocate from the domain and image mempools and cleaned up most of
823         the code to use them (still missing a few in reflection.c).
824         Keep the loader bytes counter updated.
825
826 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
827
828         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
829         loader-related counters.
830
831 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
832
833         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
834         added more MS-compatible counters.
835
836 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
837
838         * class.c (mono_class_setup_fields): Call setup_fields before accessing
839         class->blittable. Fixes #428217.
840
841 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
842
843         * reflection.c (mono_image_get_field_on_inst_token): Call 
844         field_encode_signature () since that handles custom modifiers too.
845         Fixes #424663.
846
847 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
848
849         * reflection.c (add_custom_modifiers): New helper function to merge custom
850         modifiers stored in objects to a MonoType.
851         (fieldref_encode_signature): Encode custom modifiers.
852         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
853         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
854
855 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
856
857         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
858         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
859         64-bit IL only images because imports are not resolved for IL only images.
860         Special thanks to Bill Holmes for finding this bug and testing the patch.
861         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
862
863         Contributed under MIT/X11 license.
864
865 2008-09-19  Miguel de Icaza  <miguel@novell.com>
866
867         * mono-config.c (dllmap_start): Add support for the bits keyword
868         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
869
870 2008-09-19  Mark Probst  <mark.probst@gmail.com>
871
872         * reflection.c (inflate_mono_method): When the class the method is
873         to be inflated for is itself not inflated, just return the method.
874
875 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
876
877         * mono-perfcounters.c: use more user friendly process instance names.
878
879 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
880
881         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
882           handle "[in] ref" and "[in][out] ref" cases.
883
884         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
885           to mono_mb_create_method.  This was causing problems calling native to
886           managed passing Variants by value.
887
888         Code is contributed under MIT/X11 license.
889
890 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
891
892         * class.c (can_access_internals): Call mono_assembly_load_friends ()
893         before accessing the friend_assembly_names field.
894
895         * assembly.c (mono_assembly_load_friends): Make this callable multiple
896         times.
897         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
898         called lazily when it is needed.
899
900         * metadata-internals.h (struct _MonoAssembly): Add 
901         'friend_assembly_names_inited' flag.
902
903 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
904
905         * mono-perfcounters-def.h: fix the types of a few counters.
906         * mono-perfcounters.c: implemented the instance names getter
907         and a few bugfixes.
908
909 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
910
911         * culture-info-table.h : regenerated.
912
913 2008-09-17  Robert Jordan  <robertj@gmx.net>
914
915         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
916         context bound objects. Fixes #415577.
917
918         Code is contributed under MIT/X11 license.
919
920 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
921
922         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
923         implementation (bug #423582).
924
925 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
926
927         * object.c (mono_object_get_virtual_method): Handle the case method->slot
928         is not set. Fixes #426309.
929
930 2008-09-16  Jb Evain  <jbevain@novell.com>
931
932         * class.c (mono_class_from_name): fix the exported type look up
933         when the type is defined in a referenced assembly.
934
935 2008-09-16  Jb Evain  <jbevain@novell.com>
936
937         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
938         increment the next index counter on each iteration to make that work
939         for more than one type forwarder. Unmanaged part to fix #422929.
940
941 2008-09-15  Mark Probst  <mark.probst@gmail.com>
942
943         * object-internals.h: enum ComInterfaceType in
944         MonoInterfaceTypeAttribute is guint32, not guint16.
945
946 2008-09-12  Mark Probst  <mark.probst@gmail.com>
947
948         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
949         writing code.
950
951 2008-09-11  Mark Probst  <mark.probst@gmail.com>
952
953         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
954         not gboolean.
955
956 2008-09-11  Mark Probst  <mark.probst@gmail.com>
957
958         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
959         Endianness fixes for MonoSymbolFileOffsetTable.
960
961 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
962
963         * process.c (complete_path) : Removing quotes from the 
964           input path.  The glib file routines do not handle file paths
965           that have quotes around them.
966
967         Code is contributed under MIT/X11 license.
968
969 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
970
971         * socket-io.h : Adding a comment to provide locations where 
972           changes to MonoSocketAsyncResult need to be synced.
973
974         Code is contributed under MIT/X11 license.
975
976 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
977
978         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
979         parameters as well. Fixes #425001.
980
981 2008-09-08  Miguel de Icaza  <miguel@novell.com>
982
983         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
984         windows build.
985
986 2008-09-07  Miguel de Icaza  <miguel@novell.com>
987
988         * console-io.c: Add support for tracking the window size if it
989         changes.
990
991         The setup is very simple: the TtySetup function will now return a
992         pointer to a location in memory that tracks the current console
993         size.  The managed code checks its current value every time its
994         queried against the last value set, and updates accordingly.
995
996         With this setup we can work with multiple consoles, and we do not
997         require to poke into managed code from a signal handler.
998
999         Additionally, the environment for COLUMNS and LINES is now handled
1000         in unmanaged code.
1001
1002         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
1003
1004 2008-09-07  Mark Probst  <mark.probst@gmail.com>
1005
1006         * marshal.c (mono_type_native_stack_size): Treat
1007         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
1008
1009 2008-09-04  Jb Evain  <jbevain@novell.com>
1010
1011         * class.c (mono_class_is_assignable_from): fix assignability of nullables
1012         to nullables.
1013
1014 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
1015
1016         * verify.c (verify_type_compatibility_full): Revert change
1017         to allow converting a native int to unmanaged pointer be verifiable
1018         under non-strict mode.
1019         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
1020
1021         * verify.c: Added some TODOs.
1022
1023 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
1024
1025         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
1026           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
1027           Changed to use GlobalAlloc for the memory returned on Windows platforms.
1028
1029         Code is contributed under MIT/X11 license.
1030
1031 2008-09-02  Jb Evain  <jbevain@novell.com>
1032
1033         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
1034
1035 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
1036
1037         reflection.c (typebuilder_setup_fields): Handle classes with
1038         explicit size.
1039
1040 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
1041
1042         class.c (mono_class_setup_events): Add memory barrier due to
1043         double checked locking.
1044         
1045         class.c (mono_class_setup_properties): Same.
1046
1047 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * class.c (mono_class_is_assignable_from): Fix the build.
1050         
1051         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
1052         before accessing klass->interface_bitmap. Fixes #421744.
1053
1054 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
1055
1056         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
1057         the runtime into no-exec mode, useful when running the AOT compiler.
1058
1059         * appdomain.c gc.c object.c: Avoid executing managed code when running
1060         in no-exec mode.
1061         
1062         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
1063
1064         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
1065         special case when the mono_assembly_loaded () returns NULL because the 
1066         search hook is not installed.
1067
1068 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
1071         crashes in bstr marshalling on linux.
1072
1073 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
1076         with more than one parameter.
1077
1078 2008-08-24  Miguel de Icaza  <miguel@novell.com>
1079
1080         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
1081         start/stop flow control as well when turning off ICANON (allows
1082         C-s and C-q to be read by Console.ReadKey).
1083
1084 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
1085
1086         * class.c (mono_class_init): Move the initialization of nested classes
1087         into mono_class_get_nested_types (). Fixes #418433.
1088
1089         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
1090         flag.
1091
1092         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
1093         iterating tough the nested classes of a class.
1094
1095 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
1098         on arm.
1099
1100 2008-08-22  Miguel de Icaza  <miguel@novell.com>
1101
1102         * console-io.c (sigcont_handler): Support signal chaining for
1103         SIGCONT.
1104
1105         (console_set_signal_handlers): Use best practices with sigaction,
1106         clear the structure before using it. 
1107
1108 2008-08-22  Robert Jordan  <robertj@gmx.net>
1109
1110         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
1111         Fix the Windows build.
1112
1113 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * class.c (mono_class_generic_sharing_enabled): Make the default
1116         sharing mode 'corlib'.
1117
1118 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * console-io.c (console_set_signal_handlers): Fix a warning.
1121
1122         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
1123         method normally, the JIT will take care of avoiding recursion.
1124
1125 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
1126
1127         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
1128
1129         Code is contributed under MIT/X11 license.
1130
1131 2008-08-20  Miguel de Icaza  <miguel@novell.com>
1132
1133         * console-io.c (sigcont_handler): We need to restore the entire
1134         termios state, not only the original settings, as things like echo
1135         can be controlled after this (Booish exposes this issue with its
1136         own ReadLine implementation).
1137
1138         Additionally, we need to set the terminal back into keypad_xmit
1139         mode.
1140         
1141         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
1142         string as a paramter as well.   Otherwise we get different
1143         keyboard sequences.
1144
1145 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
1146
1147         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
1148         delegates with byref out parameter passing. Fixes #351520.
1149
1150         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
1151         a generic context.
1152         (mono_type_get_desc): Add the type arguments for GENERICINST.
1153         (mono_method_full_name): Stringify the class name using mono_type_full_name
1154         so it picks up generic arguments.
1155
1156 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
1157
1158         * console-io.c: Removed debug output.
1159
1160 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
1161
1162         reflection.c (mono_reflection_create_runtime_class): Alloc
1163         the nested classes linked list using the dynamic image mempool.
1164         Fixes leak in corlib compilation.
1165
1166 2008-08-19  Miguel de Icaza  <miguel@novell.com>
1167
1168         * console-io.c: Fix incredibly annoying behavior on the console
1169         after resuming execution after control-z.   This affected every
1170         console application.
1171
1172 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
1173
1174         * mempool-internals.h: Header for mono private mempool functions. The first
1175         two function are for allocating glib linked lists using pools.
1176
1177         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
1178
1179         * Makefile.am: Added mempool-internals.h.
1180
1181 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
1184         (mono_domain_free): Ditto.
1185
1186         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
1187         be used by the JIT to store its domain-specific information, instead of putting
1188         it directly into MonoDomain.
1189
1190         * domain.c (mono_install_create_domain_hook): New helper function to install
1191         a hook which initializes domain->runtime_info.
1192
1193         * domain.c (mono_install_free_domain_hook): Ditto.
1194         
1195 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
1198         asserting if the ares parameter is null.
1199
1200         * mono-perfcounters.c: Fix warnings.
1201
1202         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
1203         is not needed, don't check for interruptions either.
1204         (mono_marshal_get_delegate_end_invoke): Ditto.
1205
1206 2008-08-15  Marek Habersack  <mhabersack@novell.com>
1207
1208         * mono-perfcounters.c (predef_readonly_counter): added support for
1209         reading the ASP.NET Requests Queued counter from another process.
1210
1211 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
1212
1213         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
1214         MonoImage to simplify the AOT code.
1215
1216 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
1217
1218         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
1219         marshalling. Fixes #416078.
1220
1221 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
1222         
1223         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
1224         it is set, looking up the icall address is deferred to the JIT, since 
1225         in embedded scenarios, the icall might not be registered in the runtime
1226         doing the AOT compilation. Backported from the 2.0 branch.
1227
1228 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
1231         Fixes #415621.
1232
1233 2008-08-05  Marek Habersack  <mhabersack@novell.com>
1234
1235         * Makefile.am: added support for cross-compilation.
1236
1237 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
1238
1239         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
1240
1241 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
1242
1243         * mono-perfcounters.c: jitted methods and jitted bytes counters.
1244
1245 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
1246
1247         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
1248         mono-perfcounters.c: performance counters implementation.
1249
1250 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
1251
1252         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
1253         to gpointer, letting the AOT code decide what to store in it.
1254
1255 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
1256
1257         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
1258           mono_class_setup_methods if the methods are not initialized.
1259
1260         Code is contributed under MIT/X11 license.
1261
1262 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
1263
1264         * verify.c: Remove some debug code I commited by accident.
1265
1266         * verify.c (mono_method_is_valid_in_context): Change the return value
1267         to make possible to distinguish between invalid and unverifiable.
1268
1269         * verify.c (verifier_load_method): Don't return NULL for unverifiable
1270         methods.
1271
1272 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
1273
1274         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
1275         constraints. Fixes regression in gtest-253.
1276
1277 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
1278
1279         * verify.c (mono_verifier_verify_class): Don't allow generic types
1280         with explicit layout.
1281
1282         * verify.c (mono_method_verify): Check locals and argument types.
1283
1284 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
1287         wait if the thread is in StopRequested state.
1288
1289         * class.c (mono_class_from_name): Refactor the module searching code into
1290         a separate function so it can be reused in the AOT case too.
1291
1292 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
1293
1294         * verify.c (mono_type_is_valid_in_context): Improve the error message.
1295         Check both the type and it's generic type definition for loader errors.
1296         
1297         * verify.c (mono_method_is_valid_in_context): Don't generate another
1298         error when a type errors occur, this leads to the wrong exception been
1299         thrown.
1300
1301 2008-07-28  Dick Porter  <dick@ximian.com>
1302
1303         * icall-def.h
1304         * process.c
1305         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
1306         New internal calls to duplicate and close a process handle.
1307
1308 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
1309
1310         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
1311
1312 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
1313
1314         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
1315
1316 2008-07-27  Robert Jordan  <robertj@gmx.net>
1317
1318         * class.c (mono_class_init): Don't compute class.has_finalize for
1319         valuetypes. Fixes #412477.
1320
1321 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
1322
1323         * verify.c: Implement constraint equivalence checking.
1324         This is required when a generic parameter is used as
1325         argument to a constrained one.
1326
1327         Fixes #410637.
1328
1329 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
1330
1331         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1332
1333         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
1334
1335         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
1336         synch with managed object layout.
1337
1338 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
1339
1340         * verify.c (do_branch_op): Handle valuetypes and generic
1341         arguments properly.
1342
1343         * verify.c (do_cmp_op): Same.
1344
1345         Fixes #410383.
1346
1347 2008-07-24  Mark Probst  <mark.probst@gmail.com>
1348
1349         * generic-sharing.c: Fix memory leaks.
1350
1351         * class.c, class-internals.h: Make
1352         mono_class_inflate_generic_type_with_mempool() non-static.
1353
1354 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
1355
1356         * pedump.c (dump_verify_info): Dump full class name.
1357
1358 2008-07-24  Mark Probst  <mark.probst@gmail.com>
1359
1360         * generic-sharing.c: Removed some old code that didn't do anything.
1361
1362 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
1363         * profiler.c: Added runtime_initialized_event,
1364         mono_profiler_install_runtime_initialized and
1365         mono_profiler_runtime_initialized. This new hook tells the profiler
1366         when the runtime is sufficiently initialized to be able to call
1367         mono_thread_attach on the root appdomain.
1368         * profiler.h, profiler-private.h: Likewise.
1369
1370 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
1371
1372         * verify.c (do_cast): Do boxing for generic arguments as well.
1373
1374         * class.c (is_nesting_type): Drop generic instantiations before
1375         checking for nesting.
1376
1377         * class.c (can_access_instantiation): Allow access to generic
1378         arguments.
1379
1380 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
1381
1382         * verify.c (verify_class_for_overlapping_reference_fields):
1383         On some cases, the field size might be zero, guard against that.
1384         Fix the explicit layout check to work as expected.
1385
1386 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
1389         mono_thread_resume () during shutdown, since the thread we want to abort
1390         might be suspended.
1391
1392 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
1395         warning.
1396
1397         * debug-mono-symfile.c: Fix a warning.
1398
1399         * mono-perfcounters.c (get_cpu_times): Fix a warning.
1400
1401         * object.c (mono_class_vtable): Check if exception_type is set, and return
1402         NULL as defined by the function comments.
1403
1404 2008-07-22  Mark Probst  <mark.probst@gmail.com>
1405
1406         * mempool.c: Use malloc for every single mempool allocation if the
1407         configure option is set.  This makes it easier to track mempool
1408         allocations with tools like Valgrind.
1409
1410 2008-07-22  Jb Evain  <jbevain@novell.com>
1411
1412         * reflection.c (create_dynamic_mono_image): emit the same
1413         metadata version that SL2 does when creating a SL2 image.
1414
1415 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
1416
1417         * icall-def.h:
1418         * icall.c: New icall System.Enum:get_hashcode. This function
1419         avoids the overhead of boxing the enum to the underlying type.
1420
1421 2008-07-21  Mark Probst  <mark.probst@gmail.com>
1422
1423         * reflection.c (mono_method_get_object): Don't let static RGCTX
1424         invoke wrappers get into MonoReflectionMethods.
1425
1426 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
1427
1428         * object-internals.h:
1429         * object.c: New mono_runtime_class_init_full function
1430         that makes throwing the exception optinal.
1431
1432         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
1433         for the case where the exception object is supplied.
1434
1435 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
1436
1437         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
1438         old ld versions.
1439
1440         Contributed under MIT/X11 license.
1441
1442 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
1443
1444         * string-icalls.c (ves_icall_System_String_InternalSplit):
1445         Optimize array allocation by caching the MonoClass of the
1446         array type.
1447
1448         * icall.c (ves_icall_Type_GetMethodsByName): Same.
1449
1450         * reflection.c (mono_param_get_objects): Same.
1451
1452 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
1453
1454         * icall-def.h:
1455         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
1456         It inflates the given type using the class context.
1457
1458 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1459
1460         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
1461         the vtable if it already exists.
1462
1463         * object-internals.h: Add mono_class_try_get_vtable as part of the
1464         internal API.
1465
1466         * reflection.c (mono_type_get_object): Use the MonoObject from the
1467         vtable when possible. Reduces locking contention on reflection heavy
1468         code.
1469
1470 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
1471
1472         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
1473         g_bit_nth_msf () since that macro is not implemented in eglib.
1474
1475 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
1476
1477         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
1478         on platforms which do not support it.
1479
1480 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
1481
1482         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
1483
1484 2008-07-11  Martin Baulig  <martin@ximian.com>
1485
1486         * mono-debug-debugger.h
1487         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
1488
1489         * mono-debug-debugger.c
1490         (_mono_debugger_interruption_request): New global volatile variable.
1491         (mono_debugger_check_interruption): New public function.
1492
1493         * threads.c
1494         (mono_thread_current_check_pending_interrupt): Call
1495         mono_debugger_check_interruption().
1496         (mono_thread_interruption_checkpoint_request): Likewise.
1497
1498 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
1499
1500         * verify.c: Add more type checks for loaded types. Verify the result
1501         handle from ldtoken.
1502
1503 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
1504
1505         * loader.c (field_from_memberref): Don't crash if the field
1506         wasn't found.
1507
1508 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
1509
1510         * verify.c: Verify if type and method instantiations
1511         don't have invalid VAR or MVAR arguments.
1512
1513 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
1514
1515         * verify.c: Fix double free of function pointer list.
1516
1517 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
1518
1519         * object.c (mono_string_to_utf8): Comment the new code as it
1520         breaks under eglib.
1521
1522 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
1523
1524         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
1525
1526 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
1527
1528         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
1529           is not throw too many times.
1530
1531         Code is contributed under MIT/X11 license.
1532
1533 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
1534
1535         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
1536         debugging is turned off.
1537
1538 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
1539
1540         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
1541
1542 2008-07-04  Mark Probst  <mark.probst@gmail.com>
1543
1544         * class-internals.h, class.c: Added new generic sharing option:
1545         Share only stuff in System.Collections.Generic, which is now the
1546         default.
1547
1548 2008-07-04  Mark Probst  <mark.probst@gmail.com>
1549
1550         * generic-sharing.c, class-internals.h: New function for getting a
1551         generic method in a generic class given the corresponding method
1552         for a different instantiation of the class.  Partly refactored
1553         from mini-trampolines.c.
1554
1555         * class.c: Make sure generic methods have a class_inst if they are
1556         part of a generic class.
1557
1558         * metadata.c (mono_type_stack_size_internal): Handle type
1559         variables.
1560
1561 2008-07-04  Mark Probst  <mark.probst@gmail.com>
1562
1563         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
1564         Signifies whether information on the this/vtable/mrgctx variable
1565         is available.
1566
1567 2008-07-04  Mark Probst  <mark.probst@gmail.com>
1568
1569         * object.c, object-internals.h, icall.c: New function
1570         mono_delegate_ctor_with_method(), which does the same as
1571         mono_delegate_ctor(), but takes an explicit method argument
1572         instead of taking the method from the jit info.
1573
1574         * marshal.c: When creating a delegate with an inflated method take
1575         the "this" argument as the target class for the castclass.
1576
1577 2008-07-03  Mark Probst  <mark.probst@gmail.com>
1578
1579         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
1580         mono_jit_info_table_find() to perform very badly in some cases.
1581
1582 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * icall.c (type_from_typename): Handle 'string'.
1585
1586         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
1587         wrappers into the wrapper_hash, since the key is not a MonoMethod.
1588
1589 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
1592
1593         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
1594         number of available managed allocator types.
1595
1596         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
1597         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
1598
1599 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
1602         which is a low level lock protecting just the 'jit_code_hash' hash table.
1603
1604         * domain.c: Initialize+cleanup jit_code_hash_lock.
1605         
1606 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
1607
1608         * coree.c (mono_load_coree): Set coree_module_handle global variable only
1609         after initialization.
1610
1611         * coree.h: Make MonoFixupExe internal.
1612
1613         Contributed under MIT/X11 license.
1614
1615 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
1616
1617         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
1618         because that is platform independent. Check NumberOfRvaAndSizes in PE32
1619         as well.
1620         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
1621         image being loaded is a CLI image and _CorValidateImage gets called.
1622
1623         * coree.h: Add MonoLoadImage.
1624
1625         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
1626         instead of LoadLibrary.
1627
1628         Contributed under MIT/X11 license.
1629
1630 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
1631
1632         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
1633         for any primitive type.
1634
1635 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
1636
1637         * object.c (mono_array_new_specific): Optimize this and the other allocation
1638         functions a bit.
1639         
1640         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
1641         domains too if mono_dont_free_domains is set.
1642
1643         * domain-internals.h (mono_dont_free_domains): New internal option controlling
1644         whenever to free appdomain data after it has been unloaded.
1645
1646         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
1647         
1648 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
1651         (mono_method_get_equivalent_method): Fix a warning.
1652
1653         * object.c (mono_message_init): Avoid looking up array types for each call.
1654
1655 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
1656
1657         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
1658         call.
1659
1660         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
1661         even more.
1662
1663         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
1664         each iteration.
1665
1666         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
1667         fields of an enum.
1668
1669 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
1670
1671         * object.c (mono_value_box): Fix boxing of nullables.
1672
1673 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
1674
1675         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
1676         mono_module_handle that is defined by the linker; no initialization required.
1677         * coree.h: Remove mono_module_handle, add __ImageBase, update
1678         mono_image_open_from_module_handle.
1679         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
1680         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
1681         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
1682         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
1683         to 4 GB away from image base address. IA64 version is not tested but was very
1684         easy to implement and should work if we ever need it.
1685         * domain.c (mono_init_internal): Avoid system error message boxes.
1686         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
1687         with has_entry_point. Handle do_mono_image_load fauilre correctly.
1688         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
1689         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
1690         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
1691
1692         Contributed under MIT/X11 license.
1693
1694 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1695
1696         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
1697         as part of the private mono API.
1698         
1699         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
1700         Do proper argument checking for methods that belong to generic classes.
1701         Do proper type resolution for GMFH/2.
1702         Fixes #377324.
1703         
1704 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1705
1706         * verify.c (do_switch): Fix a memory corruption bug with
1707         the jump index is out of bound.
1708
1709 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1710
1711         * verify.c: Disable debug code.
1712
1713 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1714
1715         * reflection.c (mono_image_get_methodbuilder_token): Use
1716         mono_image_get_methodspec_token_for_generic_method_definition
1717         instead of mono_image_get_memberref_token. We cache more memberef
1718         entries now.
1719
1720 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
1721
1722         * verify.c: Inflate exception clause types.
1723         Fixes #402606.
1724         
1725 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
1726
1727         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
1728         name.
1729
1730         * reflection.c (mono_image_get_ctorbuilder_token): Same.
1731
1732         * reflection.c (mono_image_create_method_token): Same.
1733
1734 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
1735
1736         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
1737         It does the same as mono_image_get_methodref_token but works on
1738         MethodBuilder.
1739
1740         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
1741         and always generate a methodspec. This follows the old behavior and fixes
1742         the regressions in System.Core. 
1743
1744 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
1745
1746         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
1747         don't event mono_class_get () succeeds. Fixes #402182.
1748
1749 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
1750
1751         * metadata-internals.h: Added MonoDynamicImage::methodspec
1752         hashtable to store methodspec tokens created for MethodBuilders.
1753
1754         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
1755         MethodBuilders as open instantiations if a methodspec was requested.
1756
1757         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
1758
1759         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
1760
1761         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
1762
1763         Fixes bug #349190.
1764
1765 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
1766
1767         * loader.c (method_from_methodspec): Avoid crashing if the
1768         method lookup fails.
1769
1770 2008-06-20  Dick Porter  <dick@ximian.com>
1771
1772         * socket-io.c (get_socket_assembly): Cope with Moonlight network
1773         classes being in a different assembly.  Fixes bug 399184.
1774
1775 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
1776
1777         * loader.c (mono_loader_init): Make this callable multiple times.
1778         (mono_dllmap_insert): Call mono_loader_init () so this works even before
1779         the runtime is initialized. Fixes #401755.
1780
1781 2008-06-19  Dick Porter  <dick@ximian.com>
1782
1783         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
1784         Fixes bug 349688.
1785
1786 2008-06-19  Dick Porter  <dick@ximian.com>
1787
1788         * socket-io.c:
1789         * icall-def.h: Implement Socket generic Send() and Receive()
1790         methods.  Fixes bug 395168.
1791
1792 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
1793
1794         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
1795
1796         Contributed under MIT/X11 license.
1797
1798 2008-06-18  Martin Baulig  <martin@ximian.com>
1799
1800         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
1801         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
1802         set to 80.0.  The debugger <-> runtime interface is now frozen as
1803         well.   
1804
1805         * mono-debug.c
1806         (mono_debug_debugger_version): Bump to 4.
1807
1808 2008-06-18  Martin Baulig  <martin@ximian.com>
1809
1810         * debug-mono-symfile.c
1811         (load_symfile): Don't check the minor version.
1812
1813         * debug-mono-symfile.h: Bump the version number to 50.0.
1814
1815 2008-06-18  Martin Baulig  <martin@ximian.com>
1816
1817         * debug-mono-symfile.c
1818         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
1819         minimum required version.
1820
1821 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
1822
1823         * reflection.c (mono_custom_attrs_from_property): Fix support for
1824         retriveving cattrs of dynamic inflated generic types.
1825
1826         * reflection.c (mono_custom_attrs_from_event): Same.
1827
1828         * reflection.c (mono_custom_attrs_from_field): Same;
1829
1830         * reflection.c (typebuilder_setup_events): Same cattrs of events.
1831
1832         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
1833         Moved to metadata.c.
1834
1835         * metadata.c: New functions to retrive the equivalent field, event
1836         of property from the generic type definition.
1837
1838         * metadata-internals.h: Added new functions from metadata.c.
1839
1840 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
1841
1842         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
1843         to cached in a mempool is used.
1844
1845         * metadata.c (free_generic_class): In some situations field generic_info type
1846         is not properly dup'ed and leads to double free'ing.
1847
1848         Fixes #400643.
1849
1850 2008-06-17  Mark Probst  <mark.probst@gmail.com>
1851
1852         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
1853         this arguments (will be needed later for generic methods).
1854         Collect stats.
1855
1856 2008-06-17  Mark Probst  <mark.probst@gmail.com>
1857
1858         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
1859         Create a static RGCTX invoke wrapper for methods which require it.
1860
1861 2008-06-17  Mark Probst  <mark.probst@gmail.com>
1862
1863         * object.c, class-internals.h: New function for checking whether
1864         an individual field is special static.
1865
1866 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
1867
1868         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
1869         linear search since the table is sorted.
1870
1871         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
1872         Fixes #324180.
1873
1874 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
1877         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
1878
1879         * gc.c (mono_domain_finalize): Allow an infinite timeout.
1880
1881         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
1882         
1883         * threads.c (mono_thread_request_interruption): Get rid of locking, use
1884         InterlockedCompareExchange to query and modify 
1885         thread->interruption_requested.
1886
1887         * object-internals.h (struct _MonoThread): Change interruption_requested
1888         to a gint32 so it can be modified by atomic operations. Add 
1889         'critical_region_level' from the managed side, change small_id to a guint32,
1890         add new set of 'unused' fields.
1891
1892         * appdomain.c: Bump corlib version.
1893
1894 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
1895
1896         * class.c (mono_class_from_name): Search modules as well. Fixes
1897         #322332.
1898
1899 2008-06-13  Mark Probst  <mark.probst@gmail.com>
1900
1901         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
1902         templates.  Templates are generalized with an additional type_argc
1903         argument.  RGCTX templates have type_argc==0, MRGCTX templates
1904         have type_argc>0.
1905
1906         * domain-internals.h, domain.c: New hash table for looking up
1907         MRGCTXs.
1908
1909         * metadata.c, metadata-internals.h: Rename hash and equal
1910         functions for MonoGenericInst's and make them public.
1911
1912         * class-internals.h: New data structures for the MRGCTX.  Macros
1913         for distinguishing slots in the RGCTX and the MRGCTX.
1914
1915 2008-06-13  Mark Probst  <mark.probst@gmail.com>
1916
1917         * object.c (mono_method_get_imt_slot): Put the same methods of
1918         different instantiations of the same generic interface in the same
1919         IMT slots, to make generic sharing simpler.
1920
1921 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
1922
1923         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
1924
1925         * metadata.c (mono_metadata_field_info_with_mempool): Added.
1926         This function works just like mono_metadata_field_info, but
1927         accept a mempool as argument to be used allocating memory.
1928
1929         * marshal.c (mono_marshal_load_type_info): Use new function
1930         to load marshal data into image mempool.
1931
1932 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
1933
1934         * class.c (mono_class_inflate_generic_type_with_mempool):
1935         This function allows to inflate a generic type using
1936         a mempool.
1937
1938         * class.c (inflate_generic_type): Take a mempool as argument
1939         and use it to do type dup'ing.
1940
1941         * class.c (mono_class_setup_fields): Field type for generic
1942         generic classes are allocated from the image mempool.
1943
1944         * metadata.c (free_generic_class): Inflated field type is
1945         now allocated in the image mempool.
1946
1947 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
1948
1949         * threads.c (thread_cleanup): Free MonoThread::name.
1950
1951 2008-06-12  Marek Habersack  <mhabersack@novell.com>
1952
1953         * appdomain.c (ensure_directory_exists): avoid unnecessary
1954         mkdir(2) calls when the shadow directory already exists.
1955         (mono_make_shadow_copy): copy also satellite assemblies from the
1956         private bin directories.
1957
1958 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
1961         
1962         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
1963         a page boundary. Fixes #396219.
1964
1965 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1966
1967         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
1968         due to double-checked locking.
1969
1970 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1971
1972         * assembly.c (build_assembly_name): Release memory on failure.
1973
1974         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
1975
1976 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1977
1978         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
1979         memory on failure.
1980
1981 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1982
1983         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
1984         memory on failure.
1985
1986 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1987
1988         * loader.c (field_from_memberref): Check if field signature type is equal
1989         to the non-inflated type of the field. Fixes #398980.
1990
1991 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
1992
1993         * assembly.c (mono_assembly_load_from_full): Call 
1994         mono_assembly_load_friends () outside the assemblies lock, since it can
1995         acquire the loader lock. Fixes #323696.
1996
1997         * reflection.c (resolve_object): Inflate the inst with the context for
1998         FieldOnTypeBuilderInst. Fixes #399010.
1999
2000 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2001
2002         * reflection.c (mono_image_get_field_on_inst_token): Don't
2003         inflate the field to encode it's signature. If it's a
2004         VAR or MVAR it should stay that way in the signature.
2005         Fixes #399047.
2006
2007 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2008
2009         * reflection.c (resolve_object): Release memory of inflated types.
2010
2011 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2012
2013         * loader.c (mono_method_get_signature_full): Remove assert about
2014         loading a methodspec to a generic method. We have such methods, such as
2015         System.Threading.Interlocked::CompareExchange<T>.
2016         This assert was removed since it crashes the verifier when it checks
2017         methods calling CompareExchange<T>.
2018
2019 2008-06-10  Marek Safar  <marek.safar@gmail.com>
2020
2021         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
2022         of Type array and not MonoType.
2023
2024 2008-06-10  Marek Habersack  <mhabersack@novell.com>
2025
2026         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
2027         <lupus@ximian.com>
2028
2029 2008-06-10  Martin Baulig  <martin@ximian.com>
2030
2031         * debug-mono-symfile.h
2032         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
2033         changes to the file format, but we were generating incorrect
2034         source file indices in the line number table due to a bug, which
2035         made backtraces report an incorrect source file.
2036
2037 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2038
2039         * mono-debug.c: Moved mono_debug_free_method_jit_info from
2040         mini/debug-mini.c to here.
2041
2042         * mono-debug.c (il_offset_from_address): Free memory from find_method.
2043
2044         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
2045         use it to release structs returned by mono_debug_find_method.
2046
2047 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
2048
2049         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
2050         since it needs to set method->slot for all interface methods.
2051
2052 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2053
2054         * class-internals.h: Forgot to add.
2055
2056 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2057
2058         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
2059
2060         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
2061         Lookup the custom attributes from property_hash.
2062
2063         * reflection.c (mono_save_custom_attrs): Save the custom attributes
2064         in property_hash. Allocate all data using the image mempool.
2065
2066         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
2067         for dynamic_custom_attrs to checks if the image is dynamic.
2068
2069 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
2072         assemblies array.
2073         
2074         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
2075         runtime functions while holding the domain assemblies lock.
2076
2077 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2078
2079         * verify.c: Reapplied the last bit of the reverted changes.
2080
2081 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2082
2083         * verify.c: Reapplied more of the reverted changes.
2084
2085 2008-06-09  Martin Baulig  <martin@ximian.com>
2086
2087         * debug-mono-symfile.c (load_symfile): Check the major version
2088         first; if it's wrong, don't print the minor version in the error message.
2089
2090 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
2091
2092         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
2093         lock instead of the domain lock to avoid deadlocks, since the thread might
2094         already hold the loader lock.
2095
2096         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
2097         (mono_thread_attach): Ditto.
2098
2099         * monitor.c: Use a TLS variable for holding the current thread id instead
2100         of calling pthread_self ().
2101         (mono_monitor_init_tls): New internal function to initialize the TLS
2102         variable.
2103         (mono_monitor_try_enter_internal): Put the owner == id check after the
2104         owner == 0 check.
2105
2106         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
2107         missed optimizations when using gcc-4.3.
2108
2109 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
2110
2111         * reflection.c (mono_dynamic_image_free): Free the memory
2112         used by MonoGenericParam in MonoDynamicImage::gen_param.
2113
2114         * reflection.c (mono_reflection_setup_generic_class): Allocate
2115         container from mempool.
2116
2117         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
2118         container from mempool.
2119
2120 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * threads.c (mono_set_pending_exception): New internal function to set the
2123         pending exception of the current thread.
2124         (mono_thread_get_and_clear_pending_exception): Check for 
2125         thread->pending_exception as well.
2126
2127         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
2128
2129         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
2130         it can trigger a collection.
2131
2132 2008-06-06  Martin Baulig  <martin@ximian.com>
2133
2134         Merged the `debugger-kahalo' branch.
2135
2136         * mono-debug.h
2137         (MONO_DEBUGGER_VERSION): Bumped to 72.
2138
2139         * debug-mono-symfile.h
2140         (MonoSymbolFileMethodIndexEntry): Removed.
2141         (MonoSymbolFileMethodEntry): New public typedef.
2142         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
2143         (MonoSymbolFileSourceEntry): Remove everything except `index' and
2144         `data_offset'.
2145         (MonoSymbolFileMethodEntry): Removed.
2146         (MonoSymbolFileLexicalBlockEntry): Removed.
2147         (MonoSymbolFileLineNumberEntry): Removed.
2148         (MonoDebugLexicalBlockEntry): Removed.
2149         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
2150         removed `num_il_offsets' and `il_offsets'.
2151         (MonoSymbolFile): Replace `version' with `major_version' and
2152         `minor_version'.
2153         (MONO_SYMBOL_FILE_VERSION): Replace with
2154         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
2155         `MONO_SYMBOL_FILE_MINOR_VERSION'.
2156
2157         * debug-mono-symfile.c
2158         (mono_debug_symfile_lookup_location): Add support for the new line
2159         number table format.
2160
2161 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
2162
2163         * metadata.c (free_generic_class): Release the inflated
2164         MonoClass of dynamic generic classes if it's not a generic
2165         type definition.
2166
2167 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
2168
2169         * verify.c: Reapplied more of the reverted changes.
2170
2171 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
2172
2173         * reflection.c (lookup_custom_attr): Clean the cached flag or
2174         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
2175         for SRE types.
2176
2177 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
2178
2179         * verify.c: Reapplied a small part of the reverted changes.
2180
2181 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2184
2185         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
2186         previously in managed code.
2187         (mono_monitor_exit): Ditto.
2188         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
2189
2190         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
2191         the managed definition.
2192
2193 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
2194
2195         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
2196
2197 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
2198
2199         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
2200         
2201         * monitor.c: Add some micro optimizations.
2202
2203         * icall.c (type_from_typename): Handle 'bool'.
2204
2205 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
2206
2207         * verify.c: Implement constructor verification per P III 1.8.1.4.
2208         Fixes #396716.
2209
2210 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
2213         holding the assemblies lock here too.
2214
2215 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2216
2217         * verify.c: Kill stack_top function.
2218
2219 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2220
2221         * verify.c: Kill stack_get function.
2222
2223 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2224
2225         * verify.c (mono_method_verify): Last change broke the build. Fixed.
2226
2227 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2228
2229         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
2230         more reliable.
2231
2232         * verify.c (mono_method_verify): Inflate params and locals to avoid
2233         mismatch when checking for compatibility.
2234
2235 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
2236
2237         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
2238         Length prefix should be size in bytes. Fix bug #339530.
2239         
2240         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
2241         Length prefix should be size in bytes. Fix bug #339530.
2242
2243         Code is contributed under MIT/X11 license.
2244
2245 2008-06-05  Bill Holmes <billholmes54@gmail.com>
2246
2247         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
2248
2249         Contributed under MIT/X11 license.
2250
2251 2008-06-05  Martin Baulig  <martin@ximian.com>
2252
2253         * mono-debug-debugger.c
2254         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
2255
2256 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
2259         while holding the assemblies lock to prevent deadlocks. Handle the case
2260         where the search hook returns NULL but the assembly was still loaded.
2261         Fixes #323696.
2262
2263         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
2264         modify domain state.
2265
2266 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
2267
2268         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
2269         * Makefile.am (pedump_LDADD): Post-process object files and
2270         add dtrace-generated object file, if necessary.
2271
2272         Code is contributed under MIT/X11 license.
2273
2274 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
2275
2276         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
2277
2278 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
2279
2280         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
2281
2282 2008-06-04  Mark Probst  <mark.probst@gmail.com>
2283
2284         * threads.c: Try to free everything from the delayed free table
2285         when shutting down threads, and set the variable to NULL after the
2286         table is freed so that calling
2287         mono_thread_hazardous_try_free_all() when shutting down the root
2288         domain doesn't crash.
2289
2290 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
2291
2292         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
2293         the caller if resulting type was inflated.
2294
2295         * class.c (mono_class_create_from_typespec): Free the MonoType if it
2296         was inflated.
2297
2298         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
2299
2300
2301 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
2302
2303         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
2304         class library tests.
2305
2306         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
2307         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
2308         #396989.
2309
2310 2008-06-04  Mark Probst  <mark.probst@gmail.com>
2311
2312         * domain.c, domain-internals.h: The JIT infos are now freed by the
2313         JIT info table code.  They are freed immediately if there only a
2314         single JIT info table in circulation.  If there is more, the free
2315         is delayed via a queue.
2316
2317         * threads.c, threads-types.h: New hazard pointer function for
2318         freeing all freeable delayed items in one sitting.
2319
2320 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
2321
2322         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
2323
2324         * reflection.c (typebuilder_setup_properties): Same.
2325
2326         * reflection.c (typebuilder_setup_events): Same.
2327
2328 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
2329
2330         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
2331         and use it for allocating memory.
2332
2333         * reflection.c (mono_marshal_spec_from_builder): Same.
2334
2335         * reflection.c: Change code to use new signatures.
2336
2337         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
2338
2339 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * decimal.c (rescale128): Put back one line which was accidently commented
2342         out.
2343         
2344         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
2345         to cause crashes.
2346
2347 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
2348
2349         * reflection.c (mono_reflection_generic_class_initialize): Name must
2350         be always malloc'ed so we can free it later on. Do this for field, property
2351         and event.
2352
2353         * metadata.c (free_generic_class): Free field, property and event names.
2354
2355 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
2356
2357         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
2358         instead of g_memdup.
2359
2360         * reflection.c (typebuilder_setup_fields): Same.
2361
2362 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
2363
2364         * decimal.c (rescale128): Optimize this function a bit more.
2365
2366 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
2367
2368         * metadata.c (free_generic_class): Release some memory from
2369         SRE generic classes.
2370
2371 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
2372
2373         * reflection.c (mono_image_get_generic_field_token): No reference
2374         to name is kept, free it.
2375
2376         * reflection.c (mono_reflection_generic_class_initialize): Free
2377         more memory of the inflated field.
2378
2379 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
2380
2381         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
2382         code.
2383
2384 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
2385
2386         * reflection.c (mono_dynamic_image_free): Release memory used by
2387         MonoDynamicImage::array_methods elements.
2388
2389         * reflection.c (assembly_add_win32_resources): Release memory after
2390         encoding.
2391
2392 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
2393
2394         * decimal.c (log2_32): Use an optimized version for this function too.
2395         
2396         * decimal.c (log2_64): Fix this on 32 bit machines.
2397
2398 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
2399
2400         * class.c (mono_dup_array_type): Implement allocation using a mempool.
2401
2402         * class.c (mono_metadata_signature_deep_dup): Same.
2403
2404         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
2405         a mempool.
2406
2407         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
2408
2409         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
2410
2411         * metadata-internals.h: Added mono_metadata_signature_dup_full.
2412
2413         * class-internals.h: Update signatures to take a MonoMemPool.
2414
2415 2008-06-02  Dick Porter  <dick@ximian.com>
2416
2417         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
2418         * icall-def.h: Add
2419         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
2420         FormatMessage API to get the error text.  Fixes bug 321827.
2421
2422 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
2423
2424         * decimal.c: Add some micro optimizations to make decimal operations faster.
2425
2426 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
2427
2428         * reflection.c (method_encode_clauses): Take a mempool
2429         as parameter and use it to allocate the clause array.
2430
2431         * reflection.c (mono_image_get_field_on_inst_token): Free
2432         the inflated type after encoding it.
2433
2434         * reflection.c (mono_dynamic_image_free): Free each element
2435         of MonoDynamicImage::gen_params.
2436
2437         * reflection.c (reflection_methodbuilder_to_mono_method):
2438         Allocate the generic param array from the mempool.
2439         Allocate signature params from the mempool.
2440
2441         * reflection.c (mono_reflection_generic_class_initialize):
2442         Free inflated fields after been used.
2443
2444 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
2445
2446         * icall.c: Reapply the memory leak fixes as they no
2447         longer make mono crash.
2448
2449 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
2450
2451         * reflection.c (mono_type_get_object): Don't store the suplied
2452         MonoType with type_hash. A caller which pass a type that
2453         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
2454         might end with a pointer to freed memory.
2455         The solution is to use byval_arg or this_arg from the associated
2456         MonoClass of the supplied type.
2457
2458 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * icall.c: Revert the rest of the last change as it breaks the build too.
2461
2462 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
2463
2464         * icall.c: Revert a leak fix as it's breaking the build.
2465
2466 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
2467
2468         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
2469
2470 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
2471
2472         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
2473
2474 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
2475
2476         * icall.c: Fix some memory leaks.
2477
2478 2008-05-29  Dick Porter  <dick@ximian.com>
2479
2480         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
2481         async socket operations from the pending list when a socket
2482         closes.  Leaving it until the threadpool services the event
2483         exposes a race condition when a socket descriptor is reused.
2484         Fixes bug 377589.
2485
2486 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
2487
2488         * object.c: Fix negative index check for array alocation.
2489
2490 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
2491
2492         * icall.c, marshal.c: Delegate wrappers should skip visibility.
2493         This check is performed by the verifier for IL created delegates
2494         and by Delegate::CreateDelegate for programatically created ones.
2495         Fixes #372406.
2496
2497 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
2498
2499         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
2500         Fix code to use mono_array_size_t instead of int.
2501
2502         Based on patch by Luis F. Ortiz.
2503         Contributed under X11 license.
2504         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
2505
2506 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
2507
2508         * icall.c: Added ves_icall_System_Array_GetLongLength and
2509         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
2510         arrays.
2511
2512         * icall.h: Export both new functions.
2513
2514         Based on patch by Luis F. Ortiz.
2515         Contributed under X11 license.
2516         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
2517
2518 2008-05-28  Martin Baulig  <martin@ximian.com>
2519
2520         The debugger now requires exactly r103463.
2521
2522         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
2523         This version is not supported by the debugger, wait for 72.
2524
2525 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
2526
2527         * object.h: Changed array related functions to use
2528         mono_array_size_t instead of guint32. Forgot to commit this file.
2529
2530         Patch by Luis F. Ortiz.
2531         Contributed under X11 license.
2532         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
2533
2534
2535 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
2536
2537         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
2538         don't define it. Use the number literal instead.
2539
2540 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
2541
2542         * icall.c: Changed array related functions to use
2543         mono_array_size_t instead of guint32.
2544
2545         * icall.c (ves_icall_System_Array_GetLength): Check for length
2546         overflow under MONO_BIG_ARRAYS.
2547
2548         Based on patch by Luis F. Ortiz.
2549         Contributed under X11 license.
2550         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
2551
2552 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
2553
2554         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
2555
2556         Based on patch by Luis F. Ortiz.
2557         Contributed under X11 license.
2558         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
2559
2560 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
2561
2562         * object.c, object.h: Changed array related functions to use
2563         mono_array_size_t instead of guint32.
2564
2565         Patch by Luis F. Ortiz.
2566         Contributed under X11 license.
2567         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
2568
2569 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
2570
2571         * object.h: Introduced mono_array_size_t typedef. This must be used
2572         in all places an array length is expected. This is 64bits wide if
2573         MONO_BIG_ARRAYS is enabled.
2574
2575         Patch by Luis F. Ortiz.
2576         Contributed under X11 license.
2577         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
2578
2579 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
2580
2581         * security-manager.c class.c: Set the class exception info by calling
2582         mono_class_set_failure ().
2583
2584         * class.c (mono_class_get_exception_data): New accessor function.
2585         (mono_class_set_failure): Store exception_data in the property hash.
2586
2587         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
2588         the struct as a property.
2589
2590         * loader.c (mono_get_method_full): Store the lookup result for method
2591         tokens in method_cache, the others in methodref_cache to decrease the memory
2592         usage of hash tables.
2593
2594         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
2595         (mono_image_init): method_cache is lazy inited now.
2596
2597         * metadata-internals.h (struct _MonoImage): Change method_cache to
2598         a MonoValueHashTable, add a separate methodref_cache.
2599
2600 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
2601
2602         * number-formatter.h: Fix tables to avoid arithemtic overflow in
2603           Double.ToString as exposed by Bug #383531.
2604
2605 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
2606
2607         * number-formatter.h: Make some tables static.
2608
2609         * class.c (mono_method_set_generic_container): New accessor function.
2610         (mono_method_get_generic_container): Ditto.
2611
2612         * class-internals.h (struct _MonoMethod): Remove rarely used 
2613         'generic_container' field, store it in the property hash instead. Add 
2614         'is_generic' boolean field instead.
2615
2616         * image.c (mono_image_init): Initialize property_hash.
2617         (mono_image_close): Destroy property_hash.
2618
2619         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
2620         hold rarely used fields of runtime structures belonging to this image.
2621
2622         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
2623         to get/set method->generic_container.
2624
2625         * loader.c (mono_get_method_from_token): Avoid loading the method header for
2626         generic methods.
2627
2628 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
2629
2630         * class.c (mono_class_inflate_generic_method_full): Don't increase
2631         mono_stats.inflated_method_count for methods found in the cache.
2632
2633         * threads.c (mono_thread_request_interruption): Add a comment about 
2634         QueueUserAPC ().
2635
2636 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
2637
2638         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
2639         interface_offsets_packed table.
2640         
2641         * class.c (mono_class_init): Remove some dead code.
2642
2643         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
2644         mono_class_setup_vtable () when CAS is active to detect security problems.
2645
2646 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
2647
2648         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
2649
2650         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
2651         parameters as it's irrelevant for delegate checking.
2652
2653 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
2656
2657         * class.c (mono_class_init): Control the creation of a generic vtable using
2658         a global which is true by default, but set to false by the runtime startup code.
2659         
2660         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
2661         Disabled for now since it breaks the embedding API.
2662         Move the setup of class->methods for arrays to mono_class_setup_methods ().
2663         (mono_class_setup_methods): Add a memory barrier.
2664
2665         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
2666         when mono_class_init () doesn't compute the generic vtable.
2667         
2668 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
2669         * profiler.c: Added mono_profiler_install_statistical_call_chain,
2670         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
2671         to support call chains (backtrace) in the stat profiler.
2672         * profiler.c, profiler-private.h: Likewise.
2673
2674 2008-05-22  Mark Probst  <mark.probst@gmail.com>
2675
2676         * generic-sharing.c: Init generic class when a method of it is
2677         requested via a runtime generic context.
2678
2679 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
2682
2683         * reflection.c (mono_type_get_object): Add a FIXME.
2684
2685         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
2686
2687         * class.c (mono_class_get_method_by_index): New helper function, returning an
2688         entry in the class->methods array.
2689
2690 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
2691
2692         * class.c (mono_class_init): Only do the array optimization for szarrays. 
2693         Avoid creating a generic vtable for generic instances as well.
2694         (mono_class_get_method_from_name_flags): Don't search in the metadata for
2695         generic instances.
2696
2697 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2698
2699         * loader.c (mono_get_method_constrained): Inflate the signature
2700         with class context. Fix #325283.
2701
2702 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
2703
2704         * object.c (mono_class_create_runtime_vtable): Add a comment.
2705
2706         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
2707         where needed.
2708         (setup_interface_offsets): Handle the case when this is called twice for arrays.
2709         (mono_class_setup_vtable_general): Add an assert.
2710         (mono_class_init): Avoid creating a generic vtable for arrays.
2711
2712         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
2713         here, let mono_class_init () do that.
2714
2715         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
2716         interfaces in mscorlib.
2717
2718         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
2719         interfaces. Add some comments.
2720         (mono_class_init): Call mono_class_setup_methods () here since it is no
2721         longer called by mono_class_setup_vtable ().
2722
2723         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
2724         not set in class->vtable.
2725         (mono_class_create_runtime_vtable): Reenable the disabled code.
2726
2727         * object.c (mono_class_create_runtime_vtable): Disable the last change for
2728         now as it causes some test failures.
2729
2730         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
2731         if using the vtable trampoline. Also remove some strange code which put the
2732         generic methods themselves into the vtable slots. Remove the AOT init_vtable
2733         stuff as it is no longer needed.
2734
2735 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
2736
2737         * pedump.c: Give make --verify all option check code as well.
2738         Using --verify code won't check for metadata now.
2739
2740 2008-05-19  Martin Baulig  <martin@ximian.com>
2741
2742         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
2743
2744         * mono-debug.c
2745         (_mono_debug_using_mono_debugger): New global variable; it's set
2746         directly by the debugger, so mono_debug_using_mono_debugger() also
2747         works after attaching.
2748
2749 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
2750
2751         * object.c (mono_class_create_runtime_vtable): Use memory barriers
2752         as we do double checked locking on MonoClass::runtime_info and
2753         MonoClassRuntimeInfo::domain_vtables.
2754
2755 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
2756
2757         * debug-helpers.c (print_field_value): Fix a warning.
2758
2759 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
2760
2761         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
2762         set in the AOT case.
2763
2764 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
2765
2766         * class.c (mono_class_setup_vtable_general): Use memory barriers
2767         as we do double checked locking on MonoClass::vtable.
2768
2769 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
2770
2771         * reflection.c (resolve_object): Inflate only if the generic context
2772         is not null. Fixes #389886.
2773
2774 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
2775
2776         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
2777         instead of g_free.
2778
2779         Code is contributed under MIT/X11 license.
2780
2781 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
2782
2783         * class.c: Revert unrelated change.
2784
2785 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
2786
2787         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
2788         a generic instantiation, use mono_class_from_mono_type instead of playing
2789         with MonoType directly.
2790
2791 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
2792
2793         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
2794         checks must ignore generic instantiations, so mono_class_has_parent is not
2795         suitable. Fixes #390128.
2796
2797 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
2798
2799         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
2800         it to avoid registering tokens during metadata generation. Fixes #390023.
2801
2802 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
2803
2804         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
2805         consistent.
2806
2807         Contributed under MIT/X11 license.
2808
2809 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
2810
2811         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
2812         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
2813         to fixup the EXE image.
2814         (mono_cleanup): Use mono_close_exe_image.
2815         (mono_close_exe_image): New function.
2816         * image.c: Include "marshal.h".
2817         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
2818         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
2819         counting when the image is loaded outside of mono_image_open_full. Set status
2820         based on GetLastError.
2821         * coree.c: Include required headers. Add init_from_coree.
2822         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
2823         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
2824         (_CorExeMain): Set init_from_coree.
2825         (CorExitProcess): Only call ExitProcess for now.
2826         (CorBindToRuntimeEx): New stub implementation.
2827         (CorBindToRuntime): New function.
2828         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
2829         (MonoFixupExe): ILONLY executables require no fixups.
2830         (mono_set_act_ctx): New function to set activation context.
2831         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
2832         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
2833         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
2834         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
2835         as MONO_INTERNAL.
2836         * domain-internals.h: Add mono_close_exe_image.
2837
2838         Contributed under MIT/X11 license.
2839
2840 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
2841
2842         * metadata.c (mono_metadata_compute_size): Correctly calculate field
2843         size for generic param and event tables. Fixes #388977.
2844
2845 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
2846
2847         * loader.c (mono_method_signature): Use memory barriers because of the double
2848         checked locking pattern.
2849
2850         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
2851         aborting or aborted as well. Fixes #376391.
2852         
2853         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
2854         existing runtime state in the Suspend handler during shutdown.
2855
2856 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
2859
2860         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
2861         which are starting up or shutting down.
2862
2863         * threads.c (mono_threads_set_shutting_down): Don't return a value since
2864         this function never returns if the runtime is already shutting down.
2865
2866         * icall.c (ves_icall_System_Environment_Exit): Update after 
2867         mono_threads_set_shutting_down () signature change.
2868         
2869 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
2870
2871         * class.c: Added can_access_instantiation to verify if the instantiation
2872         is visible. Fix access check for nested types as they returned TRUE
2873         before doing type and generic instantiation visibility checks.
2874
2875 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
2876
2877         * reflection.c (mono_reflection_create_generic_class): The created type
2878         must have a different container from its TypeBuilder. Otherwise they
2879         will end sharing generic arguments, which is wrong.
2880
2881         Due to the sharing, making a generic instance of the created type using
2882         the TypeBuider generic arguments resulted in the generic type definition
2883         been returned, which is wrong as well.
2884
2885         As a bonus the code was leaking the type_params array. This memory should
2886         be allocated from the image mempool.
2887
2888         This fixes bug #354047.
2889
2890 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
2891
2892         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
2893         to here         as they are now used in assembly.c new code.
2894         Added a skipverification flag to MonoAssembly.
2895         New internal function mono_assembly_has_skip_verification.
2896
2897         * assembly.c: New function mono_assembly_has_skip_verification. It checks
2898         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
2899         part of #387274.
2900
2901 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
2902
2903         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
2904         needed. Fixes #387034.
2905
2906         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
2907
2908 2008-05-06  Miguel de Icaza  <miguel@novell.com>
2909
2910         * assembly.c (mono_assembly_load_reference): Prevent crash while
2911         disassembling Silverlight 2.0 executables while we still do not
2912         have GACed libraries.
2913
2914 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * reflection.c: Special case generic type definitions as well. Fixes #383444.
2917
2918 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
2921         of the dynamic case. Fixes #387404.
2922
2923 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
2924
2925         *verify.c (mono_verifier_is_class_full_trust): If under
2926         verify_all and the verifier mode was not set, only
2927         gac and corlib types are fulltrust. This makes --verify-all
2928         usable to detect unverifiable code, which is the expected
2929         use case.
2930
2931 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
2932
2933         * verify.h: Ops, commited the header with debug
2934         enabled.
2935
2936 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
2937
2938         * verify.c (merge_stack): Use the new value on unverifiable
2939         stack merges.
2940
2941         * verify.c (verify_type_compatibility_full): Comparison
2942         of nullable types can't use mono_class_is_assignable_from.
2943
2944         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
2945         that makes all verification errors be reported.
2946
2947         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
2948         mono_method_verify.
2949
2950 2008-05-05  Robert Jordan  <robertj@gmx.net>
2951
2952         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
2953         support for value types. See #386415.
2954
2955         * object.c: comments.
2956
2957         Code is contributed under MIT/X11 license.
2958
2959 2008-05-05  Martin Baulig  <martin@ximian.com>
2960
2961         * debug-mono-symfile.h
2962         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
2963         for old pre-terrania symbol files.
2964
2965 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
2966
2967         * mono-config.c: Add ppc64 architecture.
2968
2969         Code is contributed under MIT/X11 license.
2970
2971 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
2972
2973         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
2974           PPC64 uses function descriptors as well.
2975
2976         Code is contributed under MIT/X11 license.
2977
2978 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * object.c (compute_class_bitmap): Ignore literal static fields.
2981
2982         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
2983         var has an invalid format.
2984         (describe_ptr): Add some sanity checks for the vtable.
2985         (add_nursery_frag): Clear unused nursery fragments.
2986         (major_collection): Clear all remaining nursery fragments.
2987
2988 2008-05-03  Robert Jordan  <robertj@gmx.net>
2989
2990         * image.c, metadata-internals.h: add thunk_invoke_cache.
2991
2992         * marshal.c, marshal.h: implement
2993         mono_marshal_get_thunk_invoke_wrapper ().
2994
2995         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
2996
2997         Code is contributed under MIT/X11 license.
2998
2999 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
3000
3001         * verify.c (do_leave): Empty the stack.
3002
3003 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
3004
3005         * class.c (mono_class_is_assignable_from): Variance
3006         doesn't work between reference and value types. For example,
3007         given type C<T+>, C<int32> is not assignable to C<object>.
3008         Break the argument checking loop on first error. 
3009
3010 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
3011
3012         * icall.c : base64_to_byte_array() needs some more strict
3013           check for sequence of '=' characters. Patch by Santa
3014           Marta (http://deee.g.hatena.ne.jp/santamarta).
3015
3016           Contributed under MIT/X11 license.
3017           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
3018
3019 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
3020
3021         * domain.c: Disable LoadLibrary support to fix Win32 build.
3022
3023         Code is contributed under MIT/X11 license.
3024
3025 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
3026
3027         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
3028         to help with cache behaviour.
3029
3030 2008-05-01  Miguel de Icaza  <miguel@novell.com>
3031
3032         * appdomain.c (mono_domain_from_appdomain): Add new accessor
3033         method. 
3034
3035 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
3038
3039 2008-05-01  Dick Porter  <dick@ximian.com>
3040
3041         * process.c (process_get_fileversion): Only pass 16 bits of
3042         language ID to VerLanguageName.  Fixes bug 381204.
3043
3044 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
3045
3046         * verify.c (mono_method_verify): Fix the comparison
3047         operator for code bounds check.
3048
3049 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
3050
3051         * verify.c (mono_method_verify): Check the bounds of
3052         all access of the code array.
3053
3054 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
3055
3056         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
3057
3058 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * image.c (mono_image_strong_name_position): Fix return value when the rva is
3061         not valid.
3062
3063 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
3064
3065         * loader.c (mono_get_method_from_token, mono_method_signature): Add
3066         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
3067         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
3068         fixup main EXE images when using mono.exe for mixed-mode assembly support.
3069         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
3070         mono_runtime_load.
3071         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
3072         runtime initialization from metadata.
3073         * assembly.c: Remove obsolete ceGetModuleFileNameA.
3074         (mono_set_rootdir): Use mono_get_module_file_name.
3075         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
3076         handles.
3077         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
3078         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
3079         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
3080         MonoCLIImageInfo. Add support for module handles.
3081         (load_cli_header): Update mono_cli_rva_image_map signature.
3082         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
3083         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
3084         (mono_image_rva_map): Add support for module handles.
3085         (mono_image_ensure_section_idx): Add support for module handles.
3086         (mono_image_close): Add support for module handles.
3087         (do_load_header): Add support for module handles.
3088         (mono_image_open_from_module_handle): New function for internal use.
3089         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
3090         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
3091         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
3092         handles.
3093         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
3094         * image.h: Add mono_image_fixup_vtable.
3095         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
3096         support.
3097         * coree.h: New file.
3098         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
3099         unsupported native code.
3100         (mono_marshal_set_callconv_from_modopt): New function splitted from
3101         mono_marshal_get_managed_wrapper.
3102         (mono_marshal_get_managed_wrapper): Use
3103         mono_marshal_set_callconv_from_modopt.
3104         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
3105         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
3106         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
3107         that results in a deadlock when the runtime is loaded in _CorDllMain.
3108         * Makefile.am: Add coree.c and coree.h.
3109
3110         Contributed under MIT/X11 license.
3111
3112 2008-04-28  Mark Probst  <mark.probst@gmail.com>
3113
3114         * generic-sharing.c: Search for type arguments in array element
3115         types as well.
3116
3117 2008-04-28  Mark Probst  <mark.probst@gmail.com>
3118
3119         * class-internals.h, generic-sharing.c: New, small runtime generic context.
3120
3121         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
3122
3123         * object.c: Don't setup the RGCTX when the vtable is created,
3124         because we're setting it up lazily now.
3125
3126 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
3127
3128         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
3129         64 bit support.
3130
3131 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
3132
3133         * verify.c (verify_class_for_overlapping_reference_fields): 
3134         If class is under fulltrust allow reference types to overllap
3135         if they have the same RVA.
3136
3137 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
3138
3139         * pedump.c: Added new flag valid-only, that makes the verifier
3140         behaves just like --security=validil. It won't fail type load
3141         due to unverifiable restrictions.
3142
3143 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
3144
3145         * class-internals.h (struct MonoMethod): Added a verification_success
3146         field to cache verifier executions. Reduced MonoMethod:slot size by
3147         one bit.
3148
3149 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
3150
3151         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
3152         instead of a 'vt' argument to save an indirection and to allow these to be used
3153         for valuetypes.
3154         (scan_vtype): New helper function to scan an area using a gc descriptor.
3155         (mono_gc_wbarrier_value_copy): Implement this.
3156         (handle_remset): Add support for REMSET_VTYPE.
3157         (find_in_remset_loc): Ditto.
3158         (mono_gc_base_init): Allow some debugging options to be controlled through the
3159         use of the MONO_GC_DEBUG env variable.
3160         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
3161         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
3162
3163 2008-04-23  Martin Baulig  <martin@ximian.com>
3164
3165         * domain.c (mono_domain_create): Move the call to
3166         mono_debug_domain_create() down, after allocating the domain id.
3167
3168 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
3169
3170         verify.c (verify_class_for_overlapping_reference_fields): Skip
3171         static fields while verifying for overlapping fields as they
3172         don't matter at all.
3173
3174 2008-04-23  Marek Habersack  <mhabersack@novell.com>
3175
3176         * domain-internals.h: added a declaration of
3177         mono_make_shadow_copy.
3178
3179         * assembly.c (mono_assembly_open_full): shadow copying of
3180         assemblies moved to here, so that all the assemblies within the
3181         application domain's private binary directories can be
3182         processed. Fixes bug #380546
3183
3184         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
3185         mono_make_shadow_copy and made non-static. The decision whether
3186         to shadow-copy an assembly is made based on its location - it's
3187         copied if it's in one of the private application domain binary
3188         directories and its different to the target file in the shadow
3189         directory. Fixes bug #380546
3190
3191 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
3192
3193         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
3194
3195         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
3196         types.
3197
3198         * reflection.c (mono_image_create_token): Handle 
3199         Method/ConstructorOnTypeBuilderInst.
3200         (resolve_object): Ditto.
3201         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
3202         so it can be called from resolve_object. Also handle the case when the inflated
3203         class already has its methods setup.
3204
3205 2008-04-21  Martin Baulig  <martin@ximian.com>
3206
3207         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
3208
3209 2008-04-20  Geoff Norton  <gnorton@novell.com>
3210
3211         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
3212         pointer dereference.
3213
3214 2008-04-15  Marek Habersack  <mhabersack@novell.com>
3215
3216         * appdomain.c (try_load_from): if IOMAP is in effect, call the
3217         portability API to look up the assembly file. Fixes behavior in
3218         situations when the application has a bin/ directory, but the
3219         assembly search patch refers to Bin/ (and thus the requested file
3220         name is Bin/SomeLibrary.dll). Fixes bug #379888
3221
3222 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
3223
3224         verify.c (mono_type_is_generic_argument): Extracted this check
3225         from a dozen places to here.
3226
3227         verify.c: Fixed all issues related to boxing generic arguments
3228         and their constraints.
3229
3230 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
3231
3232         verify.c (mono_class_interface_implements_interface): Fix win32 build.
3233
3234 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
3235
3236         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
3237         isn't finished yet. Fixes #363447.
3238
3239 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
3240
3241         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
3242         Fixes #346419.
3243
3244 2008-04-13  Jb Evain  <jbevain@novell.com>
3245
3246         * domain.c: update the 2.1 profile versions.
3247         Merged from the Moonlight 2 branch.
3248
3249 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
3250
3251         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
3252         mscorlibs for the non-refonly case as well.
3253
3254         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
3255         in mono_assembly_load_from_full (). Fixes #378924.
3256
3257 2008-04-11  Geoff Norton  <gnorton@novell.com>
3258
3259         * icall.c: The global extern environ doesn't exist on Mac.  We
3260         need to call NSGetEnviron instead.
3261
3262 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3263
3264         verify.c: Add generic method constraint verification.
3265
3266 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3267
3268         class.c (mono_class_inflate_generic_method_full): Add a long
3269         explanation to the is_mb_open hack. Remove the FIXME.
3270
3271 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3272
3273         * verify.c (mono_method_verify): Mark all unknown opcodes
3274         as invalid. Mark jmp as unverifiable.
3275
3276 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3277
3278         * verify.c: Add code to do type constraint verification on class instances.
3279
3280         * verify.c (mono_verifier_verify_class): Use the type constraint 
3281         verification code.
3282
3283 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3284
3285         * class.c (mono_class_get_field_default_value): Don't pass cindex
3286         as hint to mono_metadata_get_constant_index. The local is not initialized
3287         and should contain garbage most of the time. This could only work
3288         with a lot of luck.
3289
3290 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
3291
3292         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
3293
3294 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
3295
3296         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
3297
3298         * class.c (mono_class_from_generic_parameter): Save the token of the
3299         generic param in MonoClass::sizes.generic_param_token.
3300
3301         * reflection.c (mono_custom_attrs_from_class): If the class type is
3302         VAR or MVAR retrieve the attributes of the generic param.
3303
3304 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
3305
3306         * class.c (mono_class_init): Do class verification if the verifier
3307         is enabled.
3308
3309 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
3310
3311         * verify-internal.h: Added mono_verifier_verify_class.
3312
3313         * verify.c: Added mono_verifier_verify_class. It checks for
3314         classes with explicit layout that have overlapping reference fields.
3315
3316         * pedump.c: Init the verifier state prior to verification. Fixed
3317         command line arguments.
3318
3319 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
3320
3321         * Makefile.am: Added verify-internals.h, hopefully fix the build.
3322
3323 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
3324
3325         * verify-internals.h: Fix a warning.
3326
3327 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
3328
3329         * verify-internals.h: New header with the verifier configuration
3330         extracted from mini.c.
3331
3332         * verify.c: Implemented the new functions exported by verify-internals.h.
3333
3334 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
3335
3336         * verify.c: Add proper verification of ckfinite.
3337
3338 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
3339
3340         * verify.c (do_conversion): Improved error message to something
3341         more meanfull.
3342
3343         * verify.c (check_is_valid_type_for_field_ops): Fix to work
3344         with primitive types.
3345
3346 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
3347
3348         * verify.c: Added tail prefix checking. Marked icall
3349         as unverifible.
3350
3351 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
3352
3353         * verify.c: Fix the detection of branches to the middle
3354         of an instruction.
3355
3356 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
3357
3358         * verify.c: Implemented verification of volatile. and
3359         unaligned. prefix. Check if a type is valid after retrieving it.
3360
3361 2008-04-01  Dick Porter  <dick@ximian.com>
3362
3363         * process.c (process_get_fileversion): If there's no string block,
3364         set the file language to en_US.  Fixes the other new part of bug
3365         374600.
3366
3367 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
3368
3369         * class.c: New functions mono_method_can_access_field_full and
3370         mono_method_can_access_method_full. They perform type visibility
3371         and type site check.
3372
3373         * class-internal.h: Added exported functions.
3374
3375         * verify.c: Use new functions to implement proper visibility checks.
3376
3377 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
3378
3379         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
3380
3381 2008-03-28  Dick Porter  <dick@ximian.com>
3382
3383         * process.c (process_get_fileversion): Use the first language ID
3384         we see, rather than insisting on an invariant language.  Fixes bug
3385         374600.
3386
3387 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
3388
3389         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
3390         the streams to fix reading of invalid memory later.
3391
3392         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
3393         to ease debugging.
3394
3395 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
3398         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
3399
3400 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
3401         * threads.h: Added MonoThreadManageCallback type and
3402         mono_thread_set_manage_callback prototype
3403         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
3404         (used to store the mono_thread_manage callback).
3405         * threads.c: Added mono_thread_set_manage_callback, and handle
3406         "MonoThread->manage_callback" in build_wait_tids.
3407
3408 2008-03-26  Dick Porter  <dick@ximian.com>
3409
3410         * process.c (process_get_fileversion): Set FileVersionInfo strings
3411         to Empty when the resource doesn't have the particular info.
3412         Fixes bug 355717.
3413
3414 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
3415
3416         * verify.c (mono_method_verify): Proper prefix validation.
3417
3418 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
3421         itself in a separate argument instead of throwing them. Fixes #373448.
3422
3423         * appdomain.c: Bump corlib version.
3424
3425 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
3426
3427         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
3428
3429 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
3430
3431         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
3432         version macros.
3433
3434 2008-03-20  Mark Probst  <mark.probst@gmail.com>
3435
3436         * generic-sharing.c, class-internals.h: Code for putting
3437         reflection types into the runtime generic context.
3438
3439 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
3440
3441         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
3442         Fixes #340662. 
3443
3444
3445 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
3446
3447         * verify.c (VerifyContext): Added instruction prefix data to the struct.
3448
3449         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
3450
3451         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
3452
3453         * verify.c (do_cast): Let the result value keep the boxed status.
3454
3455         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
3456
3457 2008-03-17  Jb Evain  <jbevain@novell.com>
3458
3459         * reflection.c: when running on a 2.0 runtime, emit
3460         unconditionally the #~ header version as 2.0, and the
3461         CLI header version as 2.5, for symmetry's sake with csc.
3462
3463 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
3464
3465         * class.c: Remove the unused cache_interface_offsets stuff.
3466
3467         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
3468         profiler.c: Fix warnings.
3469
3470 2008-03-16  Mark Probst  <mark.probst@gmail.com>
3471
3472         * generic-sharing.c, class-internals.h: Support for putting
3473         methods into the runtime generic context.
3474
3475 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * class.c (mono_class_setup_fields): Ignore calls made to this function for
3478         classes which are generic instances of not-yet finished typebuilders. Fixes
3479         #351172.
3480
3481         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
3482
3483 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
3484
3485         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
3486
3487         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
3488         field, replace it with a hash table in MonoDynamicImage.
3489
3490         * reflection.c (inflate_mono_method): Access the generic definition object from
3491         image->generic_def_objects instead of imethod->reflection_info.
3492
3493         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
3494
3495         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
3496         
3497         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
3498         function in reflection.c so it is easier to keep in sync with the dynamic image
3499         creation code.
3500
3501         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
3502         mono_image_close ().
3503
3504 2008-03-15  Mark Probst  <mark.probst@gmail.com>
3505
3506         * class.c (mono_class_generic_sharing_enabled): Disable generic
3507         sharing for all architectures except AMD64 and x86 to fix build.
3508
3509 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
3510
3511         * verify.c: Use the generic definition MonoGenericContext when available.
3512         Remove code for checking generics instance compatibility in favor of
3513         mono_class_is_assignable_from.
3514
3515 2008-03-14  Mark Probst  <mark.probst@gmail.com>
3516
3517         * marshal.c, marshal.h, metadata-internals.h, image.c,
3518         wrapper-types.h: New wrapper for invoking a shared static method
3519         without having to pass the runtime generic context argument.
3520
3521 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
3522
3523         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
3524
3525 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
3526
3527         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
3528         
3529         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
3530         create a token from a FieldOnTypeBuilderInst.
3531         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
3532         (resolve_object): Ditto.
3533
3534         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
3535         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
3536
3537 2008-03-14  Martin Baulig  <martin@ximian.com>
3538
3539         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
3540
3541         * debug-mono-symfile.h
3542         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
3543         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
3544
3545 2008-03-10  Martin Baulig  <martin@ximian.com>
3546
3547         * debug-mono-symfile.h
3548         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
3549         `lexical_block_table_offset'.
3550         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
3551         `lexical_blocks'.
3552         (MonoSymbolFile): Added `version'.
3553
3554         * mono-debug.h
3555         (MonoDebugLexicalBlockEntry): Removed.
3556         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
3557         `lexical_blocks'.
3558
3559         * mono-debug.c (mono_debug_add_method): Don't compute lexical
3560         blocks here; the debugger now does this internally.
3561
3562 2008-02-27  Martin Baulig  <martin@ximian.com>
3563
3564         * object.c (mono_runtime_exec_main): Call
3565         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
3566         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
3567
3568 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
3569
3570         * verify.c (verify_type_compatibility_full): Allow native int to be converted
3571         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
3572
3573 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
3574
3575         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
3576         ldftn with a virtual method.
3577
3578 2008-03-13  Geoff Norton  <gnorton@novell.com>
3579
3580         * decimal.c:  Only include memory.h if the platform has it.
3581
3582 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
3583
3584         * assembly.c, class.c, metadata-internals.h: make sure public key
3585         tokesns are compared in a case-insensitive way. Also, all
3586         the lookups in the GAC use a lowercase public key token
3587         (gaacutil already does the lowercasing on install). Fixes
3588         bug #369541.
3589
3590 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
3591
3592         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
3593         and return value.
3594
3595 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
3596
3597         * image.c: when someone loads a mscorlib from a file, return the
3598         currently loaded mscorlib (fixes bug #369253).
3599
3600 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
3601
3602         * class.c: handle types with no parents by forcing them to have
3603         System.Object as a parent and marking them as broken (this currently
3604         allows the first part of bug #369173 to work as well, likely because
3605         we don't check for typeload exceptions everywhere yet).
3606
3607 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
3608
3609         * class.c: more complete check that types belong to corlib
3610         (fixes second part of bug #369173).
3611
3612 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
3613
3614         * generic-sharing.c:  Including glib.h for the MSVC builds to define
3615           "inline" to "__inline" before including mono-membar.h.
3616           
3617         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
3618           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
3619           MSVC builds.
3620
3621         Contributed under MIT/X11 license.
3622
3623 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
3624
3625         * verify.c (do_invoke_method): Remove return type validation.
3626
3627         * verify.c (do_ret): Do return type validation at return site instead of
3628         call site.
3629
3630 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
3631
3632         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
3633
3634         * verify.c: Some todos cleaned and improved a few error messages.
3635
3636 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
3637
3638         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
3639
3640 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
3641
3642         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
3643         system types correctly.
3644
3645         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
3646         function.
3647
3648 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * assembly.c (build_assembly_name): Fix a warning.
3651
3652 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3653
3654         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
3655         the called function takes an object type argument. Fixes storing or
3656         valuetypes across remoting as well as reducing memory usage.
3657         * image.c, metadata-internals.h: remove now unused ldfld_remote and
3658         stfld_remote wrapper caches.
3659
3660 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
3661
3662         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
3663         is not found.
3664
3665         * reflection.c (mono_image_register_token): New helper function to save
3666         a token->object mapping.        
3667
3668         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
3669         managed code.
3670
3671         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
3672         one dimension arrays. Fixes #367670.
3673         (mono_reflection_get_type_internal): Ditto.
3674
3675 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
3676
3677         * marshal.c: mono_load_remote_field_new() always returns object.
3678         so use the proper signature (fixes bug #366445).
3679
3680 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
3681         
3682         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
3683         add an 'inline_failure' flag instead.
3684
3685 2008-03-04  Mark Probst  <mark.probst@gmail.com>
3686
3687         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
3688         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
3689         contains the location of "this", used for exception handling.
3690
3691 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
3694         their size on all platforms for perf reasons.
3695
3696 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
3697
3698         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
3699         object-internal.h
3700
3701         * object-internal.h: Same.
3702
3703 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
3704
3705         * reflection.h: Fix the build I just broke.
3706
3707 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
3708
3709         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
3710         Test if a token is valid, this remove explicit usage of 
3711         MonoDynamicImage::tokens from the verifier code.
3712
3713         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
3714
3715         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
3716         instead of direct access to MonoDynamicImage::tokens.
3717
3718 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
3719
3720         * verify.c (token_bounds_check): Fix the build I just broke.
3721
3722 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
3723
3724         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
3725
3726         * verify.c (verifier_load_method): Fixed the errors message.
3727
3728         * verify.c (mono_method_verify): Fixed a debug message.
3729
3730 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
3731
3732         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
3733         mono-perfcounters.h, class-internals.h: support for predefined
3734         writable counters, query of categories and counters, bugfixes.
3735
3736 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
3737
3738         * verify.c (do_refanytype): Verify the refanytype opcode.
3739
3740         * verify.c (mono_method_verify): Use do_refanytype.
3741
3742 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
3743
3744         * verify.c (do_mkrefany): Verify the mkrefany opcode.
3745
3746         * verify.c (mono_method_verify): Use do_mkrefany.
3747
3748 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
3749
3750         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
3751         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
3752         implementation.
3753
3754 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
3757         the type load exception.
3758
3759 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
3760
3761         * verify.c: Added a few FIXME for method signatures
3762
3763         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
3764         of mono_method_get_signature and get vararg call working. Removed unused
3765         checks for return value.
3766
3767         * verify.c (do_refanyval): Verify the refanyval opcode.
3768
3769         * verify.c (mono_method_verify): Implemented verification of arglist and
3770         use do_refanyval.
3771
3772 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
3775         vtypes to marshal.c.
3776
3777         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
3778         it works for AOT as well.
3779
3780 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
3781
3782         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
3783         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
3784         the system time is adjusted.
3785
3786 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
3787
3788         * icall.c, icall-def.h: use the new time functions (fixes the
3789         non-monotonic behaviour of TickCount).
3790
3791 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
3794         it breaks the build.
3795         
3796         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
3797         cattr is not finished yet.
3798
3799 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
3800
3801         * verify.c: Proper token validation for field, method and type.
3802
3803 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
3804
3805         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
3806
3807         * loader.c (method_from_memberref): Generate type load error instead of method missing
3808         if the type is not found.
3809
3810 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
3813         some of the conversions caused the generation of a marshal directive exception.
3814
3815 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
3816
3817         verify.c: Report which exception should be thrown by the JIT.
3818         Added a lot of FIXME notes.
3819
3820 2008-02-22  Mark Probst  <mark.probst@gmail.com>
3821
3822         * generic-sharing.c: Runtime generic context slots are not
3823         instantiated on init anymore.  Instead, provide function to do the
3824         instantiating on demand.
3825
3826         * class-internals.h: Added vtable to runtime generic context.
3827         Macros for encoding direct and indirect slot offsets in one
3828         guint32.
3829
3830 2008-02-21  Mark Probst  <mark.probst@gmail.com>
3831
3832         * object.c, generic-sharing.c: Moved some generic sharing code
3833         from object.c to generic-sharing.c.
3834
3835         * generic-sharing.c: Added support for extensible runtime generic
3836         context.
3837
3838         * metadata-internals.h: Two new hash tables in MonoImage for
3839         extensible runtime generic context support.
3840
3841         * domain.c: Unregister generic vtables upon domain unloading.
3842
3843         * image.c: Destroy new hash tables upon image unloading.
3844
3845         * metadata.c: Unregister generic subclasses upon image unloading.
3846
3847         * class-internals.h: New data structure for runtime generic
3848         context template.  New fields in the runtime generic context for
3849         extensible part.
3850
3851         * Makefile.am: Added generic-sharing.c.
3852
3853 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
3854
3855         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
3856         there is a pending loader exception, raise it.
3857
3858         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
3859         same.
3860
3861         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
3862         same.
3863
3864         Fixes #363450.
3865
3866 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
3867
3868         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
3869
3870         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
3871         
3872         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
3873         ref-only requests for compatibility with MS.
3874
3875 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
3876
3877         * reflection.c (mono_custom_attrs_from_method): Don't silently
3878         return an empty list for generic method instances.
3879         (mono_custom_attrs_from_param): Likewise.
3880
3881 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
3882             Raja R Harinath  <harinath@hurrynot.org>
3883
3884         Fix #354757
3885         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
3886         * class.c (mono_class_inflate_generic_method_full): Initialize it
3887         when a fully-open method is instantiated.
3888         * metadata.c (inflated_method_equal, inflated_method_hash): Update
3889         to new field.
3890         * reflection.c (inflate_mono_method): Don't create a temporary context.
3891
3892 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
3893
3894         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
3895         Compute correct value, to prepare for imethod->reflection_info going away.
3896
3897 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
3898
3899         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
3900
3901 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
3902
3903         * verify.c: Implement skip visibility flag.
3904
3905 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
3906
3907         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
3908         which contains an extra field to tell the kind of exception that should be thrown.
3909
3910         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
3911
3912 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
3913
3914         * loader.c (mono_method_get_param_names): Initialize 'klass' after
3915         'method' is updated.
3916
3917 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
3918
3919         * class.c (mono_class_layout_fields): Set class->min_align for classes using
3920         explicit layout as well. Fixes #360375.
3921
3922 2008-02-11  Geoff Norton  <gnorton@novell.com>
3923
3924         * loader.c: Guard and dereference against inflated generic methods
3925
3926 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
3927
3928         * class.c: Include Retargetable spec in assembly name.
3929         * assembly.c: Always include PublicKeyToken spec in assembly name
3930         (with value "null" if assembly is not signed), and include
3931         Retargetable spec.
3932         * icall-def.h: Added icall for Assembly.get_fullname.
3933         * icall.c: Added icall returning the fullname of an assembly.
3934
3935 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * class.c (mono_class_setup_vtable_general): Add a missing call to
3938         mono_class_setup_methods () which is needed in the AOT case.
3939
3940 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
3941
3942         * verify.c (mono_type_get_stack_name): Added. Return the name for the
3943         stack type of the given MonoType.
3944
3945         * verify.c (verify_type_compatibility_full): Handle the void type.
3946
3947         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
3948         way stack merging works.
3949
3950         * verify.c (store_local): Improved verification message.
3951
3952         * verify.c (do_branch_op): If the merging is invalid, the method
3953         is unverifiable and not invalid. Improved error message.
3954
3955         * verify.c (merge_stacks): Properly merge a boxed valuetype and
3956         a reference type diferent than System.Object. Improved error
3957         message.
3958
3959 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
3960
3961         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
3962
3963         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
3964         type of an enum even if the argument is byref.
3965
3966         * verify.c: Replace all explicit uses of enumtype and enum_basetype
3967         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
3968
3969         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
3970
3971         *verify.c (verify_type_compatibility_full): Make enum types
3972         compatible with their base types.
3973
3974         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
3975         types are compatible for the special case of a boxed valuetype and
3976         System.Object.
3977
3978         * verify.c (verify_stack_type_compatibility): The function
3979         is_compatible_boxed_valuetype was extracted from here.
3980
3981         * verify.c (push_arg): Only set ctx->has_this_store if the method
3982         is not static.
3983
3984         * verify.c (do_ldelem): Fixed a typo in an error message and added
3985         strict check for mixing int32 and native int as the array type
3986         and ldelem type.
3987
3988         * verify.c (merge_stacks): Consider boxed valuetypes in the
3989         compatibility checks.
3990
3991 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
3992         * profiler.h: (MonoGCEvent): Added start-stop the world events.
3993
3994 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
3995         *class.c: use_new_interface_vtable_code: renamed the env var to have
3996         a "MONO_" prefix, and fix the logic to enable it by default.
3997
3998 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
3999         *class.c:
4000         mono_class_setup_vtable_general: rewrote the way in which interface
4001         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
4002         makes the code more maintainable.
4003         For now the old code is still there, and can be activated setting
4004         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
4005
4006 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
4007
4008         * verify.c: guarded some debug functions around and #ifdef.
4009
4010         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
4011
4012 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
4013
4014         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
4015         changes for now since they seem to break too many things.
4016
4017 2008-02-05  Mark Probst  <mark.probst@gmail.com>
4018
4019         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
4020         mono_marshal_find_nonzero_bit_offset): Added macro and function
4021         for finding the byte- and bit-offset of a bitfield within a
4022         struct.
4023
4024 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
4025
4026         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
4027         (mono_marshal_get_struct_to_ptr): Ditto.
4028
4029         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
4030         cctor_signature.
4031
4032 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
4033
4034         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
4035         between methods for non-corlib types.
4036
4037 2008-02-02  Geoff Norton  <gnorton@novell.com>
4038
4039         * loader.c (mono_method_get_param_names): Populate the parameter name for 
4040         generic parameters as well. (Fixes #342536)
4041
4042 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
4043
4044         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
4045
4046         * verify.c (do_invoke_method): Fix for calling with byref structs.
4047
4048         * verify.c (do_cast): push a boxed value type based on the type token and not
4049         the type of stack.
4050
4051 2008-01-31  William Holmes  <billholmes54@gmail.com>
4052
4053         * process.c (process_module_string_read): Check the size returned form 
4054           VerQueryValue to avoid out of memory exception. 
4055
4056 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
4057
4058         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
4059         Handle properly modules which are not in the moduleref table. Fixes
4060         #356938.
4061
4062 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
4063
4064         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
4065         the dynamic case which is now in managed code.
4066         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
4067
4068         * marshal.c (mono_string_to_bstr): Fix a warning.
4069         (init_com_provider_ms): Ditto.
4070
4071         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
4072
4073         * exception.c (mono_get_exception_out_of_memory): New helper function.
4074
4075 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
4076
4077         * marshal.c: Add support for BSTR marshalling
4078         using other COM systems.
4079
4080         Code is contributed under MIT/X11 license.
4081
4082 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
4083
4084         * object.c (mono_runtime_invoke_array): reverted previous
4085         commit as it breaks the build.
4086
4087 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
4088
4089         * object.c (mono_runtime_invoke_array): Verify arguments for
4090         invalid types. Fixes #348522.
4091
4092 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
4093
4094         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
4095         non-final virtual calls using call. 
4096
4097         * verify.c (do_invoke): fixed some TODOs.
4098
4099         * verify.c (push_arg): set has_this_store for "ldarga 0".
4100
4101 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
4102
4103         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
4104         which belong to an inflated class. Fixes #356531.
4105
4106 2008-01-26  Robert Jordan  <robertj@gmx.net>
4107
4108         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
4109         which resort to FindFirstFile when a certain error condition
4110         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
4111         Code is contributed under MIT/X11 license.
4112
4113 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
4114
4115         * marshal.c (emit_marshal_string): Fix out string marshalling
4116         to use specified encoding. Fixes #323900.
4117
4118         Code is contributed under MIT/X11 license.
4119
4120 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
4121
4122         * class.c (mono_class_inflate_generic_method_full): Don't modify
4123         iresult->context after cache check.
4124
4125 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
4126
4127         * class.c (mono_class_inflate_generic_method_full): Change the
4128         struct assignments to memcpy for better visibility and add some comments.
4129
4130 2008-01-23  Dick Porter  <dick@ximian.com>
4131
4132         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
4133         procedure, and make it work on windows.
4134
4135 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
4136
4137         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
4138         a MonoReflectionTypeBuilder since it is always of that type.
4139
4140         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
4141
4142         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
4143
4144         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
4145         
4146         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
4147
4148         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
4149
4150         * reflection.c (mono_reflection_create_runtime_class): Remove already created
4151         instantiations from the type cache.
4152
4153 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
4154
4155         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
4156
4157         * verify.c (do_unbox_value): push a controled mutability managed pointer.
4158
4159 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
4160
4161         * verify.c (do_ldstr): added, verifies if the #US token is valid.
4162
4163         * verify.c (mono_method_verify): removed old TODO
4164
4165 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
4166
4167         * verify.c (do_newobj): add visibility check.
4168
4169 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
4170
4171         * verify.c (do_load_function_ptr): add visibility check.
4172
4173 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
4174         *class.c:
4175         mono_generic_class_get_class: hook profiler events.
4176         mono_field_get_offset: added to support heap-shot in the new profiler.
4177         *class.h: exported mono_field_get_offset.
4178         * reflection.c:
4179         mono_reflection_setup_internal_class: hook profiler events.
4180
4181 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
4182
4183         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
4184         argument here too and use it to avoid checking for pending exceptions if 
4185         possible.
4186
4187 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
4188
4189         * assembly.c (build_assembly_name): add arg for passing the assembly
4190         flags. Do not consider a PublicKey with value "null" valid.
4191         (mono_assembly_name_parse_full): added boolean argument that will be
4192         set if the assembly name contains a PublicKeyToken spec. Added support
4193         for the Retargetable spec for which only Yes or No are allowed as valid
4194         value. Consider assembly name invalid if Retargetable spec is set, but
4195         either version, culture or public key (token) are not specified.
4196         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
4197         with implementation in assembly.c.
4198         * icall.c (fill_reflection_assembly_name): also copy assembly flags
4199         from MonoAssemblyName.
4200         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
4201         introduced argument for mono_assembly_name_parse_full to know if the
4202         assembly name has a PublicKeyToken spec, and if it has instruct
4203         fill_reflection_assembly_name to use default value for keyToken (if
4204         PublicKeyToken is null).
4205
4206 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4207
4208         * verify.c (mono_method_verify): fixed ovf ops with
4209         float values. They are unverifiable now.
4210
4211 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4212
4213         * class.c (set_failure_from_loader_error): add BadImageException to the
4214         list of exceptions that can cause a type to fail to load.
4215
4216         * class.c (mono_class_get_exception_for_failure): same.
4217
4218 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4219
4220         * verify.c (in_any_exception_block): added, check if offset
4221         is part of any exception handling clause.
4222
4223         * verify.c (get_stack_type): added VAR and MVAR types.
4224
4225         * verify.c (do_stobj): better error messages.
4226
4227         * verify.c (do_cpobj): added, check cpobj.
4228
4229         * verify.c (do_initobj): added, check initobj.
4230
4231         * verify.c (do_sizeof): added, check sizeof.
4232
4233         * verify.c (do_localloc): added, check localloc.
4234
4235         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
4236
4237 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
4238
4239         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
4240         save_lmf/restore_lmf opcodes.
4241
4242         * threads.c (mono_threads_install_notify_pending_exc): New function to
4243         install a callback notifying the JIT there is a pending exception on a thread.
4244         (mono_thread_request_interruption): Call the new callback.
4245         (mono_thread_get_and_clear_pending_exception): New function to return the
4246         exception pending on a thread.
4247
4248         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
4249         to turn off checking for pending exceptions.
4250         (mono_marshal_get_native_wrapper): Ditto.
4251
4252 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
4253
4254         * threads-types.h: Get rid of the unnecessary extern declarations.
4255
4256 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
4257
4258         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
4259         return field from parent class if not private.
4260         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
4261         returns fields from parent class if they are not private.
4262         (method_nonpublic): added function to determine if a given method
4263         should be considered non-public. Returns false for private methods
4264         on parent class, and internal methods from parent on the 1.0 profile.
4265         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
4266         use method_nonpublic function to determine whether method should be
4267         returned.
4268         (property_accessor_public): use newly introduced method_nonpublic
4269         function to determine whether accessor is non-public. 
4270         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
4271         event from parent class if not private. Only return static event if
4272         Static flag is set, and only return static event from parent class if
4273         FlattenHierarchy flag is set.
4274         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
4275         include non-private events from parent class.
4276
4277 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
4278
4279         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
4280         warning.
4281
4282 2008-01-16  Wade Berrier <wberrier@novell.com>
4283
4284         * security.c: Add assembly.h header to appease some warnings
4285
4286 2008-01-16  Dick Porter  <dick@ximian.com>
4287
4288         * process.c (process_module_string_read): Remove trailing null
4289         when saving string.
4290
4291 2008-01-16  Mark Probst  <mark.probst@gmail.com>
4292
4293         * class-internals.h: A new data structure describing the layout of
4294         a runtime generic context (MonoRuntimeGenericContextTemplate).
4295
4296         * metadata-internals.h: Added a hash table to MonoDomain that maps
4297         from open generic classes to their runtime generic context
4298         templates.
4299
4300         * object.c: Building of the runtime generic context, including
4301         proper handling of generic type arguments of superclasses.
4302         Building of the runtime generic context according to the template.
4303
4304 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
4305
4306         * class.c (mono_class_setup_fields): Set field.count for generic instances.
4307         Fixes #350856.
4308
4309         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
4310         mono_portability_find_file (). Fixes #325466.
4311         (mono_image_get_public_key): Fix a warning.
4312
4313 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
4316         Fixes #353550.
4317         (mono_class_from_name_case): Ditto.
4318
4319 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
4320
4321         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
4322           common storage for the tables used in the System/NumberFormatter class.
4323
4324 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
4327
4328 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
4329
4330         * verify.c (get_boxable_mono_type): check if the token is valid.
4331
4332         * verify.c (set_stack_value): changed to add an error if an
4333         invalid type is set on stack. Changed all callers due to signature change.
4334
4335         * verify.c (do_stobj): implement stobj validation.
4336
4337 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
4338
4339         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
4340         set container->is_method, it was set earlier.
4341
4342         * metadata.c (type_in_image): Handle MVARs which belong to not finished
4343         generic methods.
4344
4345         * reflection.c (mono_reflection_initialize_generic_parameter): Set
4346         is_method of the generic container to TRUE for methods.
4347
4348 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
4349
4350         * metadata.c (type_in_image): Handle type parameters properly.
4351
4352         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
4353         memory ownership of this structure.
4354
4355 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
4356
4357         * verify.c (get_boxable_mono_type): make typedref types been just
4358         unverifiable. check for void type.
4359
4360         * verify.c (do_unbox_any): added, verify opcode unbox.any.
4361
4362         * verify.c (do_load_function_ptr): accept method spec tokens.
4363
4364 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * marshal.c (mono_class_native_size): Always set *align even if this is called
4367         recursively.
4368
4369 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
4370
4371         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
4372         out-of-date.
4373
4374 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
4375
4376         * verify.c: removed some old unused tables. A huge bunch of small fixes
4377         to things found while testing the verifier with mono basic.
4378
4379         * verify.c (dump_stack_value): dump null literal flag to.
4380
4381         * verify.c (verify_type_compatibility_full): fix comparison
4382         for types that have a generic super type.
4383
4384         * verify.c (verify_stack_type_compatibility): fix compatibility
4385         between null literals and reference types. fix compatibility between
4386         boxed valuetypes and object. fix corner case test for enums.
4387
4388         * verify.c (do_cmp_op): proper verification of cgt.un in case
4389         of reference types.
4390
4391         * verify.c (do_invoke_method): fix error message.
4392
4393         * verify.c (do_store_indirect
4394
4395         * verify.c (check_is_valid_type_for_field_ops): proper verification
4396         of managed pointers to valuetypes and boxed valuetypes. proper verification
4397         of null literals.
4398
4399         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
4400         allow token to be a reference type.
4401
4402         * verify.c (do_cast): proper handling of boxes valuetypes.
4403
4404         * verify.c (do_stelem): proper handling of storing a boxed valuetype
4405         in object[].
4406
4407         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
4408         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
4409         fixed the decoding of unbox_any
4410
4411 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
4412
4413         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
4414
4415 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
4416
4417         * verify.c (do_newobj): do delegate verification.
4418
4419         * verify.c (verify_delegate_compatibility): perform delegate
4420         verification.
4421
4422         * verify.c (verify_ldftn_delegate): perform tests related to
4423         ldftn delegates.
4424
4425         * verify.c (mono_delegate_signature_equal): perform the
4426         slightly diferent signature comparison required by delegates.
4427
4428         * metadata.c (mono_metadata_type_equal_full): added and exported
4429         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
4430         allows signature only comparison.
4431
4432         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
4433         as MONO_INTERNAL.
4434
4435 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
4436
4437         * verify.c: added a bunch of stack_slot_* functions to
4438         make access to stack slot type easier. This is required to
4439         allow optional flags, like null literal, boxed value and
4440         this pointer.
4441         All access paths to IlStackDesc::stype have been changed 
4442         to use these new funcions.
4443         Removed a bunch of unused functions and cleared all warnings.
4444         This patch introduces the usage of the this pointer and 
4445         boxed value flags.
4446
4447 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
4448
4449         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
4450
4451 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
4452
4453         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
4454         match managed version.
4455
4456         * appdomain.c: Bump corlib version.
4457         
4458         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
4459         argument.
4460
4461 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
4462
4463         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
4464         Set public key token to zero-length byte array if assembly is not
4465         strongnamed.
4466
4467 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
4468
4469         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
4470         writing a vtype array elem.
4471
4472 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
4473
4474         * assembly.c (build_assembly_name): return FALSE if length of token is
4475         not 16 (if not "null").
4476         (mono_assembly_name_parse_full): return FALSE if value of version,
4477         culture, token or key is 0.
4478         * icall.c (fill_reflection_assembly_name): add boolean arguments to
4479         specify whether public key and public key token must be set to default
4480         value (zero-length byte array) if not available. Set versioncompat to
4481         SameMachine. If public key is available or the default is set, then
4482         set PublicKey flag.
4483         (ves_icall_System_Reflection_Assembly_FillName): if no public key
4484         is available, use empty byte array as default value. On the 2.0
4485         profile, use default value for public key token if not set.
4486         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
4487         profile, use default value for public key if not set. On the 2.0
4488         profile, use default value for public key token if not set.
4489         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
4490         default values for public key and public key token.
4491
4492 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
4495         field to keep it in synch with the managed object.
4496
4497         * marshal.c (emit_marshal_object): Add support for byref marshalling of
4498         delegates. Fixes #351520.
4499
4500         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
4501         contains defined memory.
4502         
4503         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
4504
4505         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
4506         
4507         * sgen-gc.c (check_consistency): New helper function to do a consistency check
4508         of the GC data structures.
4509
4510         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
4511
4512         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
4513         
4514         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
4515         barrier.
4516         (mono_array_clone_in_domain): Ditto.
4517         (mono_array_clone_in_domain): Ditto.
4518
4519         * threads.c (start_wrapper): Register the thread start argument as a GC root.
4520         (cache_culture): Use a write barrier.
4521
4522         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
4523         (ves_icall_get_property_info): Ditto.
4524
4525         * object.h (MONO_STRUCT_SETREF): New macro.
4526
4527         * class-internals.h (MonoStats): Add some GC statistics.
4528
4529         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
4530
4531 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
4532
4533         * exception.c (mono_exception_from_name_two_strings):
4534         Break from loop after method is found.
4535
4536 2008-01-04  Dick Porter  <dick@ximian.com>
4537
4538         * process.c (process_module_string_read): Rename variable to
4539         reflect correct usage, after fixing bug 345972.
4540
4541 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
4542
4543         * verify.c (mono_type_create_fnptr_from_mono_method): 
4544         created a MonoType function pointer instance to be used during
4545         verification. The verifier releases this memory at end.
4546
4547         * verify.c (mono_method_is_constructor): extracted repeated
4548         checks for constructor into a single class.
4549
4550         * verify.c (do_push_field): use new extracted method
4551         for constructor check.
4552
4553         * verify.c (do_newobj): same.
4554
4555         * verify.c (do_ldftn): renamed to do_load_function_ptr
4556         and make it verify ldvirtftn too.
4557
4558         * verify.c (mono_method_verify: proper verification
4559         of ldvirtftn. release created MonoMethod instances.
4560
4561 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
4562
4563         * verify.c (token_bounds_check): added.
4564
4565         * verify.c (do_ldftn): added.
4566
4567         * verify.c (mono_method_verify): proper verificartion of ldftn.
4568
4569 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
4570
4571         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
4572         than the table row count. It's the resposibility of the caller to
4573         make the bounds check and raise the correct error.
4574
4575         * metadata.c (mono_metadata_decode_row_col): Same.
4576
4577         * loader.c (mono_get_method_from_token): perform bounds check
4578         on token for methoddef table.
4579
4580 2007-12-29  Miguel de Icaza  <miguel@novell.com>
4581
4582         * icall.c
4583         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
4584         assert into a negative result, the managed code already coped with
4585         that.
4586
4587         Some folks on Windows reported this error. 
4588
4589 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
4590
4591         * appdomain.c: Bump corlib version.
4592         * icall.c:
4593         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
4594         CultureInfo.CreateCulture to create CultureInfo for name.
4595         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
4596         create CultureInfo for name. Fixes bug #347174.
4597
4598 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
4599
4600         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
4601         flags.
4602
4603         * verify.c (is_valid_branch_instruction): allow branching to the
4604         first instruction of the protected block.
4605
4606         * verify.c (is_valid_cmp_branch_instruction): same.
4607
4608         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
4609         avoid double initialization.
4610
4611         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
4612         detect which cases the eval stack should just be copied.
4613
4614         * verify.c (mono_method_verify): check if the eval stack
4615         is empty when entering a protected block.
4616
4617 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
4618
4619         * verify.c: added is_clause_in_range, is_clause_inside_range,
4620         is_clause_nested and verify_clause_relationship. They perform
4621         the verifications stated in P1 12.4.2.7.
4622
4623         * verify.c (mono_method_verify): remove some unused variables,
4624         add the new exception clause checks, add instruction border
4625         checks for protected block start/end, improved some error 
4626         messages and fixed a bug in the way invalid instruction access
4627         is detected.
4628
4629 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
4630
4631         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
4632         from GC 7.0 if available.
4633
4634         * object.c: Remove an unused define.
4635         
4636         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
4637
4638         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
4639
4640         * null-gc.c (mono_gc_make_descr_for_array): Implement.
4641
4642         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
4643
4644         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
4645         to take the same arguments as the other make_descr functions.
4646
4647         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
4648
4649         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
4650         directly.
4651
4652         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
4653         mini.c.
4654
4655         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
4656         call to boehm-gc.c.
4657
4658         * boehm-gc.c (mono_gc_register_root): Fix a warning.
4659
4660         * null-gc.c (mono_gc_register_root): Fix a warning.
4661
4662         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
4663
4664         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
4665         (mono_gc_base_init): Call GC_init ().
4666
4667         * null-gc.c: Define mono_gc_register_root () as a no-op.
4668
4669         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
4670
4671 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
4672
4673         * verify.c: add prototype for merge_stacks at top
4674
4675         * verify.c (do_switch): added.
4676
4677         * verify.c (merge_stacks): on some cases the stack merging
4678         was not happening properly. Unequal stack sizes at merge
4679         points should be invalid.
4680
4681         * verify.c (mono_method_verify): added more debug info on stack state.
4682         verify switch properly.
4683
4684 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
4685
4686         * method-builder.h: New file, moved the mono_mb_ declarations here from 
4687         marshal.h.
4688
4689         * boehm-gc.c marshal.c: Include method-builder.h.
4690
4691         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
4692
4693         * marshal.c: Remove some code which is now in method-builder.c.
4694
4695 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
4696
4697         * method-builder.c: New file, extraction of the method builder functionality 
4698         from marshal.c.
4699
4700         * marshal.c: Move the mb functions into method-builder.c.
4701
4702         * marshal.h marshal.c: Export some mono_mb_... functions.
4703
4704         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
4705
4706         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
4707         the caller.
4708
4709         * class.c (mono_class_get_full): Check the token type in the dynamic case.
4710
4711         * loader.c (mono_field_from_token): Ditto.      
4712
4713         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
4714         type as well.
4715         
4716         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
4717         Fixes #342565.
4718
4719         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
4720         a helper function for setting it.
4721
4722         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
4723
4724         
4725         * assembly.c: Significally simplify code now that referenced assemblies are 
4726         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
4727
4728         * threads.h: Don't include  the internal threads-types.h header file. Fixes
4729         #349952.
4730
4731 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
4732
4733         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
4734         instructions that were target of branches or are at protected block boundaries.
4735
4736         * verify.c (in_same_block): handle filter clauses.
4737
4738         * verify.c (is_valid_branch_instruction): added. checks the target of
4739         instructions br or brtrue/false.
4740
4741         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
4742         binary branch instructions such as beq and bge.
4743
4744         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
4745         and made it pin the instruction as been part of the exception block.
4746
4747         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
4748         of in_same_block.
4749
4750         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
4751         of in_same_block.
4752
4753         * verify.c (do_ret): ret from a protected block is unverifiable and
4754         not invalid.
4755
4756         * verify.c (do_static_branch): verify br and br.s instructions.
4757
4758         * verify.c (merge_stacks): add extra param to support detection
4759         of branches in the middle of instructions.
4760         
4761         * verify.c (mono_method_verify): verify branches and exception blocks
4762         that target the middle of instructions. Proper verification of br and br.s.
4763
4764 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
4765
4766         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
4767         skip_visibility field.
4768         (reflection_methodbuilder_from_dynamic_method): Ditto.
4769
4770         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
4771         registrations. Fixes #348193.
4772
4773         * threads.h: Move the internal mono_thread_get_pending_exception () to
4774         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
4775
4776 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
4779         icall registration. Fixes #348193.
4780
4781         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
4782         for corlib classes into object. Fixes #349621.
4783
4784 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
4785
4786         * icall.c (property_accessor_nonpublic): new function to determine
4787         whether an accessor allows a property to be considered non-public.
4788         Returns false for private accessor(s) from parent class, and internal
4789         accessor(s) from parent on 2.0 profile (and higher).
4790         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
4791         to determine whether property should be included if NonPublic flag
4792         is set. Fixes bug #349078.
4793
4794 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
4795
4796         * verify.c (init_stack_with_value): added.
4797
4798         * verify.c (mono_method_verify): extracted common
4799         code for exception initialization into init_stack_with_value.
4800
4801         * verify.c (mono_method_verify): initialize the exception
4802         for handler clauses as well.
4803
4804         * verify.c (mono_method_verify): fix the exception clause
4805         ordering rules, it should use handler end offset and not
4806         start offset.
4807
4808 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
4809
4810         * rawbuffer.c: remove useless warning.
4811
4812 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
4813
4814         * threads.h, threads-types.h: move functions to the correct header
4815         (fixes bug#349952).
4816
4817 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
4818
4819         * verify.c (mono_method_verify): proper verification
4820         of exception handling clauses ranges and fallthru in
4821         and out of protected blocks.
4822
4823 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
4824
4825         * verify.c (mono_method_verify): fixed compilation issue.
4826
4827 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
4828
4829         * verify.c (mono_method_verify): a printf slipped in, changed
4830         to use verifier debug macro.
4831
4832 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
4833
4834         * verify.c (is_correct_leave): check for filter clauses.
4835
4836         * verify.c (do_filter): added.
4837
4838         * verify.c (mono_method_verify): property verification of leave.
4839
4840
4841 2007-12-18  Mark Probst  <mark.probst@gmail.com>
4842
4843         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
4844         Win32 build, until we figure out how to do the proper thing on
4845         Win32.
4846
4847 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
4848
4849         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
4850         by the previous patch.
4851         
4852         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
4853         the assembly resolve handler for refonly assemblies.
4854
4855 2007-12-17  Mark Probst  <mark.probst@gmail.com>
4856
4857         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
4858         Make sure only one thread is allowed to commence shutdown, and
4859         don't allow new threads to be started once shutdown is in
4860         progress.
4861
4862 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
4863
4864         * verify.c (is_correct_endfilter): added.
4865
4866         * verify.c (is_unverifiable_endfilter): added.
4867
4868         * verify.c (do_endfilter): added.
4869
4870         * verify.c (mono_method_verify): property verification of endfilter
4871         and fixed a corner case or endfinally.
4872
4873 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
4874
4875         * verify.h: new flags to support fail fast of unverifiable code and
4876         do non-strict verification. Non-strict verification is required to
4877         have MS runtime compatibility. There are a huge amount of unverifiable
4878         code that it accepts as verifiable. The strict mode verifies the code
4879         as the specs says.
4880         Non-strict mode will be required in cases where code needs to be
4881         accepted as verifiable but fails under strict mode.
4882
4883         * pedump.c: added support to fail fast and non-strict verification.
4884
4885         * verify.c: added support for both fail fast and non-strict verification.
4886
4887 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
4888
4889         * verify.c (is_correct_endfinally): added.
4890
4891         * verify.c (mono_method_verify): property verification of endfinally.
4892
4893 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
4894
4895         * verify.c (in_any_block): check for filter clauses.
4896
4897         * verify.c (is_correct_rethrow): added.
4898
4899         * verify.c (mono_method_verify): property verification of rethrow.
4900
4901         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
4902
4903 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
4904
4905         * verify.c (do_throw): added.
4906
4907         * verify.c (mono_method_verify): property verification of throw
4908
4909 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
4910
4911         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
4912         assemblies. Fixes #346425.
4913
4914 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
4915
4916         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
4917         FieldBuilders.
4918
4919         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
4920
4921         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
4922         prevent asserts when this is called with a token which might not be valid.
4923
4924         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
4925         lookup_dynamic_token_class with valid_token == FALSE.
4926
4927         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
4928
4929         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
4930
4931         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
4932         
4933 2007-12-10  Mark Probst  <mark.probst@gmail.com>
4934
4935         * gc.c: Don't delay threadpool thread finalization unless Mono is
4936         shutting down.
4937
4938 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
4939
4940         * threads.c: turn an assert into a non-fatal warning.
4941
4942 2007-12-09  Robert Jordan  <robertj@gmx.net>
4943
4944         * icall.c (GetVirtualMethod): Add missing argument validation.
4945
4946 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
4947
4948         * verify.c (do_cast): added.
4949
4950         * verify.c (mono_method_verify): property verification of castclass and isinst.
4951
4952
4953 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
4954
4955         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
4956
4957         * verify.c (do_stelem): added.
4958
4959         * verify.c (mono_method_verify): property verification of stelem.X.
4960
4961 2007-12-07  Mark Probst  <mark.probst@gmail.com>
4962
4963         * class.c, class-internals.h: Introduce an environment variable
4964         (MONO_GENERIC_SHARING) through which the extent of generic code
4965         sharing can be controlled (share all classes, share only corlib
4966         classes, or share nothing).
4967
4968         * object.c: Only create runtime generic context for classes for
4969         which sharing is enabled.
4970
4971 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
4972
4973         * verify.c (do_ldelem): refactor it to work with ldelem.any.
4974
4975         * verify.c (mono_method_verify): property verification of ldelem.any.
4976
4977 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
4978
4979         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
4980         added ldelem.X opcodes.
4981
4982         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
4983
4984         * verify.c: proper verification of ldelem.X 
4985
4986 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
4987
4988         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
4989
4990 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4991
4992         * verify.c (mono_method_verify): null literal requires special handling,
4993         the value pushed on stack need to be flagged as so.
4994
4995         * verify.c (do_ldelema): Verify ldelema properly.
4996
4997 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4998
4999         * verify.c: Verify ldlen properly.
5000
5001 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
5002
5003         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
5004         to the target object's type. Fixes #346160.
5005
5006 2007-12-05  Dick Porter  <dick@ximian.com>
5007
5008         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
5009         Solaris needs the same workaround as BSD-derived systems.  Fixes
5010         bug 323524, patch by Burkhard Linke
5011         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
5012
5013 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
5014
5015         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
5016         handle to use when error dialog is shown; otherwise, update mask
5017         to show no error dialog when an error occurs.
5018
5019 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
5020
5021         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
5022
5023         * class.c (mono_class_get_field_default_value): New helper function to initialize
5024         field->def_type and field->data.
5025
5026 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
5027
5028         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
5029         the general one.
5030
5031         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
5032
5033         * marshal.c: Avoid depending on delegate->method_info being set.
5034
5035         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
5036         
5037         * object.c (mono_delegate_ctor): Set delegate->method.
5038
5039         * object-internals.h (struct _MonoDelegate): Add 'method' field.
5040
5041         * appdomain.c: Bump corlib version.
5042
5043 2007-11-27  Raja R Harinath  <harinath@gmail.com>
5044
5045         * metadata.c (mono_generic_inst_equal_full): Short-circuit
5046         equality check if we're comparing canonicalized MonoGenericInsts.
5047
5048 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
5049
5050         * class.c (generic_array_methods): Call mono_class_setup_methods () before
5051         accessing class->methods.
5052
5053 2007-11-22  Dick Porter  <dick@ximian.com>
5054
5055         * threads.c: Ensure that the synch_cs is set before trying to use
5056         it.
5057
5058 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
5059
5060         * profiler.c: r89126 broke the statistial profiler, unbreak.
5061
5062 2007-11-22  Martin Baulig  <martin@ximian.com>
5063
5064         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
5065
5066         * mono-debug.c
5067         (mono_debug_debugger_version): Bump to 3.
5068         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
5069         -> mono_debugger_class_initialized().
5070
5071         * mono-debug-debugger.c
5072         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
5073
5074         * class.c
5075         (mono_debugger_start_class_init_func): Removed.
5076         (mono_debugger_class_loaded_methods_func): Added.
5077         (mono_class_setup_methods): Call it here.
5078
5079 2007-11-22  Martin Baulig  <martin@ximian.com>
5080
5081         * mono-debug.c
5082         (mono_debug_add_delegate_trampoline): New public method.
5083         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
5084
5085         * mono-debug.h
5086         (MonoSymbolTable): Added `global_data_table'.
5087         (MonoDebuggerTypeKind): Removed.
5088
5089 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
5090
5091         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
5092         these methods.
5093
5094         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5095         
5096 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
5097
5098         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
5099
5100 2007-11-20  Martin Baulig  <martin@ximian.com>
5101
5102         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
5103
5104         * mono-debug-debugger.c
5105         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
5106         (mono_debugger_remove_breakpoint): Likewise.
5107         (mono_debugger_check_breakpoints): Likewise.
5108         (mono_debugger_register_class_init_callback): New public method.
5109         (mono_debugger_remove_class_init_callback): Likewise.
5110         (mono_debugger_add_type): Likewise.
5111
5112         * mono-debug-debugger.h
5113         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
5114
5115 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
5116
5117         * class.c: more interface implementations needed for the
5118         array enumerator (fixes bug #341112).
5119
5120 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
5121
5122         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
5123         fix ParamName of ArgumentNullExceptions.
5124
5125 2007-11-17  Miguel de Icaza  <miguel@novell.com>
5126
5127         * reflection.c (mono_reflection_encode_sighelper): Generate the
5128         modopts and modreqs.   I have a useless test that crashes monodis,
5129         but that shows the code working.
5130
5131 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
5132
5133         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
5134         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
5135
5136 2007-11-15  Dick Porter  <dick@ximian.com>
5137
5138         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
5139         When joining a thread, it's the thread that's calling Join that
5140         gets WaitSleepJoin state not the target.  Fixes the standalone
5141         test case in bug 334740, and hopefully the whole bug too.
5142
5143 2007-11-15  Dick Porter  <dick@ximian.com>
5144
5145         * process.c: Read file version info from the files pointed at by
5146         process modules, not the current process.  Fixes bug 315969.
5147
5148         Use windows typedef names in some places to fix warnings on the
5149         windows build.
5150
5151 2007-11-15  Mark Probst  <mark.probst@gmail.com>
5152
5153         * image.c, metadata-internals.h: Added a generic_class_cache hash
5154         to MonoImage for looking up generic classes when sharing generics.
5155
5156 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
5157
5158         * sgen-gc.c: warning cleanups.
5159
5160 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
5161
5162         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
5163         inherited properties.
5164
5165 2007-11-14  Mark Probst  <mark.probst@gmail.com>
5166
5167         * object.c, class-internals.h: Added more information to the
5168         runtime generic context.
5169
5170 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
5171
5172         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
5173         instead of just the target method. Generalize the abstract method handling to
5174         handle any non-static method.
5175
5176         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
5177         mono_marshal_get_delegate_invoke () signature change.
5178
5179 2007-11-13  Mark Probst  <mark.probst@gmail.com>
5180
5181         * class.c, class-internals.h: Made
5182         mono_type_get_basic_type_from_generic () public.  Fixed member
5183         access check for shared generics.
5184
5185         * loader.c: Don't insert field into field cache if it's part of a
5186         non-inflated generic class.
5187
5188         * domain.c, domain-internals.h: The generic sharing context is now
5189         part of the jit info data structure.  Added two accessor
5190         functions.
5191
5192 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
5193
5194         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
5195         the array Get/Set/Address methods, since the JIT inlines them.
5196
5197         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
5198
5199         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
5200         (mono_image_init): Initialize runtime_invoke_direct_cache.      
5201
5202         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
5203         mono_marshal_get_delegate_invoke signature change.
5204
5205         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
5206         an additional argument. Add support for invoking abstract methods.
5207
5208         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
5209
5210         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
5211
5212 2007-11-09  Mark Probst  <mark.probst@gmail.com>
5213
5214         * class.c: Do field layout for open generic classes as well.
5215
5216 2007-11-09  Mark Probst  <mark.probst@gmail.com>
5217
5218         * gc.c, gc-internal.h: Don't finalize threadpool threads with
5219         other objects, because the threadpool is still around.  Put them
5220         in a list instead and after finalizing all other objects in the
5221         root domain shut down the thread pool and then finalize the
5222         threads.  Fixes bug #337383.
5223
5224         * threads.c, thread-types.h: New mono_thread_create_internal()
5225         function for marking a thread with the threadpool flag before it
5226         started.  Set synch_cs to NULL after freeing it.
5227
5228         * threadpool.c: Mark threadpool threads before they start.
5229
5230 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
5231
5232         * reflection.h, reflection.c: don't export random functions
5233         and lazy load dbnull and missing objects.
5234
5235 2007-11-07  Jonathan Chambers <joncham@gmail.com>
5236
5237         * class.c: Initialize COM types if COM interfaces
5238         are present (not just COM classes).
5239         
5240         Code is contributed under MIT/X11 license.
5241
5242 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
5243         * reflection.c:
5244         create_dynamic_mono_image: hook module profiler events (dynamic case).
5245         mono_image_basic_init: hook assembly profiler events (dynamic case).
5246
5247 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
5248         * profiler.c:
5249         simple_appdomain_unload: completely terminate the profiler
5250         instead of only processing the statistical samples.
5251         simple_shutdown: make sure this is really called exactly once,
5252         even in multithreaded applications, and always listen to
5253         appdomain events.
5254         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
5255         here, the "[un]load" functions will do it.
5256         Fixes bugs #333791 and #325261.
5257
5258 2007-11-07  Geoff Norton  <gnorton@novell.com>
5259
5260         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
5261         rather than depend on __APPLE__.
5262
5263 2007-11-07  Mark Probst  <mark.probst@gmail.com>
5264
5265         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
5266
5267 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
5268
5269         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
5270         UTF16 MonoString. Fix the crash from bug #335488
5271
5272 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
5273
5274         * marshal.c: Correct (for non-Win32 OS) length != size in 
5275         mono_string_from_bstr. Fix #339530.
5276
5277 2007-11-06  Geoff Norton  <gnorton@novell.com>
5278
5279         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
5280         to succeed
5281
5282 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
5283
5284         * process.c: Added run-time GetProcessId API detection for Windows.
5285
5286 2007-11-04  Miguel de Icaza  <miguel@novell.com>
5287
5288         * reflection.c  (mono_param_get_objects): If a parameter has the
5289         attribute [System.Runtime.InteropServices.Optional] we should
5290         set the DefaultValue of the ParameterInfo to be
5291         System.Reflection.Missing instead of DBNull.
5292
5293         See bug #339013.
5294
5295         (mono_get_reflection_missing_object): New method,
5296         returns the System.Reflection.Missing.Value singleton instance.
5297
5298 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
5299
5300         * culture-info-table.h : regenerated.
5301
5302 2007-11-02  Jonathan Chambers <joncham@gmail.com>
5303
5304         * icall.c: Use GetEnvironmentStrings on windows
5305         so we are using the same environment block as 
5306         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
5307         #333740.
5308         
5309         Code is contributed under MIT/X11 license.
5310
5311 2007-10-31  Martin Baulig  <martin@ximian.com>
5312
5313         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
5314
5315         * mono-debug-debugger.h
5316         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
5317
5318 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
5321         classes.
5322
5323 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
5324
5325         * culture-info-table.h : regenerated.
5326
5327 2007-10-30  Robert Jordan  <robertj@gmx.net>
5328
5329         * icall-def.h, icall.c:
5330         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
5331
5332         Code is contributed under MIT/X11 license.
5333
5334 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
5335
5336         * class.c (mono_class_setup_vtable): Find the inflated methods in the
5337         inflated class instead of inflating them again.
5338         
5339         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
5340         dynamic case.
5341
5342         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
5343         Call setup_supertypes () after klass->parent is set.
5344         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
5345
5346         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
5347         for inflated instances of not yet created dynamic generic classes.
5348         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
5349         times from inflated_method.
5350         (methodbuilder_to_mono_method): Ditto.
5351
5352 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
5353
5354         * gc.c: code cleanup and removed old untested option of not creating the
5355         finalizer thread.
5356
5357 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
5358
5359         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
5360         creating a jump trampoline for dynamic methods.
5361
5362 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
5363
5364         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
5365         generic TypeBuilders when called from another method of the same type (bug #335131).
5366
5367
5368 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
5369
5370         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
5371         doesn't seem to work perfectly.
5372         
5373         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
5374         called multiple times.
5375         (methodbuilder_to_mono_method): Ditto.
5376         (resolve_object): Inflate FieldBuilder's.
5377
5378 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
5379
5380         * string-icalls.c, string-icalls.h, appdomain.c: patch from
5381         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
5382         RemoveEmptyEntries in the string.Split implementation (bug #322375).
5383
5384 2007-10-26  Dick Porter  <dick@ximian.com>
5385
5386         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
5387         Thread initialisation changes
5388
5389 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
5390
5391         * verify.c: fix compatibility check between arrays and System.Array
5392
5393 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
5396         too. Fixes #336999.
5397
5398 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
5399
5400         * object.c (mono_value_box): Use typed allocation here.
5401
5402 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
5403
5404         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
5405         trampoline instead of compiling the method right away.
5406
5407         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
5408
5409 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
5410
5411         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
5412         related fields for dynamic classes. Fixes #334493.
5413
5414 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
5415
5416         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
5417         
5418         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
5419
5420         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
5421         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
5422
5423         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
5424
5425         * reflection.c (create_generic_typespec): Initialize klass->generic_container
5426         if needed.
5427         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
5428
5429 2007-10-18  Jonathan Chambers <joncham@gmail.com>
5430
5431         * marshal.c: Use correct key when removing item
5432         from ccw_hash.
5433         
5434         Code is contributed under MIT/X11 license.
5435
5436 2007-10-17  William Holmes  <billholmes54@gmail.com>
5437
5438         *marshal.c: Adding a case to marshal booleans to U1
5439
5440         Code is contributed under MIT/X11 license.
5441
5442 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
5443
5444         * class.c (mono_class_from_name): Search the modules compromising dynamic
5445         assemblies. Fixes #331601.
5446
5447 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
5448
5449         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
5450         exception if the type name contains an assembly component. Fixes #334203.
5451
5452         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
5453         modules inside dynamic assemblies. Fixes #334200.
5454         
5455         * reflection.c: Set image->public_key and image->public_key_length;
5456
5457         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
5458         fields.
5459
5460         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
5461         
5462 2007-10-16  Mark Probst  <mark.probst@gmail.com>
5463
5464         * metadata.c: Implemented correct comparing of generic classes.
5465         An inflated generic class can be equal to a non-inflated one if it
5466         is inflated with generic type variables as type arguments.  Fixes
5467         bug #333798.
5468
5469 2007-10-15  Dick Porter  <dick@ximian.com>
5470
5471         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
5472         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
5473         81646.
5474
5475         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
5476         instead of a monitor lock.  This means that monitor_try_enter and
5477         co can set the thread state safely.
5478         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
5479         thread_interrupt_requested, so interrupt actually works.
5480
5481         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
5482         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
5483         state accessor function
5484
5485 2007-10-15  Martin Baulig  <martin@ximian.com>
5486
5487         * mono-debug.h
5488         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
5489         the debugger with the current runtime.
5490
5491 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
5492
5493         * object.c, object-internals.h: added the ability to set a single
5494         trampoline for all the slots in a vtable.
5495
5496 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
5497
5498         * marshal.c: deal with a possible race condition during multicast
5499         delegate invocation.
5500
5501 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
5502
5503         * class.c: ensure value type methods don't have the synchronized
5504         flag set.
5505
5506 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
5507
5508         * string-icalls.c, string-icalls.h: reverted unapproved patch that
5509         breaks the build.
5510
5511 2007-10-11  Joel Reed  <joelwreed@comcast.com>
5512
5513         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
5514         to take an options parameter so that empty entries can be removed during
5515         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
5516
5517 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
5518
5519         * marshal.c: make sure we don't store the signature from a dynamic
5520         method into the runtime invoke cache (bug #327189).
5521
5522 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
5523
5524         * marshal.c: make sure the wrapper methods are properly initialized.
5525
5526 2007-10-11  Mark Probst  <mark.probst@gmail.com>
5527
5528         * metadata.c, metadata-internals.h: Generalized
5529         mono_type_stack_size() to mono_type_stack_size_internal() which
5530         takes an additional argument specifying whether it allows open
5531         types.
5532
5533 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5534
5535         * verify.c (do_invoke_method): handle typedbyref params
5536         correctly and check for unverifiable return values.
5537
5538         * verify.c (do_newobj): fix a warning.
5539
5540 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5541
5542         * verify.c: don't tread typedbyref as allways unverifable,
5543         so uses, like (ld/st)loc.0 are valid. verify for the cases
5544         that it matters, like boxing related operations.
5545
5546 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5547
5548         * verify.c: add verification of the newobj opcode. verification
5549         of delegate instantation still missing due ldftn and virldftn not
5550         pushing the function type on stack
5551
5552 2007-10-08  Mark Probst  <mark.probst@gmail.com>
5553
5554         * class-internals.h: Runtime generic context data structure
5555         definition.
5556
5557         * object.c: Initialization of runtime generic context at runtime
5558         vtable creation time.
5559
5560 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
5561         * class.c (mono_class_create_from_typedef,
5562         mono_class_from_generic_parameter, mono_ptr_class_get,
5563         mono_fnptr_class_get, mono_bounded_array_class_get)
5564         * domain.c (mono_domain_create, mono_domain_free)
5565         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
5566         * image.c (do_mono_image_load, mono_image_close):
5567         Hooked up load-unload profiler events.
5568
5569 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
5570
5571         * domain.c: track statistics about the actual amount of native code
5572         allocated.
5573
5574 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
5575
5576         * class.c: the valuetype enumerators don't have the additional
5577         supertypes interfaces.
5578
5579 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
5580
5581         * class.c: need more interfaces setup for the IEnumerator<T>
5582         object created for arrays (tests/ienumerator-interfaces.2.cs).
5583
5584 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
5585
5586         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
5587
5588 2007-10-05  Alp Toker  <alp@atoker.com>
5589
5590         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
5591         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
5592         #315863.
5593
5594 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
5595
5596         * verify.c (verify_type_compatibility_full): verification of
5597         compatibility improved, validates correctly non-strict checks between
5598         native int and I4 types different than (unsigned)int32.
5599
5600         * verify.c (do_store_indirect): added, do all verification of
5601         ldind.X opcodes. 
5602
5603         * verify.c (get_load_indirect_mono_type): renamed to
5604         get_indirect_op_mono_type, as it now returns the MonoType for 
5605         ldind.X and stind.X opcodes.
5606
5607 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
5608
5609         * reflection.c: Fix the encoding of generic type definition for
5610         TypeBuilders.
5611
5612         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
5613         mono_image_typedef_or_ref but allows to specify if typespec lookups should
5614         be made. Typespec check is done prior to typeref cache lookup.
5615
5616         * reflection.c (mono_image_typedef_or_ref): now just delegate to
5617         mono_image_typedef_or_ref_full.
5618
5619         * reflection.c (encode_generic_class): encode the generic class
5620         directly instead of calling encode_type.
5621
5622         * reflection.c (encode_type): encode the generic type definition
5623         MonoClass as a generic instantiation.
5624
5625         * reflection.c (create_typespec): cache typespec tokens in
5626         the assembly->typespec cache. Don't create typespec for a generic
5627         instance MonoClass. Create typespec for the generic type defintion.
5628
5629         * reflection.c (create_generic_typespec): encode the generic
5630         class directly instead of calling encode_type.
5631
5632         * reflection.c (mono_image_create_token): encode the generic
5633         type definition not using a typespec for MonoType instances.
5634
5635
5636 2007-10-04  Raja R Harinath  <rharinath@novell.com>
5637
5638         Fix #328812
5639         * class.c (mono_image_init_name_cache): Don't return nested
5640         'protected internal' classes.
5641         (mono_class_from_name_case): Likewise.
5642
5643 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
5644
5645         * icall-def.h, icall.c : get_bundled_machine_config() is now the
5646           common function used by both DefaultConfig in System.dll and
5647           InternalConfigurationHost in System.Configuration.dll.
5648
5649 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
5650
5651         * class.c: automatically add to vectors only a few essential explicit
5652         generic interfaces. The rest of the interfaces that arrays should
5653         provide are currently implicitly added (but still not lazily, see the
5654         design in the discussion of bug#325495 for the details of what is
5655         needed for that). Additionally, implicit interfaces are assigned the
5656         same vtable slot as the explicit interfaces (as they are compatible):
5657         this enables huge memory savings since we don't need to instantiate
5658         as many memthods and as large vtables anymore. Also, Since
5659         GetEnumerator<T> returns an instance of a type that is required to
5660         support a similarly large set of interfaces as arrays, we add
5661         implicit interfaces and interface offset sharing support to those
5662         types, too. This change adds all the required interfaces so that
5663         the anonarray.cs test case in the bug report works (we don't add
5664         all the interfaces to arrays of arrays 3-level deep and more because
5665         of the memory requirements explained in the bug and since they are much
5666         less common: the lazy-loading support will enabled them to work, too).
5667
5668 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
5669
5670         * verify.c (merge_stacks): major clean up, all type compatibility
5671         checks are done by verify_type_compatibility. This fix my earlier lack
5672         of understanding of the CLR type system and merge_stacks no longer looks
5673         scary.
5674
5675         * verify.c: fixed some bad spelling.
5676
5677 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
5678
5679         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
5680         a given stack slock.
5681         
5682         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
5683         verify_type_compatibility_full. This removed a near indentical function and fixed
5684         handling of Int32 and IntPtr across all opcodes.
5685
5686 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
5687
5688         * class.c: only vectors have the additional generic interfaces.
5689
5690 2007-10-01  Jonathan Chambers <joncham@gmail.com>
5691
5692         * mono-config.c: Use g_strcasecmp instead of
5693         strcasecmp like everywhere else to fix
5694         compilation with MSVC.
5695         
5696         Code is contributed under MIT/X11 license.
5697
5698 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
5699
5700         * object.c, object-internals.h: refactored the IMT code to enable
5701         building a single slot at a time and lazily creating the IMT trampolines
5702         and thunks.
5703
5704 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
5705
5706         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
5707
5708         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
5709         Fixes #328501.
5710         
5711 2007-09-29  Raja R Harinath  <harinath@gmail.com>
5712
5713         * loader.c (method_from_methodspec): Rearrange to avoid
5714         un-necessary exposition.  Don't assert out if the method's
5715         declaring type is a generic type definition.
5716
5717 2007-09-28  Martin Baulig  <martin@ximian.com>
5718
5719         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
5720
5721 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
5722
5723         * class-internals.h: optimize field layout of MonoClass to
5724         requires less cachelines at runtime and save a few bytes on 64 bit
5725         systems.
5726
5727 2007-09-28  Jb Evain  <jbevain@novell.com>
5728
5729         * reflection.c: when encoding type names in custom attributes,
5730         if the type is a closed generic type, its generic arguments
5731         have to be serialized as AssemblyQualifiedName, so that when
5732         they are deserialized, it's possible to re-create them properly.
5733         Fixes #329450.
5734
5735
5736 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
5737
5738         * object.c, class-internals.h: added delegate-creation counter.
5739
5740 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
5741
5742         * class.c: cleanup of the code that synthetizes interfaces for
5743         arrays in 2.0: saves quit a bit of corlib mempool memory.
5744         Code to fix bug #325495 ifdeffed out for now until the issues
5745         with memory usage and O(n^2) behaviour are fixed.
5746
5747 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
5748
5749         * marshal.c: when possible, do not duplicate the name of the methods
5750         in the method builder and in the generated MonoMethod.
5751
5752 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
5753         * verify.c: added support for type checking ldind_* opcodes.
5754
5755 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
5756
5757         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
5758         which is used to distinguish the fully open instantiation of a TypeBuilder
5759         with the rest. This temporary hack is required to restore the property that
5760         the fully open instantiation is the same type of the generic type definition.
5761
5762         * class-internals.h (mono_generic_class_is_generic_type_definition):
5763         new function as part of the internal API.
5764
5765         * class.c (inflate_generic_type): return NULL when the generic inst is
5766         fully open. The fully open generic type is now the same as the generic type
5767         definition for non TypeBuilder types.
5768
5769         * class.c (mono_generic_class_get_class): removed assert since it is
5770         no longer valid, gklass->cached_class can point to the generic type definition.
5771
5772         * class.c (mono_generic_class_is_generic_type_definition): new.
5773
5774         * metadata.c (mono_generic_class_hash): added is_tb_open field
5775         to the hash calculation.
5776
5777         * metadata.c (free_generic_class): if the generic class is associated
5778         with the generic type definition, its field will come from the mempool and
5779         must not be freed.
5780
5781         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
5782         new, this function identifies the corner case of a TypeBuilder fully open
5783         instantiation.
5784
5785         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
5786         for lookup. Set gclass->cached_class to be the container class in case of
5787         the fully open instantiation of non TypeBuilder types.
5788
5789         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
5790         to compare generic classes.
5791
5792         * reflection.c (method_encode_methodspec): remove assert that
5793         no longer is valid.
5794
5795         * reflection.c (mono_reflection_generic_class_initialize): add
5796         an aditional assert to ensure the proper type is used.
5797
5798 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
5799
5800         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
5801         to enjoy it.
5802
5803 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
5804
5805         * verify.c (push_arg): Fixed support for ldarga
5806         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
5807         MonoType used as first arg in case of instance calls.
5808
5809 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
5810
5811         * verify.c: Support for verifying VAR and MVAR types, 
5812
5813 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
5814
5815         * icall.c (ves_icall_get_property_info): Set the reflected type of the
5816         accessors correctly.
5817
5818 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
5819
5820         * threads.c: support OSX and other systems in
5821         mono_thread_get_stack_bounds (bug #328026).
5822
5823 2007-09-25  Martin Baulig  <martin@ximian.com>
5824
5825         * mono-debug.h
5826         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
5827
5828 2007-09-24  Martin Baulig  <martin@ximian.com>
5829
5830         * mono-debug.h
5831         (MonoDebugClassEntry): Moved the definition of this struct into
5832         mono-debug.c to make it private.
5833
5834         * mono-debug.c
5835         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
5836         type table per symbol file, we don't need to store the symfile id
5837         any longer.
5838
5839 2007-09-24  Martin Baulig  <martin@ximian.com>
5840
5841         Create one type table per symbol file, since a `MonoClass *' gets
5842         invalid when its image is unloaded.
5843
5844         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
5845         (MonoDebugHandle): Added `type_table'.
5846
5847 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
5848
5849         * mempool.c, mempool.h: added mono_mempool_new_size () API
5850         to be able to specify a smaller initial size for the pool.
5851         Adjusted the code to slowly increase pool size before using
5852         the previous default size.
5853         * image.c: use a small initial size for image mempools.
5854
5855 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
5858         Fixes ##320990.
5859
5860         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
5861         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
5862
5863 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * metadata.c (mono_type_create_from_typespec): Remove an invalid
5866         free. Fixes #327438.
5867
5868 2007-09-21  Raja R Harinath  <harinath@gmail.com>
5869
5870         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
5871         generic instantiations, etc.
5872         <MONO_TYPE_ARRAY>: Likewise.
5873
5874 2007-09-21  Martin Baulig  <martin@ximian.com>
5875
5876         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
5877         these structs were never defined.
5878         (MonoDebugHandle): Removed the `_priv' field, it was never used.
5879
5880 2007-09-21  Martin Baulig  <martin@ximian.com>
5881
5882         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
5883
5884 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
5885
5886         * image.c: removed the guid hash tables: we can get the same info
5887         without the additional memory usage hit (partially fixes also bug #327052).
5888
5889 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
5890
5891         * profiler.h, profiler-private.h, profiler.c: add a new profiler
5892         event to handle unloading methods. After the event is called, the
5893         corresponding MonoMethod* must be considered invalid.
5894         * loader.c (mono_free_method): call the new mono_profiler_method_free
5895         event.
5896
5897 2007-09-20  Mark Probst  <mark.probst@gmail.com>
5898
5899         * domain-internals.h: New flag in MonoJitInfo which marks shared
5900         generic methods.  New hash table (shared_generics_hash) in
5901         MonoDomain to keep track of shared generic methods.  Prototypes
5902         for functions to register and lookup shared generic methods.
5903
5904         * domain.c: Support for registering and looking up shared generic
5905         methods via a hash table (shared_generics_hash) in MonoDomain.
5906
5907         * class-internals.h: New exception to signal failure of shared
5908         compilation of a generic method.  New counters for generics
5909         sharing in MonoStats.
5910
5911 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
5912
5913         * image.c, metadata-internals.h: don't keep a file descriptor open
5914         for loaded assemblies (bug#325988).
5915
5916 2007-09-19  Raja R Harinath  <rharinath@novell.com>
5917
5918         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
5919         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
5920         use the corresponding datatypes.
5921         (type_in_image): Update to changes.
5922         (CleanForImageUserData): Simplify.
5923         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
5924         Avoid quadratic behaviour in handling the "stolen" list by
5925         separating the filter predicate out, and by prepending the stolen
5926         items rather than appending them.
5927         (steal_ginst_in_image): Likewise.
5928         (mono_metadata_clean_for_image): Update to changes.
5929
5930 2007-09-19  Martin Baulig  <martin@ximian.com>
5931
5932         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
5933
5934 2007-09-19  Martin Baulig  <martin@ximian.com>
5935
5936         * mono-debug.c (mono_debug_cleanup): Don't call
5937         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
5938
5939 2007-09-19  Raja R Harinath  <harinath@gmail.com>
5940
5941         Fix crash on 'make run-test' in mcs/errors
5942         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
5943         Avoid more potential allocations in mono_class_from_mono_type.
5944         (ginst_in_image): Update to changes.
5945         (gclass_in_image): Rearrange slightly.
5946
5947 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * class.c (mono_class_init): Move the code that sets up class->methods to 
5950         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
5951
5952         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
5953         canonical instance of an inflated generic signature.
5954         (mono_type_create_from_typespec): Remove an invalid free.
5955
5956         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
5957
5958 2007-09-18  Marek Habersack  <mhabersack@novell.com>
5959
5960         * domain-internals.h: added a declaration of the
5961         mono_assembly_load_full_nosearch internal function.
5962
5963         * assembly.c (mono_assembly_load_with_partial_name): use
5964         mono_try_assembly_resolve return value properly.
5965         (mono_assembly_load_full_nosearch): copied the function body from
5966         mono_assembly_load_full, without the code to invoke assembly
5967         search hooks.
5968         (mono_assembly_load_full): calls the above new function and if the
5969         assembly is not resolved, invokes the search hooks.
5970
5971         * appdomain.c (mono_runtime_init): restore the global postload
5972         assembly search handlers.
5973
5974 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * class.c (mono_class_init): Make sure class->methods and class->properties
5977         are never NULL in the generics case.
5978
5979         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
5980
5981 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
5982
5983         * metadata.c (free_generic_class): Disable some code to fix the build.
5984
5985         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
5986
5987         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
5988         from the image mempool.
5989
5990         * metadata.c (free_generic_class): Free more data from the inflated class.
5991
5992         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
5993
5994         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
5995         mempool.
5996         (mono_type_create_from_typespec): Ditto.
5997
5998         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
5999         MonoImage to the caller.
6000         (mono_init_internal): Save the opened image in a global variable.
6001         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
6002
6003         * reflection.c (resolve_object): Fix a leak.
6004
6005         * metadata.c: Fix the freeing of data in the generics caches.
6006         
6007         * metadata.c (free_generic_inst): Comment this out to fix the build.
6008         (free_generic_class): Ditto.
6009
6010         * metadata.c: Free cached generic methods, instantinations and classes when
6011         they are removed from the caches.
6012         (mono_metadata_free_type): Free the type itself.
6013
6014         * class.c: Free the result of mono_class_inflate_generic_type () in a few
6015         places.
6016
6017 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
6018
6019         * boehm-gc.c: restrict managed allocs to __thread supporting
6020         architectures.
6021
6022 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
6023
6024         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
6025         (mono_generic_class_get_class): Fix a leak.
6026
6027         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
6028         mono_metadata_free_type ().
6029         (mono_metadata_inflate_generic_inst): Fix a leak.
6030
6031 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6032
6033         * mono-debug.c (free_header_data): Fix a leak missed earlier.
6034
6035         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
6036         mempool.
6037
6038         * mono-debug.c (mono_debug_close_image): Fix call to 
6039         g_hash_table_remove ().
6040
6041 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
6042
6043         * icall-def.h: redirect all the string ctor to the managed
6044         CreateString () methods.
6045         * string-icalls.c, string-icalls.h: removed dead code for string
6046         ctors and icalls.
6047
6048 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6049
6050         * mono-debug.c: Fix memory leaks.
6051
6052 2007-09-14  Jonathan Chambers <joncham@gmail.com>
6053
6054         * threads-types.h: Implement mono_hazard_pointer_set and 
6055         mono_hazard_pointer_clear macros using do/while(0) to fix
6056         compilation with MSVC.
6057         
6058         Code is contributed under MIT/X11 license.
6059
6060 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6061
6062         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
6063         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
6064
6065 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
6066
6067         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
6068         icalls.
6069
6070 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
6071
6072         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
6073         managed-code allocated as well.
6074
6075 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
6076
6077         * class.c (mono_class_is_assignable_from): Add support for generic variance.
6078
6079 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
6080
6081         * boehm-gc.c: fixed the build after the AOT changes.
6082
6083 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
6084
6085         * wrapper-types.h: Add an ALLOC wrapper type.
6086
6087         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
6088         reference managed allocator methods.
6089
6090 2007-09-12  Marek Safar  <marek.safar@gmail.com>
6091
6092         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
6093         of Type array and not MonoType, a fix suggested by Hari.
6094         
6095 2007-09-12  Jonathan Chambers <joncham@gmail.com>
6096
6097         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
6098         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
6099         
6100         Code is contributed under MIT/X11 license.
6101
6102 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
6103
6104         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
6105
6106 2007-09-12  Marek Habersack  <mhabersack@novell.com>
6107
6108         * image.c (do_mono_image_open): if assembly file fails to open and
6109         MONO_IOMAP is in effect, try to find the path in a
6110         case-insensitive way.
6111
6112         * appdomain.c (mono_runtime_init): do not install postload hooks -
6113         tests show that MS.NET doesn't use anything of that sort to
6114         trigger the AppDomain.AssemblyResolve event.
6115         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
6116         made non-static.
6117         (mono_runtime_init): init portability helpers here.
6118
6119         * assembly.c (mono_assembly_load_with_partial_name): if other   
6120         attempts fail, trigger the AppDomain.AssemblyResolve event handler
6121         to resolve the assembly.
6122
6123         * domain-internals.h: added mono_try_assembly_resolve and marked
6124         it as internal.
6125
6126 2007-09-11  Jb Evain  <jbevain@novell.com>
6127
6128         * object-internals.h (MonoReflectionDynamicMethod): add
6129         a `MonoReflectionType *owner` field. The owner is used
6130         * reflection.c:
6131         (mono_reflection_create_dynamic_method): use the owner of the dynamic
6132         method as the class declaring the dynamic method.
6133         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
6134         dynamic method to the declaring type of the methodbuilder.
6135
6136 2007-09-11  Mark Probst  <mark.probst@gmail.com>
6137
6138         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
6139         rules for calling methods via reflection.
6140
6141 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
6142
6143         * reflection.c (resolve_object): Add support for MonoGenericClass. 
6144         Inflate MonoType's.
6145
6146 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
6147
6148         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
6149         provide a managed method that does fast allocations without needing
6150         a managed->unmanaged transition. Boehm GC implementation currently
6151         enabled for ptrfree objects on sane architectures.
6152
6153 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
6154
6155         * marshal.c, marshal.h: exported a couple of useful functions and
6156         added mono_mb_get_label () to easily handle backward branches.
6157
6158 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
6159
6160         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
6161
6162 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
6163
6164         * loader.c (find_method): Fixed the regression introduced while
6165         fixing bug #81466.
6166
6167 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
6168
6169         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
6170         well.
6171         
6172         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
6173         icall.c reflection.c: Pass a MonoGenericContext argument to 
6174         mono_lookup_dynamic_token ().
6175
6176         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
6177         #82744.
6178         
6179 2007-09-09  Robert Jordan  <robertj@gmx.net>
6180
6181         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
6182         for generic methods.
6183
6184         * object.c (mono_object_get_virtual_method): Handle generic methods.
6185         Fixes bug #78882.
6186
6187         Code is contributed under MIT/X11 license.
6188
6189 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
6190
6191         * image.c: fix locking in mono_image_load_file_for_image ().
6192
6193 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
6194
6195         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
6196         used only as a cache: added an icall to fill it.
6197
6198 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
6199
6200         * reflection.h: exposed mono_reflection_free_type_info
6201         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
6202         since mono_reflection_bind_generic_parameters makes a copy of it.
6203         * reflection.c (free_type_info): subinfos should be freed.
6204         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
6205         made non static.
6206         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
6207         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
6208         this fixes #82695 and #81726.
6209    
6210
6211 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
6212
6213         * process.h, process.c:  added support for user profile/info in
6214           ProcessStartInfo. For now only Windows works.
6215
6216 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6217
6218         * metadata.c: consider the generic arguments when comparing
6219         signatures (bug #82614).
6220
6221 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6222
6223         * cil-coff.h, image.c: updated assembly loader to cope with the
6224         PE32+ 64 bit file format.
6225
6226 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6227
6228         * assembly.c, class.c, domain.c, loader.c: remove useless
6229         inclusion of cil-coff.h.
6230
6231 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
6232
6233         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
6234         if interface is marked with CoClassAttribute. 
6235    
6236         Code is contributed under MIT/X11 license.
6237
6238 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
6239
6240         * sgen-gc.c: ensure no object from the to space is copied again or finalized
6241         if it's seen twice in major collections.
6242
6243 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6244
6245         * sgen-gc.c: big objects are not copied to the gray area, but they
6246         need to be considered for scanning, too, if they are brought alive
6247         by an object ready for finalizations or a survived one.
6248
6249 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6250
6251         * sgen-gc.c: properly account the number of disappearing links when
6252         they are nullified.
6253
6254 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
6255
6256         * sgen-gc.c: share the code to scan the registered roots between the
6257         different types of collections.
6258
6259 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
6260
6261         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
6262
6263 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
6264
6265         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
6266         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
6267
6268 2007-08-28  Mark Probst  <mark.probst@gmail.com>
6269
6270         * security-manager.c (mono_security_manager_get_methods):
6271         LinkDemandSecurityException now has 2 arguments instead of 3.
6272
6273 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
6274
6275         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
6276         platforms which need it.
6277
6278 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6279
6280         * sgen-gc.c: unregister thread data structures with a pthread_key_t
6281         dtor.
6282
6283 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
6284
6285         * threads.c: free the thread static data on thread exit.
6286
6287 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
6288
6289         * class.c: walk the hierarchy to find the generic definition for
6290         a class (fixes runtime part of bug #82498).
6291
6292 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
6293
6294         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
6295         ...
6296
6297         * image.c (mono_image_close): Here. Hopefully fixes #82510.
6298
6299 2007-08-24  Mark Probst  <mark.probst@gmail.com>
6300
6301         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
6302
6303 2007-08-24  Robert Jordan  <robertj@gmx.net>
6304
6305         * appdomain.c: don't perform the ':'->';' substitution on Win32.
6306
6307 2007-08-24  Jb Evain  <jbevain@novell.com>
6308
6309         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
6310         for byref types.
6311
6312 2007-08-24  Mark Probst  <mark.probst@gmail.com>
6313
6314         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
6315         #82286.
6316
6317 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
6318
6319         * assembly.c: Fix a warning.
6320         
6321 2007-08-23  Marek Habersack  <mhabersack@novell.com>
6322
6323         * appdomain.c: parse the <runtime> section looking for the probing
6324         element with the 'privatePath' attribute, which sets additional
6325         directories in which the runtime should look for assemblies.
6326
6327 2007-08-23  Robert Jordan  <robertj@gmx.net>
6328
6329         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
6330         Fixes #82499.
6331
6332 2007-08-23  Martin Baulig  <martin@ximian.com>
6333
6334         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
6335         _mono_debug_init_corlib() and remove it from the header file.
6336
6337 2007-08-23  Martin Baulig  <martin@ximian.com>
6338
6339         * mono-debug-debugger.c
6340         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
6341         don't notify the debugger about it.
6342
6343         * mono-debug-debugger.h
6344         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
6345
6346 2007-08-23  Robert Jordan  <robertj@gmx.net>
6347
6348         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
6349         Code is contributed under MIT/X11 license.
6350
6351 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6352
6353         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
6354
6355 2007-08-22  Martin Baulig  <martin@ximian.com>
6356
6357         * mono-debug.c: Store debugging info on a per-domain basis and
6358         free it on domain unload.  Add support for unloading symbol files.
6359
6360         * mono-debug.h
6361         (MonoDebugList): New typedef.
6362         (MonoSymbolTable):
6363         - add `data_tables and `type_table'.
6364         - replace 'symbol_files' and `num_symbol_files' with a
6365           `MonoDebugList *'.
6366         (mono_debug_data_table): Removed.
6367         (mono_debug_list_add): New public function.
6368         (mono_debug_list_remove): New public function.
6369         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
6370         (mono_debug_init_2_memory): Renamed into
6371         mono_debug_open_image_from_memory().
6372         (mono_debug_close_image): New public function.
6373         (mono_debug_domain_create): Likewise.
6374         (mono_debug_domain_unload): Likewise.
6375         (MONO_DEBUGGER_VERSION): Bump to 60.
6376
6377         * mono-debug-debugger.h
6378         (MonoDebuggerEvent):
6379         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
6380         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
6381         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
6382         - rename `THREAD_CREATED' and `THREAD_EXITED' into
6383           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
6384         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
6385           meaning.
6386         (mono_debugger_add_symbol_file): Removed.
6387         (mono_debugger_add_type): Removed.
6388         (mono_debugger_lookup_type): Removed.
6389         (mono_debugger_lookup_assembly): Removed.
6390
6391         * domain.c
6392         (mono_domain_create): Call mono_debug_domain_create().
6393         (mono_init_internal): Call mono_debug_init_corlib().
6394
6395         * assembly.c
6396         (mono_assembly_close): Call mono_debug_close_image().
6397
6398 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
6399
6400         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
6401         mmap call.
6402
6403 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
6404
6405         * sgen-gc.c: ensure section->pin_queue_end is initialized
6406         correctly when non pinning objects in the section have been found.
6407
6408 2007-08-22  Marek Habersack  <mhabersack@novell.com>
6409
6410         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
6411         containing a list of directories separated by ':'. MSDN docs say
6412         the directories should be separated with ';'. Part of a bugfix for
6413         bug #81446
6414
6415 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
6416
6417         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
6418         it should MonoType and not MonoClass.
6419
6420 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
6421
6422         * culture-info-table.h : regenerated.
6423
6424 2007-08-20  William Holmes  <billholmes54@gmail.com>
6425
6426         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
6427          to call ReplaceFile Kernel32 on windows or in io-layer.
6428         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
6429         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
6430          as an internal call.
6431
6432         Code is contributed under MIT/X11 license.
6433
6434 2007-08-20  Jb Evain  <jbevain@novell.com>
6435
6436         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
6437         and MONO_EXCEPTION_FIELD_ACCESS.
6438
6439         * debug-helpers.[c|h]: new mono_field_full_name function.
6440
6441 2007-08-20  Mark Probst  <mark.probst@gmail.com>
6442
6443         * class.c: Removed class_security_level() and moved it to
6444         security-core-clr.c.
6445
6446         * security-core-clr.c, security-core-clr.h: class_security_level()
6447         is now public and renamed to mono_security_core_clr_class_level().
6448         It also looks for security attributes in the classes a class is
6449         nested in.
6450
6451 2007-08-20  Mark Probst  <mark.probst@gmail.com>
6452
6453         * security-core-clr.c, security-core-clr.h: CoreCLR security
6454         utility functions.
6455
6456         * Makefile.am: Added security-core-clr.[ch].
6457
6458         * security-manager.c, security-manager.h: Functions and enum for
6459         setting and getting the security mode.
6460
6461         * class.c: CoreCLR security checks.
6462
6463 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6464
6465         * icall-def.h, process.c, process.h: implemented icall to get
6466         user/system processor times.
6467
6468 2007-08-17  Mark Probst  <mark.probst@gmail.com>
6469
6470         * domain.c, threads.c, class-internals.h, domain-internals.h: New
6471         reader-lock-free jit_info_table.
6472
6473 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
6474
6475         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
6476
6477         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
6478
6479         * object-internals.h (MonoException): Add missing _data member.
6480
6481 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
6482
6483         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
6484         checking that only methods with matching qname or fqname are picked
6485         from implemented interfaces.
6486
6487 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
6488
6489         * verify.c (do_newarr):added, do type verification of
6490         newarr ops, push the right value on the eval stack.
6491         * verify.c (mono_method_verify): use do_newarr
6492
6493
6494 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
6495
6496         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
6497         factored the common code into get_boxable_mono_type, which
6498         is now using mono_type_get_full, this fixed byref related tests.
6499
6500 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
6501
6502         * class.c: added mono_type_get_full, this function has the same
6503         behavior of mono_class_get_full but the returned MonoType has
6504         all metadata of the associated token in case of a typespec token.
6505         * class.c: added mono_type_retrieve_from_typespec, used by 
6506         mono_type_get_full to retrieve the token type.
6507         * class.c (mono_class_create_from_typespec): changed to use
6508         mono_type_retrieve_from_typespec.
6509         * class.c (mono_ldtoken): changed to use mono_type_get_full
6510         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
6511         * class-internals.h: exported mono_type_get_full for internal use.
6512
6513 2007-08-16  Jb Evain  <jbevain@novell.com>
6514
6515         * domain.c (supported_runtimes): add entry for
6516         the 'moonlight' runtime version.
6517
6518 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
6519
6520         * verify.c (mono_method_verify): small typo sliped in.  
6521
6522 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
6523
6524         * verify.c (do_unbox_value): added, do type verification of
6525         unboxing ops
6526         * verify.c (mono_method_verify): use do_unbox_value
6527
6528
6529 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
6530
6531         * verify.c (dump_stack_value): fixed typo, was printing string
6532         instead of object on stack.
6533         * verify.c (do_box_value): moved the byref check up as it leads
6534         to invalid code and should be done earlier.
6535         * verify.c: improved error messages for and ldobj
6536
6537 2007-08-15  William Holmes  <billholmes54@gmail.com>
6538
6539         * marshal.c (emit_marshal_custom): Omit the call to 
6540           marshal_native_to_managed when calling native to managed 
6541           and the argument is specified as an out argument.
6542
6543         Code is contributed under MIT/X11 license.
6544
6545 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
6546
6547         * verify.c: fixed the type checks for generics, function pointers and vectors.
6548         Added type verification for ldobj and ldtoken. The verifier
6549         would segfault if header or signature of a method contained references
6550         to non-existant types.
6551
6552 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
6553
6554         * marshal.c (cominterop_get_ccw): Patch from
6555         Bill Holmes to no walk up interface hierarchy. 
6556         All parent methods should be present in the interface for COM.
6557    
6558         Code is contributed under MIT/X11 license.
6559
6560 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
6561
6562         * marshal.c (emit_marshal_com_interface): Patch from
6563         Bill Holmes to handle COM Interfaces as return values
6564         for native->managed calls.
6565    
6566         Code is contributed under MIT/X11 license.
6567
6568 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
6569
6570         * marshal.c (cominterop_get_idispatch_for_object): Implement
6571         for runtime callable wrappers.
6572    
6573         Code is contributed under MIT/X11 license.
6574
6575 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
6576
6577         * pedump.c (main): changed from mono_init to mono_init_from_assembly
6578         so 2.0 types are accessible
6579
6580
6581 2007-08-13  Miguel de Icaza  <miguel@novell.com>
6582
6583         * domain.c (mono_init_internal): Call mono_assembly_load_friends
6584         once we load mscorlib.   Due to the order in which we initialize,
6585         the mono_assembly_load_full routine that loads mscorlib did not
6586         load friends.   We now load it once we load the
6587         mono_defaults.internals_visible_class class. 
6588
6589         * assembly.c: Expose the mono_load_friend_assemblies method.
6590
6591 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
6592
6593         * verify.c: improved the handling of boxing, better
6594         type checking for unary ops and conversion. Fix bug
6595         regarding managed pointer compatibility checking
6596
6597 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
6598
6599         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
6600
6601         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
6602
6603 2007-08-09  Raja R Harinath  <rharinath@novell.com>
6604
6605         * reflection.c (dup_type): Remove.
6606         * class.c (dup_type): Remove.
6607         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
6608         instead of the dodgy 'dup_type'.
6609         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
6610         handle the case where 'dup_type' needed the second argument.
6611
6612 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * domain.c: Fix a warning.
6615
6616 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
6617
6618         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
6619         checking that methods with the same fqname are not overridden
6620         with a method from an ancestor.
6621
6622 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
6623
6624         * threads.c (free_thread_static_data_helper): Avoid a crash if
6625         thread->static_data is not yet set.
6626
6627 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
6628
6629         * marshal.c: Use correct image when emitting
6630         native wrapper for COM calls.
6631    
6632         Code is contributed under MIT/X11 license.
6633
6634 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
6635
6636         * icall-def.h, security.c, security.h :
6637           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
6638
6639 2007-08-07  Martin Baulig  <martin@ximian.com>
6640
6641         * mono-debug-debugger.h
6642         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
6643
6644         * domain.c (mono_domain_free): Call
6645         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
6646
6647 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
6648
6649         * verify.c (check_underflow, check_overflow): error message now returns IL offset
6650         * verify.c (in_same_block): code should test if either offset is inside the clauses
6651         * verify.c (mono_method_verify): push the exception into the eval stack of exception
6652         and filter blocks
6653
6654 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
6655
6656         * image.c (mono_image_close): Fix a leak.
6657
6658         * object.c (mono_runtime_invoke_array): Avoid using alloca.
6659
6660         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
6661
6662 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
6663
6664         * domain.c, threads.c, threads-types.h: fix memory retention issue
6665         with thread static variables not being cleared on domain unload.
6666         Reuse thread static slots after domain unload.
6667
6668 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
6669
6670         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
6671         nullable type.
6672
6673         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
6674         now done in mono_runtime_invoke_array.
6675
6676         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
6677         receiver is a nullable type.
6678
6679         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
6680         generic parameter.
6681
6682 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
6683
6684         * marshal.c: Implement COM Objects as return type for 
6685         managed->unmanaged calls. Added Release calls for COM Object
6686         out/return values in managed->unmanaged calls.
6687
6688         Code is contributed under MIT/X11 license.
6689
6690 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6691
6692         * threads.h, threads-type.h: move the hazard pointer declarations
6693         to the private header.
6694
6695 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6696
6697         * file-io.c, appdomain.c: memory leak fixes.
6698
6699 2007-08-02  Dick Porter  <dick@ximian.com>
6700
6701         * socket-io.c
6702         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
6703         SO_REUSEADDR setting into io-layer/sockets.c.
6704
6705 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
6706
6707         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
6708         from Object when called on a generic parameter. Fixes #82211.
6709
6710 2007-08-01  Dick Porter  <dick@ximian.com>
6711
6712         * file-io.c (convert_share): Test FileShare values bit-by-bit.
6713         Fixes bug 79250 yet again.
6714
6715 2007-07-30  Martin Baulig  <martin@ximian.com>
6716
6717         Merged the `debugger-dublin' branch.
6718
6719         * mono-debug.h
6720         (MonoDebugDataTable): New typedef.
6721         (MonoDebugMethodAddressList): New typedef.
6722         (MonoDebugWrapperData): Removed.
6723         (MonoDebugSymbolTable): Removed `current_data_table',
6724         `current_data_table_size', `current_data_table_offset'.
6725         (MonoDebugDataItemType): Moved into mono-debug.c.
6726         (MonoDebugMethodJitInfo): Remove `address'.
6727         (mono_debug_data_table): New global variable.
6728         (mono_debug_lookup_method_addresses): New public function.
6729         (mono_debug_find_method): Take a `MonoMethod *', not a
6730         `MonoDebugMethodInfo *'.
6731
6732         * mono-debug.c: Drop support for the old symbol tables.
6733
6734 2007-06-28  Martin Baulig  <martin@ximian.com>
6735
6736         * mono-debug.c (mono_debug_debugger_version): New public variable.
6737
6738 2007-07-31  William Holmes  <billholmes54@gmail.com>
6739
6740         * metadata.c Changed mono_type_create_from_typespec to not insert
6741           the type into the hash map until after
6742           do_mono_metadata_parse_type has completed.
6743         Fixes Bug #82194
6744         Code is contributed under MIT/X11 license.
6745
6746 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
6747
6748         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
6749         generic parameter. Fixes #82211.
6750
6751 2007-07-27  Jb Evain  <jbevain@novell.com>
6752
6753         * pedump.c (dump_metadata, dump_metadata_header): dump
6754         versions contained in the metadata header.
6755
6756 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6757
6758         * threads.c: register small_id_table with the GC.
6759
6760 2007-07-27  Mark Probst  <mark.probst@gmail.com>
6761
6762         * threads.c, threads.h, class-internals.h, object-internals.h:
6763         Hazard pointers, to be used by lock-free parallel algorithms.
6764
6765 2007-07-26  Dick Porter  <dick@ximian.com>
6766
6767         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
6768         routine on non-windows platforms, as I've not managed to think of
6769         a non-kludgy way of doing this.  Finishes off bug 78739.
6770
6771 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6772
6773         * object.c: properly setup interface_bitmap in proxy vtables.
6774
6775 2007-07-25  Marek Habersack  <mhabersack@novell.com>
6776
6777         * appdomain.c (get_shadow_assembly_location): do not use TickCount
6778         to create unique shadow copy target directories, use the domain's
6779         serial number instead. Each domain gets a unique target directory
6780         that way.
6781
6782         * domain.c (mono_domain_create): added code to increment domain
6783         shadow copy serial number and cache the value in the current
6784         domain structure.
6785
6786         * domain-internals.h (struct _MonoDomain): added a new field -
6787         shadow_serial to hold the serial number used in generation of
6788         shadow-copy directories. This is to make sure that the directory
6789         name is unique for each and every domain created. We avoid a race
6790         condition with overriding assemblies already in use by other app
6791         domains.
6792
6793 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
6794
6795         * class.c (mono_bounded_array_class_get): fixed memory leak when 
6796         binding generic parameters.
6797
6798 2007-07-24  Raja R Harinath  <rharinath@novell.com>
6799
6800         * metadata.c (do_mono_metadata_parse_generic_class): Use
6801         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
6802         error.
6803
6804 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6805
6806         * loader.c, class-internals.h, reflection.c: removed the per-method
6807         generics hashtable: we use the global one through the call of
6808         mono_class_inflate_generic_method ().
6809
6810 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
6811
6812         * class.c, metadata.c, class-internals.h: introduce yet another
6813         generics global cache for inflated methods (fixes 98% of the perf
6814         issue in bug #81806).
6815
6816 2007-07-23  Raja R Harinath  <rharinath@novell.com>
6817
6818         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
6819         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
6820         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
6821         return a MonoGenericInst containing (a copy) of those types.
6822         (mono_metadata_inflate_generic_inst): Update to changes.
6823         (mono_metadata_parse_generic_inst): Likewise.
6824         (mono_get_shared_generic_inst): Likewise.
6825         * reflection.c (mono_class_bind_generic_parameters): Likewise.
6826         (mono_reflection_bind_generic_method_parameters): Likewise.
6827         * metadata-internals.h: Likewise.
6828         * icall.c (free_generic_context): Kill.
6829         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
6830
6831         * reflection.c (reflection_methodbuilder_to_mono_method): Use
6832         mono_metadata_type_dup.
6833         * marshal.c (mono_mb_create_method): Likewise.
6834
6835         * metadata.c (mono_metadata_type_dup): Rename from
6836         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
6837         MonoImage.  Handle a few more cases, esp. when no mempool is given.
6838         * marshal.c, metadata-internals.h: Update to changes.
6839
6840 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
6841
6842         * class.c: fixed a small leak for array classes and removed warning.
6843
6844 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
6845
6846         * loader.c (mono_method_get_param_token): Make this work on generic methods.
6847         Return 0x8000000 for return parameters. Fixes #82161.
6848
6849 2007-07-21  Marek Habersack  <grendello@gmail.com>
6850
6851         * appdomain.c (get_shadow_assembly_location): append the current
6852         ticks value to the path. Avoids overwriting the same assemblies by
6853         several threads at the same time.
6854
6855 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
6856         and Raja R Harinath  <rharinath@novell.com>
6857
6858         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
6859         Simplify slightly.
6860         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
6861         property for testing if a method is a generic method definition.
6862
6863 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
6864
6865         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
6866
6867 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
6868
6869         * verify.c: used function from private branch, reverted to the one in class.h 
6870
6871 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
6872
6873         * verify.c: a typo slipped in and the code wont compile
6874
6875 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
6876
6877         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
6878         disabled box instruction as it is doing the wrong thing
6879         improved stack dump messages, now it is easier to debug type related issues
6880
6881
6882 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
6883
6884         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
6885
6886 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
6887
6888         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
6889         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
6890         grouped with class and valuetype. This change will simply 
6891         the code as it should be handled just like unmanaged pointers.
6892
6893 2007-07-19  Mark Probst  <mark.probst@gmail.com>
6894
6895         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
6896
6897 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
6898
6899         * verify.c: several stack merge issues fixed, reference comparisons now
6900         check the type size. strict type check now works correctly.
6901         added more uses of IS_MANAGED_POINTER macro.
6902         fixed issues pointed by running the test suite against .net.
6903         
6904
6905 2007-07-19  Mark Probst  <mark.probst@gmail.com>
6906
6907         * class.c, loader.c, class-internals.h: Removed the
6908         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
6909         defines.
6910
6911         * icall.c: Better error checking in some internal reflection
6912         methods.
6913
6914 2007-07-18  William Holmes  <billholmes54@gmail.com>
6915
6916         * filewatcher.c : removed unused variable 'filename' in 
6917           ves_icall_System_IO_FSW_SupportsFSW
6918
6919 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
6920
6921         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
6922         obsolete, removed.
6923
6924 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
6925
6926         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
6927         
6928         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
6929
6930 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
6931
6932         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
6933         Implement generics support.
6934         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
6935
6936         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
6937         type_args and method_args arguments.
6938         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
6939         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
6940         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
6941
6942 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
6943
6944         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
6945           It adds a rootimage parameter to mono_reflection_get_type_internal,
6946           adds new function mono_reflection_get_type_with_rootimage and use
6947           the rootimage to resolve the types instead of the current image
6948
6949 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6950
6951         * culture-info-table.h: Forgot to update after r78304.
6952
6953 2007-07-13  Raja R Harinath  <rharinath@novell.com>
6954
6955         * class.c (mono_class_is_open_constructed_type)
6956         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
6957
6958 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
6959
6960         * class.c (mono_bounded_array_class_get):  method fails if used with
6961         an incomplete TypeBuilder enum (no basetype field), fixed it by 
6962         avoiding calculating the size for such array as it cannot be instantiated.
6963         Fix bug #82015
6964
6965 2007-07-12  Raja R Harinath  <rharinath@novell.com>
6966
6967         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
6968         field.
6969         * metadata.c, reflection.c: Update to changes.
6970
6971 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
6972
6973         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
6974         mono_class_is_valid_enum, they are used to valide a enum when loading.
6975         * reflection.c: used new functions to throw TypeLoadException when and
6976         invalid enum is build with TypeBuilder. Fixes #82018
6977   
6978 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
6979
6980         * object.c: forgot commit of mono_class_setup_methods () to access
6981         iface->methods.
6982         * object-internals.h: added a few more handy fields to
6983         MonoIMTCheckItem.
6984
6985 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
6986
6987         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
6988         iface->methods.
6989
6990 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
6991
6992         * class-internals.h, object-internals.h, object.c: IMT-based
6993         interface invocation core from Massimiliano Mantione
6994         (massi@ximian.com) with a reworked arch-specific interface,
6995         bsearch implementation and a few bugfixes and memory savings by me.
6996
6997 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
6998
6999         * class.c (mono_class_create_from_typedef): mono would segfault if 
7000         an enum did not have a __value field. It now throws a TypeLoadException
7001         for such cases. Fix bug #82022
7002
7003 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
7006
7007 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7008
7009         * class.c (mono_class_init): If a class is already inited but has
7010         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
7011
7012 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7013
7014         * class.c: Properly handle the case of an unimplemented interface
7015         method.  Fixes: 81673.
7016
7017 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7018
7019         * class-internals.h, object.c: cleanup patch from massi: use
7020         MonoVTable->interface_bitmap since the vtable interfaces offset array
7021         is going away.
7022
7023 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7024
7025         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
7026         GetMDStreamVersion icall instead.
7027
7028 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7029
7030         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
7031         not use mono_dl_build_path() with a full library name: makes
7032         fallbacks to libgaim and libfam work.
7033
7034 2007-07-06  William Holmes  <billholmes54@gmail.com>
7035
7036         * assembly.c: Added a continue statement in probe_for_partial_name when
7037          parse_assembly_directory_name fails.  Fixes : 82002
7038
7039 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
7040
7041         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
7042         and added a verification  for TYPEDBYREF.
7043         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
7044         make native int interchangeable with int32 and some small cleanup and formating.
7045         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
7046         handle byref of byref.
7047         * verify.c (push_local): handle byref of byref.
7048         * verify.c (do_binop): invalid mix of values is unverifiable
7049         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
7050         added visibility checks
7051         * verify.c (field related method): added visibility checks
7052         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
7053
7054 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
7055
7056         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
7057         string.
7058
7059 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7060
7061         * profiler.c (mono_profiler_load): Fix an off-by-one error.
7062
7063         * marshal.c (emit_marshal_string): When returning a string from managed code,
7064         allways make a copy even for unicode strings. Fixes #81990.
7065
7066 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
7067
7068         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
7069         of byref generic inst types (bug #81997).
7070
7071 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7072
7073         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
7074         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
7075
7076 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
7077
7078         * marshal.c (emit_marshal_string): Add support for unicode strings in
7079         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
7080
7081 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
7082
7083         * verify.c: field load/store are now verified, missing only access checks now
7084
7085 2007-06-28  Martin Baulig  <martin@ximian.com>
7086
7087         * mono-debug.c (mono_debug_debugger_version): New public variable.
7088
7089 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
7090
7091         * locales.c: When constructing DateTimeFormat or NumberFormat for
7092         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
7093         MonoCultureInfo contructed from the current locale is always
7094         read-only and has UseUserOverride set to true. All MonoCultureInfo
7095         instances returned for GetCultures have both IsReadOnly and
7096         UseUserOverride set to true. Fixes part of bug #81930.
7097
7098 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
7099
7100        * icall-def.h: Update System.__ComObject icalls
7101        * marshal.c: Avoid managed transition (and object creation)
7102        when looking up COM interface in RCW.
7103        * marshal.h: Ditto.
7104        
7105        Code is contributed under MIT/X11 license.
7106
7107 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
7108
7109         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
7110         to avoid crashes during assembly unloading.
7111
7112 2007-06-22  Raja R Harinath  <rharinath@novell.com>
7113
7114         Fix MethodInfo.IsGenericMethodDefinition
7115         * reflection.c (mono_reflection_bind_generic_method_parameters):
7116         Rearrange code to ensure we always uses a generic method definition.
7117         * class.c (mono_class_inflate_generic_method_full): Set
7118         'generic_container' field only for generic method definitions.
7119         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
7120         Use presense of 'generic_container' field as indication of being a
7121         generic method definition.
7122
7123 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
7124
7125         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7126
7127         * object-internals.h: Reflect changes in the layout of the managed Delegate
7128         class.
7129         
7130         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
7131         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
7132         runtime memory used by the dynamic method. Fixes #77146.
7133
7134 2007-06-21  Dick Porter  <dick@ximian.com>
7135
7136         * file-io.h: 
7137         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
7138         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
7139         81767.
7140
7141 2007-06-21  Raja R Harinath  <rharinath@novell.com>
7142
7143         * reflection.c (method_encode_methodspec): Add a tripwire.
7144         * class.c (inflate_generic_type): The fully open generic type is
7145         not the same as the generic type definition.
7146
7147 2007-06-21  Martin Baulig  <martin@ximian.com>
7148
7149         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
7150
7151         * mono-debug-debugger.h
7152         (MonoDebuggerBreakpointInfo): Removed.
7153         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
7154         (mono_debugger_remove_breakpoint): Likewise.
7155         (mono_debugger_breakpoint_callback): Likewise.
7156         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
7157
7158 2007-06-21  Raja R Harinath  <rharinath@novell.com>
7159
7160         * metadata.c (mono_metadata_lookup_generic_class): The fully open
7161         generic type is not the same as the generic type definition.
7162         * class.c (mono_generic_class_get_class): Likewise.
7163
7164 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
7165
7166         * icall.c: The second argument to 
7167         System.Reflection.MethodBase.GetMethodFromHandleInternalType
7168         is a MonoType not a MonoClass.
7169
7170 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
7171
7172         * verify.c: support for function pointers in the verifier
7173
7174 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
7175
7176         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
7177
7178 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
7179
7180         * assembly.c: removed Mono.Data.SqliteClient from the list of
7181         forward-compatible assemblies as it breaks the ABI (bug #81899).
7182
7183 2007-06-19  Raja R Harinath  <rharinath@novell.com>
7184
7185         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
7186         lookup/update with the loader lock.
7187         * reflection.c (mono_class_bind_generic_parameters): No need to
7188         protect mono_metadata_lookup_* with the loader lock.
7189         * class.c (inflate_generic_type): Likewise.
7190         
7191         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
7192         on a generic instantiated type.
7193
7194 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
7195
7196         *verify.c: produce meanfull error messages on verification error
7197         *verify.c: fixed some cases of verification errors reported as validation errors
7198         *pedump.c: fixed the error name array, now it shows validation errors properly
7199         *verify.h: fixed the contant that should be used for verification errors
7200
7201 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7202
7203         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
7204         for bug #77596, 81858 and 80743 (generics data structures on domain
7205         unload).
7206
7207 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7208
7209         Avoid allocating 'MonoGenericContext' on the heap.
7210         * class-internals (_MonoMethodInflated::context): Make field
7211         inline, not a pointer.
7212         * loader.c (method_from_methodspec): Allocate 'new_context' on the
7213         stack.  Use the context embedded within the inflated method as the
7214         hash key, rather than 'new_context'.
7215         * class.c (inflate_generic_context): Simplify.  Return a struct
7216         rather than allocating on the heap.
7217         (mono_class_inflate_generic_method_full): Update to changes.  Now,
7218         doesn't salt away a copy of the context -- simplifying the
7219         lifetime rules of a 'MonoGenericContext *'.
7220         (mono_method_get_context): Return pointer to embedded context.
7221         (setup_generic_array_ifaces): Allocate temporary context on stack.
7222         * reflection.c (inflate_mono_method): Likewise.
7223         (mono_reflection_bind_generic_method_parameters): Likewise.
7224         Use the context embedded within the inflated method as the hash key.
7225
7226         Avoid a source of allocation of 'MonoGenericContext'.
7227         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
7228         and 'cached_context' fields into embedded 'MonoGenericContext' field.
7229         * class.c: Update to changes.
7230         (mono_generic_class_get_context): Simplify drastically.  Now just
7231         returns a pointer to the field.
7232         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
7233         argument as a const pointer.
7234         (mono_metadata_generic_context_equal): Likewise.
7235         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
7236         Update to changes.
7237
7238 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
7239
7240         * verify.c improved the handling of brtrue/brfalse, factored out common code
7241
7242 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7243
7244         Kill MonoGenericMethod.
7245         * class-internals.h (MonoGenericContext::method_inst): Rename from
7246         'gmethod' and convert to a MonoGenericInst.
7247         (MonoGenericMethod): Remove.
7248         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
7249         * loader.c (method_from_methodspec): Update to changes.  Use a
7250         MonoGenericContext as the key to the hashtable.
7251         * metadata.c (mono_metadata_generic_context_equal): Rename from 
7252         'mono_metadata_generic_method_equal' and take MonoGenericContext.
7253         (mono_metadata_generic_context_hash): Likewise from
7254         'mono_metadata_generic_method_hash'.  Change hash function.
7255         (mono_metadata_load_generic_params): Update to changes.
7256         (mono_get_shared_generic_method): Remove.
7257         * metadata-internals.h (mono_get_shared_generic_method): Remove.
7258         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
7259         (inflate_generic_context): Likewise.
7260         (mono_class_inflate_generic_method_full): Likewise.
7261         (setup_generic_array_ifaces): Likewise.
7262         (mono_class_create_from_typespec): Likewise.
7263         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
7264         (method_encode_methodspec): Update callsite.
7265         (reflection_methodbuilder_to_mono_method): Update to changes.
7266         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
7267         MonoGenericContext as the key to the hashtable.
7268         (inflate_mono_method): Update to changes.
7269
7270         * class-internals.h (MonoGenericMethod::container): Remove.
7271         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
7272
7273 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
7274
7275         * profiler-private.h, profiler.c, profiler.h: added API to profile
7276         exception events.
7277
7278 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
7279
7280         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
7281
7282 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
7283
7284         * verify.c: method invocation is now validated, now we verify parameter types on stack.
7285         Fixed overflow and underflow not aborting the verification process.
7286
7287 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7288
7289         * class-internals.h (MonoStats): Added stats entries for dynamic
7290         code allocations.
7291
7292 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
7293
7294         * loader.c (mono_free_method): Free header->locals and header->clauses.
7295
7296         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
7297         dynamic case.
7298
7299         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
7300
7301         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
7302
7303 2007-06-12  Raja R Harinath  <rharinath@novell.com>
7304
7305         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
7306         the tables.
7307
7308 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
7309
7310         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
7311
7312 2007-06-11  Raja R Harinath  <harinath@gmail.com>
7313
7314         MonoGenericMethod on a diet
7315         * class-internals.h (_MonoMethodInflated::reflection_info): Move
7316         here ...
7317         (_MonoGenericMethod::reflection_info): ... from here.
7318         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
7319         Update to changes.
7320         * reflection.c (inflate_mono_method): Likewise.
7321         (mono_reflection_bind_generic_method_parameters): Likewise.
7322
7323 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
7324
7325         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
7326         *verify.c: factored long ldarg forms to share code with short forms
7327
7328 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
7329
7330         *verify.c: fixed code formating factored some duplicate code
7331         into a new function
7332
7333         *verify.h: fixed binary incompatibility introduced earlier
7334
7335         *pedump.c: fixed formating
7336
7337 2007-06-11  Raja R Harinath  <harinath@gmail.com>
7338
7339         Fix assertion when disassembling Mono.C5.dll
7340         * loader.c (method_from_methodspec): Avoid inflating a method
7341         twice with the same context.  If the methodref is inflated, use
7342         the declaring method instead.
7343
7344         * class.c (mono_class_from_generic_parameter): Fix case similar to
7345         bug #81830 handled below, but for method containers.
7346
7347 2007-06-10  Raja R Harinath  <harinath@gmail.com>
7348
7349         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
7350         get_shared_generic_class.  Directly inflate the instance.
7351         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
7352         (inflate_generic_class): Delete.
7353         (get_shared_generic_class): Delete.  Move setting of
7354         'cached_class' and 'cached_context' ...
7355         * metadata.c (mono_metadata_lookup_generic_class): ... here.
7356
7357         * metadata.c (mono_metadata_lookup_generic_class): Change
7358         signature to take the components of a MonoGenericClass rather than
7359         an allocated MonoGenericClass.  Change semantics to be intern-like.
7360         * reflection.c (mono_class_bind_generic_parameters): Update to
7361         changes.  Make locking region tighter.
7362         * class.c (inflate_generic_class): Update to changes.
7363         (get_shared_generic_class): Likewise.
7364         * metadata-internals.h: Likewise.
7365
7366         * reflection.c (mono_class_bind_generic_parameters): Take and
7367         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
7368         (mono_reflection_bind_generic_parameters): Use
7369         'mono_class_bind_generic_parameters' rather than duplicate the code.
7370         * class.c (mono_bounded_array_class_get): Update to changes.
7371         * object-internals.h: Likewise.
7372
7373         * reflection.c (mono_class_bind_generic_parameters): Only support
7374         parameterizing generic type definitions.  Remove support for other
7375         open types.
7376
7377 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
7380
7381         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
7382         in the dynamic case.
7383
7384 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
7385
7386         * threads.c: When cleaning up thread, reset the Background bit.
7387         Fixes bug #81720.
7388
7389 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
7390
7391        * metadata.c: Move variable declarations to top of scope.
7392        * verify.c: Move variable declarations to top of scope.
7393
7394        Code is contributed under MIT/X11 license.
7395
7396 2007-06-08  Raja R Harinath  <rharinath@novell.com>
7397
7398         * reflection.c (mono_class_bind_generic_parameters): Replace
7399         open-coded loop with mono_metadata_inflate_generic_inst.
7400
7401         * class.c (get_shared_generic_class): Don't call
7402         mono_get_shared_generic_inst.  Use the container's own
7403         'class_inst'.
7404
7405         * metadata.c (mono_metadata_load_generic_params): Move
7406         initialization of 'context' field here from ...
7407         * class.c (mono_class_create_from_typedef): ... here, and ...
7408         * loader.c (mono_get_method_from_token): ... here.
7409
7410         * class.c (get_shared_generic_class): Rename from
7411         mono_get_shared_generic_class and make static.
7412         (mono_get_shared_generic_inst): Move to metadata.c.
7413         * loader.c (mono_get_shared_generic_method): Likewise.
7414         * class-internals.h, metadata-internals.h: Update to changes.
7415
7416         Fix #81830
7417         * class.c (mono_class_from_generic_parameter): Don't assume a
7418         generic container owner exists.  Generic containers from monodis
7419         don't have any.
7420
7421 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
7422
7423         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
7424         * verify.h: new typedefs to returns the non-verifiable status
7425         * verify.c: initial implementation of generics, stack merging and object compatibility check
7426
7427 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7428
7429         * class.c, image.c, class-internals.h (MonoImage): class_cache is
7430         a MonoInternalHashTable again (fixed bug in internal hash table
7431         code).
7432
7433 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7434
7435         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
7436         MonoInternalHashTable again (fixed bug in internal hash table
7437         code).
7438
7439 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7440
7441         * class.c, image.c, class-internals.h, domain.c,
7442         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
7443         changes.  Have to figure out what makes them break the SWF
7444         regression.
7445
7446 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7447
7448         * class.c, image.c, class-internals.h (MonoImage): class_cache is
7449         a MonoInternalHashTable now.
7450
7451 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7452
7453         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
7454         MonoInternalHashTable now.
7455
7456 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7457
7458         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
7459         invoke_impl code.
7460
7461         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
7462
7463         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
7464         dependent trampoline.
7465
7466         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7467
7468         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
7469
7470 2007-05-29  Robert Jordan  <robertj@gmx.net>
7471
7472         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
7473
7474 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
7475
7476         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
7477
7478 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
7479
7480        * marshal.c: Fix interface lookup loops for
7481        cominterop_get_com_slot_for_method and 
7482        cominterop_get_method_interface. Only need to lookup
7483        if type is a class, else use interface type method is on.
7484
7485        Code is contributed under MIT/X11 license.
7486
7487 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
7488
7489         * reflection.c: HasSecurity can be present even if no specially 
7490         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
7491         SecurityAttribute). Fix CAS regression tests on buildbot.
7492
7493 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7494
7495        * appdomain.c: Add configure checks for header files.
7496        * image.c: Add configure checks for header files.
7497        * file-io.c: Add configure checks for header files.
7498        * debug-mono-symfile.c: Add configure checks for header files.
7499        * threadpool.c: Add configure checks for header files.
7500        * console-io.c: Add configure checks for header files.
7501        * profiler.c: Add configure checks for header files.
7502        * rawbuffer.c: Add configure checks for header files.
7503        * icall.c: Add configure checks for header files.
7504        * rand.c: Add configure checks for header files.
7505        * socket-io.c: Add configure checks for header files.
7506
7507        Code is contributed under MIT/X11 license.
7508
7509 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
7510
7511         * reflection.c (mono_custom_attrs_from_builders): Remove the 
7512         assertion as it breaks the build.
7513         
7514         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
7515
7516         * reflection.c (lookup_custom_attr): Make a copy here too.
7517
7518         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
7519         dynamic images.
7520
7521         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
7522         images.
7523
7524         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
7525         info.
7526
7527 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
7530         (load_cattr_value): Ditto.
7531
7532 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
7533
7534         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
7535
7536 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
7537
7538         * threads.c: In "start_wrapper", set apartment_state to MTA if
7539         apartment_state is Unknown and we're running on 2.0 profile or
7540         higher.
7541         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
7542         to main method, then set apartment_state to Unknown on 1.0 profile,
7543         and MTA on 2.0 profile.
7544
7545 2007-05-16  Jb Evain  <jb@nurv.fr>
7546
7547         * class-internals.h (MonoDefaults): Add an attribute_class and
7548           customattribute_data_class.
7549         * domain.c (mono_init_internal): Populate them.
7550         * reflection.c: Use them to remove duplicates. Make a vew
7551         MonoClass variables `static'.
7552
7553 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7554
7555         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
7556         step in implementing IMT, so that all isinst checks now can go
7557         through the bitmap.
7558         This was needed because vtables for TransparentProxy need to look
7559         like the vtable of the "target" class, so they need to point to
7560         its interface bitmap directly.
7561
7562         * object.c: inside "mono_class_create_runtime_vtable" and
7563         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
7564
7565 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
7566
7567         * object-internals.h
7568           culture-info.h : added territory field in MonoCulture and
7569           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
7570         * locales.c : fill territory field above too.
7571         * culture-info-table.h : regenerated.
7572
7573 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
7576         Fixes #81599.
7577
7578 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
7579
7580         * object.c: Always initialize apartment, even if 
7581         there is no custom attributes on entry point.
7582         
7583         Code is contributed under MIT/X11 license.
7584
7585 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
7586
7587         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
7588         * metadata.c: If no encoding is set, check for unicode
7589         on class.
7590         
7591         Code is contributed under MIT/X11 license.
7592
7593 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
7594
7595         * threads.c: Handle if mono_thread_current returns NULL 
7596         
7597         Code is contributed under MIT/X11 license.
7598
7599 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
7600
7601         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
7602         in start_wrapper. Added mono_thread_init_apartment_state and
7603         mono_thread_cleanup_apartment_state.
7604         * object.c: Initialize thread apartment state on main thread
7605         by checking for STAThreadAttribute on entry point.
7606         * object-internals.h: Add apartment_state field to MonoThread.
7607         * threads-types.h: Add unmanaged definition of 
7608         System.Threading.ApartmentState, MonoThreadApartmentState.
7609         
7610         Code is contributed under MIT/X11 license.
7611         
7612 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
7613
7614         * class.c: Fix windows build.
7615         * class-internals.h: Fix windows build.
7616         
7617         Code is contributed under MIT/X11 license.
7618
7619 2007-05-08  Robert Jordan  <robertj@gmx.net>
7620
7621         * process.c (CreateProcess_internal):
7622         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
7623         .CreateNoWindow was specified. Fixes #81496.
7624
7625 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7626
7627         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
7628         step in implementing IMT, replaced it with two compact arrays
7629         (interfaces_packed and interface_offsets_packed) and a bitmap that
7630         is used for isinst checks (interface_bitmap).
7631
7632         * class.c: (compare_interface_ids): compare function to pass to
7633         bsearch when looking for an interface with a given id.
7634         (mono_class_interface_offset): reimplemented using bsearch on
7635         interfaces_packed, getting the offset from interface_offsets_packed.
7636         (print_implemented_interfaces): utility debugging function.
7637         (setup_interface_offsets): reworked to initialize interfaces_packed,
7638         interface_offsets_packed and interface_bitmap.
7639
7640         * object.c: replaced all accesses to "MonoClass.interface_offsets"
7641         with uses of interfaces_packed and interface_offsets_packed.
7642
7643 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7644
7645         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
7646         mono_class_interface_offset prototype to wrap all accesses to
7647         "MonoClass.interface_offsets".
7648
7649         * class.c: Implemented mono_class_interface_offset, and wrapped all
7650         accesses to "MonoClass.interface_offsets".
7651
7652         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
7653         "MonoClass.interface_offsets".
7654
7655 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
7656
7657         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
7658         GetMethodFromHandle overloads (bug #78637).
7659
7660 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
7661
7662         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
7663         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
7664
7665 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
7666
7667         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
7668         #81498.
7669
7670         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
7671         gracefully.
7672         (mono_custom_attrs_from_index): Ditto.
7673
7674         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
7675         Fixes #81501.
7676
7677 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7678
7679         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
7680         is now allocated from a mempool.
7681
7682 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
7683
7684         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
7685         caller holds threads_lock, leading to deadlocks. Fixes #81476.
7686
7687 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7688
7689         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
7690         mono_loader_clear_error () too late. Fixes #81463.
7691
7692 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
7693
7694         * culture-info-table.h : regenerated.
7695
7696 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7697
7698         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
7699         is missing.
7700
7701 2007-04-25  Dick Porter  <dick@ximian.com>
7702
7703         * Makefile.am: Put the mingw enforced-optimisation back into the
7704         PLATFORM_WIN32 section.
7705
7706 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7707
7708         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
7709         patch.
7710
7711         * image.c (mono_image_load_module): New API function to load a module reference.
7712
7713         * image.c (load_modules): Load modules lazily. Fixes #80812.
7714
7715         * class.c (mono_class_from_typeref): Use mono_image_load_module.
7716         
7717         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
7718
7719         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
7720         to mono_image_load_module_dynamic.
7721
7722 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
7723
7724         * marshal.c: Fix calling convention for CCW on non-windows
7725         platforms. STDCALL on windows, CDECL everywhere else to work 
7726         with XPCOM and MainWin COM.
7727         
7728         Code is contributed under MIT/X11 license.
7729
7730 2007-04-23  Martin Baulig  <martin@ximian.com>
7731
7732         Fix #80969.
7733
7734         * loader.c
7735         (method_from_memberref): Added `gboolean *used_context' argument.
7736         (mono_get_method_from_token): Likewise.
7737         (mono_get_method_full): Don't insert the method in the cache when
7738         `used_context' is true.
7739
7740 2007-04-23  Raja R Harinath  <rharinath@novell.com>
7741
7742         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
7743
7744         * reflection.c (mono_reflection_bind_generic_parameters): Don't
7745         create new MonoTypes for returned types.
7746         * class.c (mono_generic_class_get_class): Export mono-internal.
7747         * class-internals.h: Update to changes.
7748
7749 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
7750
7751         * threadpool.c, threadpool.h, icall-def.h: patch from
7752         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
7753
7754 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
7755
7756         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
7757         
7758         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
7759
7760         * threads.c (mono_thread_get_stack_bounds): New helper function.
7761
7762         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
7763         Correctly compute stack bounds when attaching. Fixes #81394.
7764
7765 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
7766
7767         * reflection.c: fix handling of doubles in custom attributes
7768         for the arm-fpa format (bug #81368).
7769
7770 2007-04-18  Raja R Harinath  <rharinath@novell.com>
7771
7772         * reflection.c (assembly_add_win32_resources): Mildly relax an
7773         bounds check to let the end pointer point just past the end of the
7774         allocated buffer.  (may fix #81384)
7775
7776 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
7777
7778         * culture-info-table.h : regenerated.
7779
7780 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
7781
7782         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
7783         the thread is aborted early.
7784
7785 2007-04-05  Dick Porter  <dick@ximian.com>
7786
7787         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
7788         FindFirstFile()/FindNextFile() to find entries.  This lets the
7789         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
7790         81038.
7791
7792         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
7793         the parameters of
7794         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
7795
7796 2007-04-04  Martin Baulig  <martin@ximian.com>
7797
7798         * debug-helpers.c
7799         (mono_method_desc_full_match): Add support for nested classes.
7800
7801 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
7802
7803         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
7804
7805 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
7808         waiting for too many threads.
7809
7810 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
7811
7812         * environment.c: Fix return value check on uname so we can get the 
7813         executing version on Solaris operating systems.
7814
7815 2007-03-28  Jb Evain  <jbevain@gmail.com>
7816
7817         * class.c (mono_type_get_name_recurse): Complete the
7818         fix for the creation of assembly qualified names for
7819         pointer types. Fixes #81208.
7820
7821 2007-03-27  Dick Porter  <dick@ximian.com>
7822
7823         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
7824         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
7825         changed.
7826
7827         * threads.c
7828         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
7829         the value of ReleaseMutex().
7830
7831 2007-03-27  Dick Porter  <dick@ximian.com>
7832
7833         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
7834         in little-endian order, not network endian, so must be converted
7835         to host endian here.  Fixes bug 80593.
7836
7837 2007-03-22  Jb Evain  <jbevain@gmail.com>
7838
7839         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
7840         qualified names for pointer types. Fixes #81208.
7841
7842 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
7843
7844         * marshal.c: Add support for PreserveSigAttribute. 
7845         
7846         Code is contributed under MIT/X11 license.
7847
7848 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
7849
7850         * process.c: Fix endianness issues. Fixes #81126.
7851
7852         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
7853         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
7854
7855         * image.c (mono_image_lookup_resource): Make this work on big-endian
7856         machines.Change API contract so the caller needs to free the return value.
7857         
7858         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
7859         API change.
7860         
7861 2007-03-14  Martin Baulig  <martin@ximian.com>
7862
7863         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
7864         mono_type_get_desc() as well.
7865
7866 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
7867
7868         * icall.c:  Fix environ access in VS.  
7869         
7870 2007-03-13  Alp Toker  <alp@atoker.com>
7871
7872         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
7873         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
7874         #63841.
7875
7876 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
7877
7878         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
7879         circular references among dynamic methods. Fixes #81091.
7880
7881         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
7882
7883 2007-03-09  Martin Baulig  <martin@ximian.com>
7884
7885         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
7886
7887 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
7888
7889         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
7890         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
7891         
7892         Code is contributed under MIT/X11 license.
7893         
7894 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
7895
7896         * loader.c: Reapply patch for bug #79424.
7897
7898 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
7899
7900         * metadata.c (mono_type_to_unmanaged): Only convert object to
7901         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
7902
7903 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
7904
7905         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
7906         (and incorrectly set) is_reference field from MonoGenericInst.
7907
7908 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
7909
7910         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
7911         a little earlier.
7912
7913         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
7914
7915         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
7916
7917 2007-03-05  Miguel de Icaza  <miguel@novell.com>
7918
7919         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
7920         FileOptions.1 value to mean "temporary", map that to
7921         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
7922
7923         Fixes 80688
7924
7925 2007-03-03  Marek Habersack  <mhabersack@novell.com>
7926
7927         * appdomain.c: implement MS .Net style shadow copying. Copies of
7928         the assemblies are made in a subdirectory of the dynamic base
7929         directory, the assembly names are preserved.
7930         Copy .mdb and .config files along with the assemblies being shadowed.
7931
7932 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
7935         (emit_marshal_handleref): Ditto.
7936
7937         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
7938         on Visual C++. Fixes #80671.
7939
7940 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
7941
7942         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
7943         for clone operations.
7944
7945 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
7946
7947         * marshal.c: Fix warnings.
7948
7949 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
7950
7951         * loader.c: allow case-insensitive matching of the dll name
7952         in dllmap handling when prefixed with "i:".
7953
7954 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
7955
7956         * threads.c: Fix #ifdef for dummy_apc function for VS.
7957
7958 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
7959
7960         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
7961
7962 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
7963         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
7964         giving precedence to the methods with a fully qualified name
7965         (InterfaceName.MethodName) when building the interface sections
7966         of the vtable.
7967
7968 2007-02-16  Dick Porter  <dick@ximian.com>
7969
7970         * threadpool.c (append_job): Fix fast-path array handling, so it's
7971         less likely the array will grow exponentially when the load is
7972         heavy.
7973
7974 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
7975
7976         * metadata-internals.h, loader.c: fix dllmap lookup order
7977         for non-function maps, too, and prepare for fallback code.
7978
7979 2007-02-12  Robert Jordan  <robertj@gmx.net>
7980
7981         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
7982         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
7983         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
7984         GlobalFree. Fixes a part of bug #77075.
7985
7986 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
7987
7988         * loader.c: implemented typedef parent in field memberref.
7989
7990 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
7991
7992         * marshal.c: Fix warnings and remember to call Release on
7993         IUnknown of RCW.
7994         
7995         Code is contributed under MIT/X11 license.
7996
7997 2007-02-10  Miguel de Icaza  <miguel@novell.com>
7998
7999         * class-internals.h: Add MonoHandleRef definition, and
8000         handleref_class to mono_defaults. 
8001
8002         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
8003         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
8004
8005         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
8006         (do nothing on this stage)
8007         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
8008         (emit_marshal_handleref): New method, used for argument handling
8009         of HandleRefs. 
8010
8011 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
8012
8013         * class.c (mono_class_setup_parent): Lazily init com types.
8014         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
8015         init com types.
8016         * object.c (mono_remote_class_vtable): Lazily init com types.
8017         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
8018         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
8019         * domain-internals.h: Expose mono_init_com_types.
8020         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
8021         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
8022         Add support for COM Callable Wrapper marshalling.
8023         * marshal.h: Add icall definitions.
8024         * gc.c: Handle freeing of CCWs in finalizer code.
8025         
8026         Code is contributed under MIT/X11 license.
8027
8028 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
8029
8030         * reflection.c: changed all the signature encoding code to use
8031         a variable-sized buffer.
8032
8033 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8034
8035         * marshal.c: locking fixes: never take the loader lock
8036         or other runtime locks when holding the marshal lock
8037         (fixes bug#80664).
8038
8039 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
8040
8041         * marshal.c: make the delegate function pointer mapping
8042         work for the moving GC.
8043
8044 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
8045
8046         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
8047         for bug #80618.
8048
8049 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8050
8051         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
8052         gmodule.
8053
8054 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8055
8056         * threadpool.c: made the code moving-GC safe.
8057
8058 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8059
8060         * assembly.c, boehm-gc.c, class-internals.h, class.c,
8061         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
8062         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
8063         warning cleanup.
8064         * reflection.c: warning cleanup, some threading and moving GC fixes.
8065
8066 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
8067
8068         * class.c, loader.c: create the needed Set/Get/Address array methods
8069         as well as the .ctors in mono_class_init (), fixes bug #80567.
8070
8071 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
8072
8073         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
8074         we doesn't decrease its alignment. Should fix the sparc build.
8075
8076 2007-01-24  Dick Porter  <dick@ximian.com>
8077
8078         * socket-io.c
8079         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
8080         Create the returned object if we need to ignore an unsupported
8081         socket option.  Fixes a segfault reported by Atsushi.
8082
8083 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8084
8085         * class.c, object.c: restrict GC-tracked fields to
8086         UIntPtr fields used inside corlib, so we provide better
8087         type info to the GC and also allow broken packing as in
8088         bug #80580.
8089
8090 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
8091
8092         * sgen-gc.c: removed duplicated function.
8093
8094 2007-01-19  Miguel de Icaza  <miguel@novell.com>
8095
8096         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
8097         value that means that the value is not supported, but that we
8098         should not return a failure, but instead report this as a
8099         successful operation.
8100
8101 2007-01-19  Raja R Harinath  <rharinath@novell.com>
8102
8103         Fix tests/bug79956.2.il
8104         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
8105         (mono_generic_class_get_class): If the generic definition in an
8106         enum, copy over other fields related to it.
8107
8108 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8109
8110         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
8111         genericinst enums (bug #79215).
8112
8113 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
8114         * class.c: Fix bug 80307.
8115
8116 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
8117
8118         * image.c: if the file table is not present, try to load
8119         all the modules, since we don't have info about them
8120         having or not metadata (bug #80517).
8121         * assembly.c: allow mono_assembly_load_references () to
8122         work for netmodules.
8123
8124 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8125
8126         * image.c, metadata-internals.h, object.c: execute module
8127         cctors when running on the 2 runtime if present (bug #80487).
8128
8129 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8130
8131         * icall.c: optimized InitializeArray() on bigendian.
8132
8133 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
8134
8135         * icall.c: fix for the broken ARM FPA double format.
8136
8137 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8138
8139         * icall.c: handle endian issues for r4 and r8 types, too, in
8140         the InitializeArray() icall.
8141
8142 2007-01-15  Miguel de Icaza  <miguel@novell.com>
8143
8144         * loader.c (mono_loader_error_prepare_exception): Clear the error
8145         once we have extracted the information from it, do this before we
8146         call into the JIT's class loading mechanisms.
8147
8148         * object.c (mono_class_create_runtime_vtable): Do not clear the
8149         loader error before calling mono_class_get_exception_for_failure
8150         as the loader error is needed inside
8151         mono_class_get_exception_for_failure to throw the error (thinko).
8152
8153         Fixes #80521
8154         
8155 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8156
8157         * reflection.c: align fields rva data so it's faster to load at
8158         runtime.
8159
8160 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8161
8162         Prepare to simplify GenericMethod handling.
8163         * class-internals.h (mono_method_get_context): New accessor function.
8164         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
8165         rather than directly accessing '->context' field.
8166
8167         * class-internals.h (_MonoGenericParam.method): Move ...
8168         (_MonoGenericContainer): ... here.  Add into union with klass field.
8169         * class.c, icall.c, loader.c, metadata.c, reflection.c:
8170         Update to changes.
8171
8172 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
8173
8174         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
8175         the wrapper type enum and reduce relocations.
8176
8177 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8178
8179         * reflection.c (inflate_mono_method): Reuse method instantiation
8180         from the generic method, if available.
8181
8182 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
8183
8184         * marshal.c (emit_marshal_variant): Fix conv_arg
8185         type in last commit, based on whether parameter is byref.
8186         
8187 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
8188
8189         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
8190         marshalling.
8191         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
8192         MONO_TYPE_OBJECT back for VARIANT support.
8193
8194 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
8195
8196         * marshal.c, marshal.h, icall-def.h: Implement 
8197         Marshal.ReAllocCoTaskMem.
8198
8199 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
8200
8201         * marshal.c: memory retention fixes: use the proper
8202         image cache for runtime_invoke method lookups.
8203
8204 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8205
8206         * mempool.c: added code to help debug mempool allocations.
8207
8208 2007-01-11  Dick Porter  <dick@ximian.com>
8209
8210         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
8211         support (experimenting with faking it with IP_MTU_DISCOVER for
8212         systems that don't have IP_DONTFRAGMENT.)
8213         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
8214         icall.
8215
8216         * icall-def.h: new System.Net.Sockets.Disconnect icall.
8217
8218         * socket-io.h: Add new fields to MonoSocketAsyncResult
8219         corresponding to the new ones in Socket.cs.
8220
8221 2007-01-11  Raja R Harinath  <rharinath@novell.com>
8222
8223         Fix IronPython regression mentioned in #80249
8224         * metadata.c (do_mono_metadata_parse_generic_class): Clear
8225         'cached_context' field, since it may have been initialized as a
8226         side-effect of metadata parsing.
8227
8228         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
8229         (_MonoGenericClass.cached_class): Move here and rename from lone
8230         remaining field of ...
8231         (_MonoInflatedGenericClass): ... this.  Remove.
8232         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
8233         to changes.
8234
8235         Fix mcs/tests/test-128.cs regression.
8236         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
8237         2007-01-10 change below.
8238         [MONO_TYPE_OBJECT]: Recurse into array case.
8239
8240 2007-01-11  Raja R Harinath  <harinath@gmail.com>
8241
8242         * class-internals.h (mono_get_inflated_generic_class): Remove.
8243         * class.c (mono_get_inflated_generic_class): Remove.
8244         (mono_generic_class_get_class): Rename from
8245         mono_class_create_generic.
8246         (mono_class_from_mono_type) [GENERICINST]: Use it.
8247         * reflection.c, metadata.c: Update to changes.  Use
8248         'mono_class_from_mono_type'.
8249
8250 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
8251
8252         * reflection.c: use passed type when encoding an array element
8253         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
8254
8255 2007-01-09  Robert Jordan  <robertj@gmx.net>
8256
8257         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
8258         result arguments (someDelegate.EndInvoke (unrelatedAres)).
8259         Fixes bug #80392.
8260
8261 2007-01-09  Raja R Harinath  <rharinath@novell.com>
8262
8263         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
8264
8265         * object.c (set_value): Avoid aliasing between type->data.klass
8266         and type->data.generic_class.
8267
8268         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
8269
8270 2007-01-08  Raja R Harinath  <rharinath@novell.com>
8271
8272         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
8273         between type->data.klass and type->data.generic_class.
8274
8275 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
8276
8277         * marshal.c: In MS.NET, StringBuilder objects are not copied by
8278         value in out parameters.
8279
8280 2007-01-08  Raja R Harinath  <rharinath@novell.com>
8281
8282         Simplify invariant for MonoGenericClass::klass field.
8283         * class.c (mono_class_create_generic): Verify 'klass' is null.
8284         * metadata.c (do_mono_metadata_parse_generic_class): Don't
8285         initialize 'klass' field.
8286
8287 2007-01-05  Raja R Harinath  <rharinath@novell.com>
8288
8289         Ongoing work to avoid redundant data and simplify invariants.
8290         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
8291         'generic_class', and change type to a GenericInst.
8292         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
8293         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
8294
8295 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
8296
8297         * class.c : skip io-layer under PLATFORM_WIN32.
8298
8299 2007-01-03  Tor Lillqvist  <tml@novell.com>
8300
8301         Fix #80305: In a bundled executable, look in the bundled exe
8302         assembly to determine the runtime version. Add the possibility to
8303         bundle also the machine.config file.
8304         
8305         * assembly.c (mono_assembly_open_from_bundle): Make
8306         non-static. Allow being called even if we have no bundled
8307         assemblies, and return NULL right away in that case.
8308
8309         * domain-internals.h: Declare mono_assembly_open_from_bundle()
8310         here.
8311
8312         * domain.c (app_config_parse): Take an assembly exe file name as
8313         parameter instead of a config file name. Check for a bundled
8314         config file for that assembly by calling
8315         mono_config_string_for_assembly_file() (see below) before looking
8316         for one in the file system.
8317         (get_runtimes_from_exe): Corrsponding change to call of
8318         app_config_parse().
8319         (get_runtimes_from_exe): Check for bundled assembly exe file first
8320         by calling mono_assembly_open_from_bundle(). If no bundled
8321         assembly exe file is found, call mono_image_open() as before to
8322         look it up in the file system.
8323
8324         * mono-config.c: Add variable bundled_machinec_onfig.
8325         (mono_config_string_for_assembly_file): New function.
8326         (mono_config_for_assembly): Move code snippet that looks for a
8327         bundled assembly .config file into the above new function. Call
8328         it.
8329         (mono_register_machine_config, mono_get_machine_config): New
8330         functions to set and retrieve
8331
8332         * assembly.h: Declare mono_register_machine_config().
8333
8334         * mono-config.h: Declare mono_get_machine_config() and
8335         mono_config_string_for_assembly_file().
8336
8337         * icall.c: No declaration of environ necessary on Win32. It is
8338         declared (as a macro expanding to a function call) in stdlib.h.
8339         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
8340         New internal mono function. Returns the value of
8341         mono_get_machine_config() as a Mono string.
8342
8343         * icall-def.h: Add get_bundled_machine_config().
8344
8345 2007-01-04  Raja R Harinath  <rharinath@novell.com>
8346
8347         Remove redundant field
8348         * class-internals.h (_MonoGenericContext.container): Remove field.
8349         * loader.c (mono_method_get_signature_full): Don't parse a
8350         "container" for a signature parse when the signature is inflated
8351         immediately.
8352         (method_from_methodspec): Likewise, for a generic_inst.
8353         * class.c, metadata.c, reflection.c: Update to changes.
8354
8355 2006-01-04  Raja R Harinath  <rharinath@novell.com>
8356
8357         * class-internals.h (_MonoGenericClass): Rename 'context' field to
8358         'cached_context', and change semantics -- it starts off NULL, and
8359         is initialized on demand.
8360         * class.c (mono_generic_class_get_context): New accessor to
8361         replace 'context' field accesses.
8362         (mono_class_get_context): New helper.
8363         (*): Update to changes.
8364         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
8365
8366 2007-01-03  Miguel de Icaza  <miguel@novell.com>
8367
8368         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
8369         before the memcpy.   Fixes Marshal2 regression.
8370
8371 2007-01-02  Jb Evain  <jbevain@gmail.com>
8372
8373         * blob.h: add a MONO_TYPE_ENUM definition
8374         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
8375         fix the encoding of arrays of enums in custom attributes.
8376
8377         Fixes #79666.
8378
8379 2007-01-01  Miguel de Icaza  <miguel@novell.com>
8380
8381         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
8382         string is null terminated, but only cut the string short if it
8383         overflows the buffer.   
8384         
8385         (mono_string_to_byvalstr): Also fix this routine.   The code here
8386         was not properly terminating a string (it was only terminated
8387         because of the previous catch-all memset). 
8388
8389         I left the memset, because I do not know if applications expect
8390         the runtime to clear this region. 
8391
8392         Fixes #79944.
8393
8394         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
8395         Clear the error before returning to unmanaged code to prevent the
8396         runtime from being confused later on (fixes  80420).
8397         (ves_icall_type_from_name): Always call mono_loader_clear_error
8398         after parsing a type that could have failed.
8399         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
8400
8401         * loader.c (mono_loader_clear_error): Fix indentation.
8402
8403 2006-12-28  Martin Baulig  <martin@ximian.com>
8404
8405         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
8406
8407 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
8408
8409         * reflection.c: patch from Rolf Bjarne Kvinge to fix
8410         getting a token for an EnumBuilder.
8411
8412 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
8413
8414         * reflection.c: be more careful in case resource generation
8415         fails to create the data array.
8416
8417 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
8418
8419         * sgen-gc.c: write barrier for clone and fix unregister handles.
8420
8421 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
8422
8423         * reflection.c: some fixes needed in the generics code for the moving GC.
8424
8425 2006-12-22  Robert Jordan  <robertj@gmx.net>
8426
8427         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
8428         account. Fixes bug #80299.
8429
8430 2006-12-21  Raja R Harinath  <rharinath@novell.com>
8431
8432         Fix WaitHandle usage in delegates.
8433         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
8434         * object.c (mono_wait_handle_new): Use the property set method to
8435         initialize the handle.
8436         (mono_wait_handle_get_handle): New.
8437         * threadpool.c (mono_async_invoke): Use it.
8438         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
8439         Likewise.
8440         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
8441
8442 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
8443
8444         * marshal.c (emit_marshal): Call emit_marshal_variant and
8445         emit_marshal_com_interface when applicable.
8446         (emit_marshal_variant, emit_marshal_com_interface): Add
8447         methods for this case and remove if's from emit_marshal_object.
8448         
8449 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
8450
8451         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
8452
8453 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
8454
8455         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
8456         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
8457         and GlobalFree on Windows. Remove FIXME.
8458
8459 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
8460
8461         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
8462         implementation for managed objects.
8463
8464 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8465
8466         * object.c: implemented code to be used for checking
8467         that no reference field overlaps with non-references.
8468
8469 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8470
8471         * threadpool.c: fix queue code to be compatible with the
8472         moving GC.
8473
8474 2006-12-18  Miguel de Icaza  <miguel@novell.com>
8475
8476         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
8477         in structures by throwing ArgumentNullException.
8478
8479         (emit_marshal_safehandle): Also when they are null parameters.
8480
8481         (emit_marshal_safehandle): Add support for ref
8482         SafeHandles parameters
8483
8484 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8485
8486         * profiler.c: updated to use the mono-dl API instead of
8487         gmodule.
8488
8489 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8490
8491         * profiler.c: updated to use the mono-dl dynamic loading
8492         API instead of gmodule.
8493
8494 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
8495
8496         * profiler.c: use readlink, older versions of glib don't have
8497         g_file_read_link ().
8498
8499 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
8500
8501         * profiler.c: try to detect the path to mono if libc fails to provide
8502         a useful name (bug #80286).
8503
8504 2006-12-16  Raja R Harinath  <rharinath@novell.com>
8505
8506         Fix #80242
8507         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
8508         instance, use the generic type definition instead.
8509         (ves_icall_Type_GetNestedTypes): Likewise.
8510         * class.c (mono_class_create_generic): Always set the
8511         nested_classes of a generic instance to NULL, even if the generic
8512         type definition has nested types.
8513
8514 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
8515
8516         * marshal.c (mono_string_from_bstr): Revert previous Windows change
8517         and fix on Linux.
8518         
8519 2006-12-15  Miguel de Icaza  <miguel@novell.com>
8520
8521         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
8522         my arguments were in the wrong order.   I also fixed the Windows
8523         version which seems to have had the same issue.
8524
8525         (mono_free_bstr): On Unix, this is g_free.
8526         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
8527         conversions (for the tests in corlib to pass).
8528
8529 2006-12-14  Miguel de Icaza  <miguel@novell.com>
8530
8531         * marshal.c (emit_ptr_to_object_conv): For now, ignore
8532         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
8533         exception if a ref SafeHandle in a struct has changed).
8534         
8535         (emit_struct_conv): Do not perform layout checks for classes
8536         derived from SafeHandle, as those are specially handled. 
8537
8538         (emit_object_to_ptr_conv): Add support for
8539         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
8540
8541         (emit_marshal_safehandle): Implement conversion of return values
8542         of safehandles (MARSHAL_ACTION_CONV_RESULT).
8543         
8544         * threads.c: WaitHandle now is compiled with two different handles
8545         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
8546         for 2.0.
8547         
8548         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
8549         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
8550         these routines to cope with both kinds of fields.
8551
8552 2006-12-12  Miguel de Icaza  <miguel@novell.com>
8553
8554         * metadata.c (mono_type_to_unmanaged): Handle the case where
8555         type->data.klass is a SafeHandle, and in that case, return the
8556         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
8557         MONO_MARSHAL_CONV_SAFEHANDLE. 
8558
8559 2006-12-11  Miguel de Icaza  <miguel@novell.com>
8560
8561         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
8562         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
8563         calling emit_marshal_object.
8564
8565         (emit_marshal_safehandle): Implement marshalling of
8566         SafeHandle parameters (no ref support yet).
8567
8568         (MarshalAction): Document the defines as I implement
8569         them for SafeHandle.
8570
8571         (emit_marshal_object): indentation police.
8572
8573         * class-internals.h: Define MonoSafeHandle.
8574         Add safehandle_class to MonoDefaults type.
8575
8576         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
8577         list of classes to check for fields. 
8578
8579         * domain.c (mono_init_internal): Add SafeHandle to the list of
8580         mono_defaults loaded.
8581
8582 2006-12-15  Raja R Harinath  <rharinath@novell.com>
8583
8584         Fix #80253
8585         * reflection.c (mono_reflection_bind_generic_parameters): If the
8586         generic type definition is a type builder, ensure that it is fully
8587         initialized before instantiating it.  Kill some dead code.
8588
8589 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
8590
8591         * object.c: clear the loader_error () before loading
8592         more metadata stuff (bug #80258).
8593
8594 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
8595
8596         * icall.c, icall-defs.h: type modifiers icalls for
8597         parameters and properties.
8598
8599 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
8600
8601         * object.c, icall.c: fixed warnings.
8602
8603 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
8604
8605         * marshal.c: fixed a couple of leaks and coding style in a few places.
8606
8607 2006-12-08  Dick Porter  <dick@ximian.com>
8608
8609         * process.c: Cope with NULL ProcessStartInfo arguments on windows
8610         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
8611         80173.
8612
8613 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
8614
8615         * process.c: ProcessStartInfo may have only filename set and
8616         arguments can be NULL.
8617
8618 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
8619
8620         * icall.c: fix leak found by Robert Jordan.
8621
8622 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
8623
8624         * marshal.c, marshal.h: generate managed method to access an element
8625         of a multi-dimensional array.
8626
8627 2006-11-30  Paolo Molaro (lupus@ximian.com)
8628
8629         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
8630
8631 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8632
8633         * icall.c: back out GetFields () fix until the serialization code is
8634         fixed to not depend on the incorrect behaviour.
8635
8636 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
8637
8638         * profiler.c: provide defaults if none are set.
8639
8640 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8641
8642         * Makefile.am, attrdefs.h: new public header file with
8643         constants for attributes for use by embedders.
8644
8645 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
8646
8647         * icall.c: GetFields () fix for bug #80064.
8648
8649 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
8650
8651         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
8652         removed long unused icalls.
8653
8654 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
8655   
8656         * marshal.c: 
8657                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
8658                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
8659                 can be generated without a delegate class.
8660                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
8661         
8662         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
8663
8664 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8665
8666         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
8667         #80069.
8668
8669 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8670
8671         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
8672         icall-def.h: added icalls needed by System.GC.
8673
8674 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
8675
8676         * loader.c: ensure the class in catch clauses is handled
8677         correctly for generics methods (fixes bug#79980).
8678
8679 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
8680
8681         * monitor.h, monitor.c: added mono_locks_dump () function
8682         to help debug deadlocks involving managed locks.
8683
8684 2006-11-13  Dick Porter  <dick@ximian.com>
8685
8686         * file-io.c (get_file_attributes): If the file is a symlink try
8687         and get the stat data for the target, but also add the
8688         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
8689         the specs for the windows symlink support, but will probably have
8690         to be reworked when I have test data from a vista machine.  Fixes
8691         bug 79887.
8692
8693 2006-11-13  Dick Porter  <dick@ximian.com>
8694
8695         * gc.c (mono_domain_finalize): 
8696         * marshal.c (mono_delegate_begin_invoke): 
8697         * threadpool.c (socket_io_init, mono_thread_pool_init)
8698         (mono_thread_pool_finish): 
8699         * monitor.c (mono_monitor_try_enter_internal): 
8700         * threads.c (mono_thread_resume, mono_thread_init)
8701         (mono_thread_suspend_all_other_threads)
8702         (mono_thread_execute_interruption): 
8703         * appdomain.c (mono_domain_unload): Check for NULL error returns
8704         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
8705         75733.
8706
8707 2006-11-11  Miguel de Icaza  <miguel@novell.com>
8708
8709         * process.c
8710         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
8711         Only close the handle if the value of the handle is not
8712         INVALID_HANDLE_VALUE.  This just makes the process a bit more
8713         robust.
8714
8715         Improvement for #75733, so that we do not run into this problem. 
8716
8717         
8718         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
8719         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
8720         internal variables.  Fixes #79462 
8721         
8722
8723 2006-11-09  Dick Porter  <dick@ximian.com>
8724
8725         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
8726         Use poll() not select().  Fixes bug 79397.
8727
8728 2006-11-09  Raja R Harinath  <rharinath@novell.com>
8729
8730         Fix #79872
8731         * assembly.c (mono_assembly_load_from_full): Check that the given
8732         image has an assembly manifest.
8733
8734 2006-11-09  Ankit Jain  <jankit@novell.com>
8735
8736         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
8737         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
8738         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
8739
8740 2006-11-07  Dick Porter  <dick@ximian.com>
8741
8742         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
8743         Put the old resolver behaviour back for pre-2.0 profiles.
8744
8745 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
8746
8747         * threadpool.c: precise GC and locking fixes.
8748
8749 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
8750
8751         * class.c: don't load types that have an explicit unaligned
8752         managed reference. Provide better info in the TypeLoad exception.
8753         Part of the fix for bug #79744.
8754         * object.c: use the correct check for class type load issues.
8755
8756 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8757
8758         * class.c: enforce alignment of fields with managed references
8759         even when Pack=1 is forced by the user (bug #77788).
8760
8761 2006-11-03  Dick Porter  <dick@ximian.com>
8762
8763         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
8764         If the address reverse lookup fails, return it as the hostname
8765         anyway.  Fixes bug 79721.
8766
8767 2006-11-03  Dick Porter  <dick@ximian.com>
8768
8769         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
8770         Fix build on Windows.
8771
8772 2006-11-02  Dick Porter  <dick@ximian.com>
8773
8774         * icall-def.h: 
8775         * object-internals.h: 
8776         * exception.c (mono_get_exception_thread_interrupted): 
8777         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
8778         Fixes bug 74525.
8779
8780         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
8781         Check for pending Thread.Interrupt.
8782
8783 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
8784         * loader.c: Fixed bug 79684.
8785
8786 2006-10-27  Dick Porter  <dick@ximian.com>
8787
8788         * file-io.c (get_file_attributes): Force symlinks to directories
8789         to be returned as a regular file.  Fixes bug 79733.
8790 2006-10-26  Dick Porter  <dick@ximian.com>
8791
8792         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
8793         CreateFile to open a directory then we need to set the
8794         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
8795
8796 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8797
8798         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
8799         friends.
8800
8801 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
8802
8803         * sgengc.c: small cleanup of timer code.
8804
8805 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8806
8807         * sgen-gc.c: fix some warnings and start adding support for
8808         complete object removal on domain unload.
8809
8810 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
8811
8812         * assembly.c: build_assembly_name should not consider a version
8813         number without build or revision number invalid. Fixes bug #79715.
8814
8815 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
8816
8817         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
8818         call kernel32 function OutputDebugString directly.
8819         
8820         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
8821         
8822 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
8823
8824         * reflection.c: small cleanup, using a function to insert a MonoString
8825         in the string heap.
8826
8827 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
8828
8829         * reflection.c: moving GC fixes.
8830
8831 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
8832
8833         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
8834         all the objects with finalizers belonging to an unloading appdomain.
8835
8836 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8837
8838         * sgen-gc.c: added ability to allocate even when the nursery is fully
8839         pinned and fixed a couple of bugs.
8840
8841 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * threads.h: Revert the last change for now.
8844
8845         * threads.h (mono_thread_get_pending_exception): Rename this to
8846         mono_thread_get_undeniable_exception ().
8847
8848 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
8849
8850         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
8851         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
8852         when fname does not refer to valid assembly. This result in a more
8853         meaningful error message.
8854         * exception.c: added mono_get_exception_bad_image_format2 which 
8855         constructs a BadImageFormatException using the ctor taking a custom
8856         message and the file name. Passing in a NULL msg results in a default
8857         message.
8858         * exception.h: define mono_get_exception_bad_image_format2 function.
8859         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
8860         when file name pointed to an invalid IL image. Use 
8861         mono_get_exception_file_not_found2 to construct FileNotFoundException,
8862         as this results in a more meaningful error message.
8863
8864 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8865
8866         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
8867         #79465.
8868
8869 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * metadata.c (mono_type_size): Change the align parameter to guint32 for
8872         consistency with the other _size functions.
8873         (mono_type_stack_size): Ditto.
8874
8875         * class.c object.c icall.c: Fix warnings caused by the above change.
8876
8877         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
8878
8879         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
8880
8881         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
8882
8883 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
8884
8885         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
8886         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
8887         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
8888         threadpool.h, threads-types.h: mark more internal functions.
8889
8890 2006-10-11  Dick Porter  <dick@ximian.com>
8891
8892         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
8893         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
8894         reproduce the bug even before applying the fix.)
8895
8896 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
8897
8898         * reflection.c: allow retrieving attributes for arguments in generic
8899         methods (bug #79241).
8900
8901 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
8902
8903         * debug-mono-symfile.c: properly check fopen () result (found by
8904         coverity).
8905
8906 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
8907
8908         * reflection.c: make error message clearer and fixed two
8909         issuelets found by Coverity.
8910
8911 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
8912
8913         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
8914
8915 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
8916
8917         * object-internals.h, gc-internal.h, profiler-private.h:
8918         mark internal functions.
8919
8920 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8921
8922         * reflection.c: put data in the text section.
8923         * icall.c: recognize more types in type_from_typename ().
8924         * process.c, marshal.c: added some GC FIXMEs.
8925
8926 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8927
8928         * loader.c: check for NULL before initializing.
8929
8930 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
8931
8932         * gc.c (finalizer_thread): Use a non-alertable wait here.
8933
8934         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
8935         until the correct solution is found.
8936
8937 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
8938
8939         * reflection.c (mono_module_get_object): Avoid an assert when operating on
8940         modules with no metadata. Fixes #79596.
8941
8942         * image.c (load_metadata_ptrs): Put back the error message when
8943         the #- heap is encountered since the support is not complete yet.
8944
8945 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8946
8947         * gc.c: do not allow the user to SuppressFinalize () a
8948         delegate because it would leak the trampoline if present.
8949
8950 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
8951
8952         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
8953         PropertyPtr table.
8954
8955 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8956
8957         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
8958
8959         * metadata.c (mono_metadata_get_param_attrs): Ditto.
8960
8961         * row-indexes.h: Add definitions for *Ptr tables.
8962
8963         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
8964
8965         * metadata.c (mono_metadata_translate_token_index): New helper function to
8966         translate table indexes used in uncompressed metadata.
8967         (mono_metadata_decode_table_row): Ditto.
8968         (mono_metadata_decode_table_row_col): Ditto.
8969
8970         * metadata.c: Add table schema for *Ptr tables.
8971
8972         * class.c loader.c: Use the new helper function to access the affected metadata
8973         tables.
8974         
8975         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
8976         #38532.
8977         
8978 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
8981         sequences which can be unbounded in size. Fixes #79583.
8982
8983 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8984
8985         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
8986         static initialization.
8987
8988         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
8989
8990         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
8991
8992         * domain.c (mono_domain_free): Free up type_init_exception_hash.
8993
8994         * object.c (mono_runtime_class_init): Implement correct semantics when a static
8995         ctor fails, i.e. throw the same exception on subsequent accesses.
8996         
8997 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
8998
8999         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
9000         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
9001         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
9002         Handle marshalling of interfaces and VARIANTs contained in structs.
9003         
9004         Code is contributed under MIT/X11 license.
9005         
9006 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
9007
9008         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
9009         
9010         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
9011         mempool.
9012
9013 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9014
9015         * console-io.c: ignore previous SIGINT handler.
9016
9017 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
9018
9019         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
9020         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
9021         #79460, #79461, #79485.
9022
9023         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
9024
9025         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
9026         #79217.
9027
9028 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
9029
9030         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
9031         could be generated from it.
9032
9033 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
9034
9035         * rand.c: fix read loop to correctly handle EINTR.
9036
9037 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
9038
9039         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
9040         internal calls are defined to keep methods closer to the declaring
9041         type and allow a significant reduction in runtime relocations and
9042         memory usage.
9043
9044 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
9045
9046         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
9047         exception message to have FileNotFoundException use the default
9048         assembly load error message. Fixes bug #79426.
9049         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
9050
9051 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9052
9053         * threadpool.c: (start_thread_or_queue) use the root domain when
9054         creating the thread instead of the async object one.
9055
9056 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
9057
9058         * class.c, object.c, class-internals.h, reflection.c:
9059         for arrays, store element_size inside MonoClass (speedup
9060         for array object creation).
9061
9062 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
9063
9064         * icall.c: fixed CodeBase to use the file name and not the module
9065         name (bug #79365).
9066
9067 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
9068
9069         * mono-debug.c, mono-debug.h: export find_method as
9070         mono_debug_find_method ().
9071
9072 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
9073
9074         * debug-helpers.c, class-internals.h: added a few functions useful
9075         when debugging under gdb.
9076
9077 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9078
9079         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
9080         characters that need special handling.
9081
9082 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
9083
9084         * mono-config.c: make the os/cpu specification more flexible,
9085         allowing lists and negation.
9086
9087 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
9088
9089         * marshal.c: COM Interop fixes. Handle case where method->klass.
9090         is interface. Handle BSTR/MonoString when null. Use CDECL as 
9091         calling convention on non-windows platforms. This is for
9092         compatibility with XPCOM and MainWin COM.
9093         
9094         Code is contributed under MIT/X11 license.
9095         
9096
9097 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
9098
9099         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
9100         correctly. Fixes #79217.
9101
9102         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
9103
9104 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
9105
9106         * mono-config.c: allow both an os and cpu attribute for dllmap
9107         and dllentry elemnets to enable a single config file to be used
9108         for multiple architectures.
9109
9110 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
9111
9112         * loader.c: MonoLoaderError was cleared too soon on load failure.
9113         Fixes bug #79424.
9114
9115 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
9116
9117         * icall.c: use the defining class vtable when accessing a
9118         static field, not a pobblibly derived class.
9119
9120 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
9121
9122         * icall.c string-icalls.c: Remove references to unicode.h.
9123
9124         * unicode.h unicode.c Makefile.am: Remove these unused source files.
9125
9126         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
9127
9128         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
9129         indicating the image where custom marshaller types should be looked up.
9130         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
9131         custom marshallers, instead of corlib. Fixes #79425.
9132
9133 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
9134
9135         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
9136
9137 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
9138
9139         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
9140         Implement Environment.ProcessorCount.
9141         
9142         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
9143         Implement Environment.ProcessorCount.
9144         
9145         * icall.c: 
9146         Add Environment.ProcessorCount icall.
9147         
9148         Patch by Jason McFall.
9149
9150 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9151
9152         * assembly.c: don't append .exe/.dll when the filename already contains
9153         one of those extensions.
9154
9155 2006-09-12  Martin Baulig  <martin@ximian.com>
9156
9157         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
9158         to array interfaces.
9159
9160 2006-09-11  Martin Baulig  <martin@ximian.com>
9161
9162         * reflection.c (mono_image_build_metadata): Create the
9163         MethodImpl's after emitting all types and methods, so we don't
9164         need another fixup pass for them.
9165
9166 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
9167
9168         * class.c (mono_class_from_name_case): Fix regression introduced by the last
9169         change.
9170
9171 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
9172
9173         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
9174         unload.
9175
9176 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
9179         args is not set. Fixes #78926.
9180
9181 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
9182
9183         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
9184
9185         * image.c (load_class_names): Move this to class.c, and rename it to 
9186         'mono_image_init_name_cache'.
9187         (load_modules): Fix a warning.
9188
9189         * class.c icall.c image.c: Initialize image->name_cache lazily.
9190
9191         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
9192         on its name using information in the AOT file.
9193
9194         * class.c (mono_class_from_name): Use the new hook function.
9195
9196 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * reflection.c (mono_param_get_objects): Handle enum default parameter values
9199         correctly.
9200
9201         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
9202         Fixes #79289.
9203         
9204 2006-09-06  Martin Baulig  <martin@ximian.com>
9205
9206         * icall.c (mono_lookup_internal_call): Small fix.
9207
9208 2006-09-05  Raja R Harinath  <rharinath@novell.com>
9209
9210         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
9211         double g_free.
9212
9213 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
9214
9215         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
9216         when --debug is specified.
9217
9218 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
9219
9220         * class.c (setup_generic_array_ifaces): Fix a warning.
9221
9222 2006-09-04  Miguel de Icaza  <miguel@novell.com>
9223
9224         * Temporarily remove the patch to assemly.c that checks the
9225         assembly versions as it breaks our gacutil.
9226
9227 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
9228
9229         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
9230
9231         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
9232         a net 1.0 runtime.
9233
9234         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
9235         created using the default ctor. Fixes #79152.
9236         (mono_string_builder_to_utf16): Ditto.
9237
9238 2006-09-01  Martin Baulig  <martin@ximian.com>
9239
9240         Fix handling of the generic array interfaces.
9241
9242         * class-internals.h
9243         (MonoDefaults): Removed `generic_array_class' and added
9244         `generic_ilist' class.
9245
9246         * class.c
9247         (mono_bounded_array_class_get): Add the new generic array interfaces.
9248         (setup_generic_array_ifaces): New static method; create vtable
9249         entries for each method in the generic array interfaces.
9250
9251         * metadata.c
9252         (select_container): Allow "parent-less" generic methods.
9253
9254         * marshal.c
9255         (mono_marshal_get_generic_array_helper): New public method.
9256
9257         * icall.c
9258         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
9259         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
9260         moved the interncall into System.Array.
9261
9262 2006-09-01  Raja R Harinath  <rharinath@novell.com>
9263
9264         A few more cases of avoiding work on types with ->byref set.
9265         Has the real fix for #79238
9266         * icall.c (is_generic_parameter): New helper.
9267         (ves_icall_Type_GetGenericParameterPosition): Use it.
9268         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
9269         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
9270         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
9271         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
9272         reference types.
9273         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
9274         reference types.
9275         (ves_icall_Type_get_IsGenericInstance): Likewise.
9276         (ves_icall_Type_get_IsGenericType): Likewise.
9277
9278 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
9279
9280         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
9281         class if possible.
9282
9283         * mempool.h (mono_mempool_get_allocated): New helper function.
9284
9285         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
9286         change.
9287
9288         * mempool.c: Fix warnings and the calculation of stats.
9289
9290         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
9291
9292         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
9293
9294         * loader.c (mono_get_method_from_token): Update method_count stat.
9295
9296         * class-internals.h (MonoStats): Add some stats.
9297
9298 2006-08-31 Robert Jordan  <robertj@gmx.net>
9299
9300         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
9301         with managed variants.
9302         All code is contributed under the MIT/X11 license.
9303         
9304 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
9305
9306         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
9307         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
9308
9309         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
9310
9311         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
9312         with cycles in classes.
9313
9314         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
9315
9316         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
9317         missing a [MarshalAs] directive. Fixes #79203.
9318
9319         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
9320         klass->marshal_info. Fixes #79217.
9321
9322 2006-08-30  Martin Baulig  <martin@ximian.com>
9323
9324         Committing a patch from Joachim Ante <joe@otee.dk>:
9325         Add support for binary data symbol stores.
9326
9327         * debug-mono-symfile.c
9328         (mono_debug_open_mono_symbol_file): Renamed into
9329         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
9330         arguments.
9331
9332         * mono-debug.c
9333         (mono_debug_open_image): Added `raw_contents' and `size' args.
9334         (mono_debug_init_2_memory): New public function.
9335
9336 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
9337
9338         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
9339
9340 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9341
9342         * appdomain.c: implement support for ShadowCopyFiles.
9343
9344 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
9345
9346         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
9347         when value is NULL (and should remove CID #51).
9348
9349 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9350
9351         * image.c: moved 2 functions to ../utils.
9352
9353 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
9354
9355         * gc.c: cope with the target object of a GC handle being NULL
9356         (bug #78877).
9357
9358 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9359
9360         * class.c: recursively check parent's explicit implementations
9361         of interface methods (fixes bug #79125).
9362
9363 2006-08-19  Miguel de Icaza  <miguel@novell.com>
9364
9365         * filewatcher.c: Avoid warnings when building, do not redefine
9366         constants that are defined.
9367
9368         Remove warnings.
9369
9370 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9371
9372         * image.c: don't fail when the link points to an absolute path.
9373
9374 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
9375
9376         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
9377         Fix CID #3.
9378
9379 2006-08-17  Miguel de Icaza  <miguel@novell.com>
9380
9381         * image.c (full_path): A new method used to obtain the actual path
9382         of an assembly even in the presence of symbolic links.  
9383
9384         This is necessary for the case where we are running a binary that
9385         has been GACed, but we are using the "published" path name
9386         ($prefix/mono/1.0/blah.exe) which happens to point to the real
9387         file in the GAC.
9388
9389         This was the source of the failure for the `xsp' command with the
9390         recent AppDomain changes, as far as the runtime was concerned,
9391         there were two different assemblies: $prefix/mono/1.0/blah.exe and
9392         $prefix/mono/gac/blah/version/blah.exe.
9393
9394         (do_mono_image_open): use full path
9395
9396 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9397
9398         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
9399
9400 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
9401
9402         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
9403         domain_id is supplied. Fix CID #241 and corlib's unit tests.
9404
9405 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9406
9407         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
9408         small structures. Fixes #78990.
9409
9410 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
9413
9414         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
9415
9416 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9417
9418         * appdomain.c:
9419         * marshal.c: don't load all the assemblies from a domain into newly
9420         created ones. The new domains might have different rules and load
9421         assemblies from different locations. Fixes bug #76757.
9422
9423         Patch by Lluis. Conflicts resolved by Brian Crowell.
9424
9425 2006-08-16  Alp Toker  <alp@atoker.com>
9426
9427         * socket-io.c: First half of the fix for #79084.
9428         Set sa_size to the length of the content, not that of the struct.
9429         Don't add NULL suffix to the content, this should be done in
9430         managed code if needed.
9431
9432 2006-08-14  Raja R Harinath  <rharinath@novell.com>
9433
9434         Fix part of #79012
9435         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
9436         mono_metadata_parse_type returns NULL.
9437
9438 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
9439
9440         * normalization-tables.h : new file for string normalization data.
9441         * locales.c, locales.h, icall.c :
9442           added load_normalization_resource() for string normalization,
9443           and icall as well.
9444         * Makefile.am : added normalization-tables.h to the sources.
9445
9446 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
9447
9448         * marshal.c: Add more helper functions to reduce code duplication and use them
9449         everywhere.
9450
9451 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
9452
9453         * marshal.c: Fix non-x86 stdcall warnings.
9454         
9455         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
9456         them everywhere.
9457
9458 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
9459
9460         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
9461         type check on multi-dimensional arrays. Fixes #79000.
9462
9463 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
9464
9465         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
9466         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
9467         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
9468         * class-internals.h: add is_com_object to class structure.
9469         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
9470         null checks to COM object marshalling. Fix .ctor call on RCW.
9471         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
9472         
9473         All code is contributed under the MIT/X11 license.
9474
9475 2006-08-09  Dick Porter  <dick@ximian.com>
9476
9477         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
9478         racing mono_monitor_allocator_lock() somewhere, so don't delete
9479         the critical section for now.  Found by running and exiting
9480         monodevelop.
9481
9482 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
9483
9484         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
9485         (ves_icall_System_ComObject_FindInterface): Ditto.
9486         (ves_icall_System_ComObject_CacheInterface): Ditto.
9487
9488         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
9489         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
9490
9491 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9492
9493         * threadpool.c: treat pipes from process asynchronous reads as sockets
9494         when reading from them, so we get select/poll or epoll to wait for
9495         data.
9496
9497 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
9498
9499         * loader.c: Fix a typo (CID #233) in the null check.
9500
9501 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
9502
9503         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
9504         Hopefully fixes #78949.
9505         
9506         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
9507         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
9508         bytes. Fixes #78972.
9509
9510 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9511
9512         * filewatcher.c: we need to set errno here.
9513
9514 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9515
9516         * filewatcher.c: let Win32Exception get the error value.
9517
9518 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9519
9520         * filewatcher.c: translate errno into win32 errors for Win32Exception
9521         to know what happened.
9522
9523 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
9524
9525         * threadpool.c: Fix more warnings.
9526
9527         * assembly.c (search_loaded): Fix warnings.
9528
9529         * threadpool.c (mono_thread_pool_finish): Fix warnings.
9530         (mono_async_invoke): Ditto.
9531
9532 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
9533
9534         * object.c (mono_remote_class_vtable): Need to create proxy vtable
9535         entries for __ComObject type in addition to ComImport types.
9536         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
9537         about hash table.
9538         
9539         All code is contributed under the MIT/X11 license.
9540
9541 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
9542
9543         * image.c: avoid tentative loading of modulerefs that contain
9544         no metadata (P/Invoke library names).
9545
9546 2006-07-28  Dick Porter  <dick@ximian.com>
9547
9548         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
9549         mono_loader_lock() somewhere, so don't delete the critical section
9550         for now.  Found by running and exiting monodevelop.
9551
9552 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9553
9554         * filewatcher.c: define the inotify syscalls when we're building on
9555         linux and have sys/syscall.h. The build system might not have support
9556         for inotify but the target system might have it.
9557
9558 2006-07-26  Miguel de Icaza  <miguel@novell.com>
9559
9560         * domain.c: Documentation updates.
9561
9562         * loader.c (mono_free_method): Do not release the method
9563         information if we are being profiled, as profilers will use this
9564         information at shut down to present some data to the user.
9565
9566         This is needed so that the profiler does not crash, as the
9567         profiler tends to keep MonoMethods around, and they might become
9568         invalid if we free these.
9569
9570         (mono_get_method_constrained): Return the original CIL stream
9571         method as well, so verification can be performed against it.
9572
9573 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9574
9575         * filewatcher.[ch]: support for inotify file system watcher.
9576         * icall.c: add new internal calls for the inotify file system watcher.
9577
9578 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9579
9580         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
9581         #78888.
9582
9583 2006-07-20  Dick Porter  <dick@ximian.com>
9584
9585         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
9586         warning.
9587
9588 2006-07-20  Dick Porter  <dick@ximian.com>
9589
9590         * threads.c (start_wrapper): Do the thread cleanup while we still
9591         hold a reference to its object.  Fixes bug 78123.
9592
9593 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
9594
9595         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
9596         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
9597           "managed-to-managed".
9598         * icall.c: Redirect string constructors that take sbyte* to
9599           ves_icall_System_String_ctor_RedirectToCreateString.
9600         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
9601           to CreateString () methods with matching signature.
9602         * reflection.c: Use original security informations for
9603           MONO_WRAPPER_MANAGED_TO_MANAGED.
9604         * security-manager.c: Use original security informations for
9605           MONO_WRAPPER_MANAGED_TO_MANAGED.
9606         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
9607           that is a placeholder and only its address should be used.
9608         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
9609           that is a placeholder and only its address should be used.
9610
9611 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
9612
9613         Begin implementing COM Interop.
9614         * appdomain.c: Increment corlib version.
9615         * class.c: Set ComImport classes' parent to __ComObject.
9616         * loader.c: Mark cominterop methods as such.
9617         * domain.c: Add __ComObject class to MonoDefaults structure.
9618         * image.c: Add 2 hashtables to the image for COM Interop related methods
9619         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
9620         using the mempool allocator
9621         
9622         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
9623         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
9624         declaration for mono_metadata_type_dup_mp.
9625         
9626         * debug-helpers.c: Added strings for two additional wrapper types
9627         * object.c: Create proxy objects for ComImport classes
9628         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
9629         and added __ComObject class to MonoDefaults structure.
9630         
9631         * object-internals.h: Finish MonoRealProxy definition, and add definition of
9632         MonoComInteropProxy and MonoComObject.
9633         
9634         * marshal.c: Added support for COM Interop
9635         (signature_cominterop): Converts managed signature to corresponding
9636         unmanaged COM signature.
9637         (cominterop_get_function_pointer): gets unmanaged function pointer via
9638         COM object vtable
9639         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
9640         (cominterop_get_method_interface): returns interface type that method is defined on
9641         (mono_mb_emit_cominterop_call): emits native call to function pointer
9642         gotten from vtable
9643         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
9644         that matches signature of unmanaged function.
9645         (cominterop_get_native_wrapper): wrapper around adjusted method call.
9646         (cominterop_get_invoke): forwards call from proxy to __ComObject
9647         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
9648         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
9649         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
9650         
9651         * marshal.h: Added Marshal icall declarations.
9652         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
9653         so we can access them in finalizer
9654         
9655 2006-07-14  Dick Porter  <dick@ximian.com>
9656
9657         * object.c (mono_type_initialization_cleanup): Fix a race
9658         condition by temporarily commenting out the critical section
9659         deletion.
9660
9661 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
9662
9663         * reflection.c (create_custom_attr): Fix some warnings.
9664         (create_custom_attr_data): Ditto.
9665         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
9666         types. Fixes #78855.
9667
9668 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
9669
9670         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
9671
9672         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
9673
9674 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
9675
9676         * reflection.c (resolve_object): Add support for DynamicMethod.
9677
9678         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
9679         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
9680
9681 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
9682
9683         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
9684         don't leak GPtrArray's pdata has we have no use (nor free) for it.
9685
9686 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
9687
9688         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
9689         Fixes #77888.
9690
9691 2006-06-30  Raja R Harinath  <rharinath@novell.com>
9692
9693         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
9694         slightly: remove a shadow local variable.
9695
9696 2006-06-29  Raja R Harinath  <rharinath@novell.com>
9697
9698         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
9699         definition that introduces the virtual function slot.
9700         Also fix Coverity #105.
9701
9702 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
9703
9704         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
9705         for dynamic assemblies. Fixes #78724.
9706
9707 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
9710         Fixes #78722.
9711
9712 2006-06-21  Martin Baulig  <martin@ximian.com>
9713
9714         * reflection.c
9715         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
9716         fixes #76484.
9717
9718 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
9719
9720         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
9721
9722 2006-06-20  Raja R Harinath  <rharinath@novell.com>
9723
9724         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
9725         nor TYPEREFs.
9726         * class.c (mono_class_create_from_typespec): Add 'context' argument.
9727         Inflate result if necessary.
9728         (mono_class_get_full): Remove old version.  Rename from
9729         'mono_class_get' and add 'context' argument.  Pass it to
9730         ..._create_from_typespec.
9731         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
9732         (mono_ldtoken): Revert change below.
9733
9734 2006-06-20  Martin Baulig  <martin@ximian.com>
9735
9736         * class.c (mono_ldtoken): Don't pass the generic context to
9737         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
9738
9739 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
9740
9741         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
9742         and later freeing it. Fixes #78638.
9743
9744 2006-06-15  Miguel de Icaza  <miguel@novell.com>
9745
9746         * icall.c (mono_class_get_throw): Revert over-zealous error
9747         throwing, the caller for mono_class_get_throw will cope with
9748         errors when classes are not properly initialized already.
9749
9750         The code still copes with loader exceptions though.
9751
9752         Fixes the regression in reftype1 and reftype3 from the CAS tests.
9753         
9754 2006-06-14  Miguel de Icaza  <miguel@novell.com>
9755
9756         Fixes the `make run1' version of RuntimeAbort (to be commited,
9757         source is in Bugzilla).
9758         
9759         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
9760         FALSE on class loading failure instead of returning true.
9761
9762         * class.c (mono_class_create_from_typedef): It is possible for
9763         mono_metadata_interfaces_from_typedef_full to fail if a class is
9764         not found, cope with this.
9765         
9766
9767 2006-06-14  Dick Porter  <dick@ximian.com>
9768
9769         * socket-io.c: 
9770         * process.c: Fix a bunch of signed/unsigned warnings from gcc
9771         4.1.1
9772
9773 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
9774
9775         * culture-info-table.h : oops, forgot to make it nsync with r61548.
9776
9777 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9778
9779         * icall.c: Another fix for building mono in Visual Studio.
9780
9781 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9782
9783         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
9784         
9785 2006-06-09  Martin Baulig  <martin@ximian.com>
9786
9787         * debug-mono-symfile.c: Put this back and really fix it this
9788         time. Sorry for all the trouble.
9789
9790 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
9791
9792         * icall.c (mono_class_get_throw): Fix a warning.
9793         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
9794         ReflectionTypeLoadException if needed. Fixes #78606.
9795
9796         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
9797         (mono_class_init): Ditto.
9798
9799         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
9800         ref_only exceptions.
9801         (mono_loader_clear_error): Make this work even if there is no error.
9802
9803 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
9804
9805         * object-internals.h marshal.c marshal.h icall.c: Implement method 
9806         Marshal.GetComSlotForMethodInfo using internal call.
9807
9808 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
9809
9810         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
9811         a function for signalling it.
9812
9813         * class.c (mono_class_from_typeref): Use the new kind of loader error when
9814         a referenced assembly is not found.
9815
9816         * loader.c (mono_loader_error_prepare_exception): Add support for 
9817         LOADER_ERROR_ASSEMBLY. Fix formatting.
9818
9819 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
9820
9821         * domain.c appdomain.c class-internals.h marshal.c: Add support 
9822         for VARIANT marshalling on windows and increment corlib version
9823         since Variant struct was added.
9824
9825 2006-06-03  Miguel de Icaza  <miguel@novell.com>
9826
9827         * debug-mono-symfile.c: Revert Martin's previous patch which broke
9828         stack trace line information:
9829
9830         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
9831         (Martin) when looking up B which is between A and C, return A not C.
9832
9833         Bug is #78573.
9834
9835         Thanks to Alexander Olk for tracking this down.
9836
9837 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
9838
9839         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
9840         
9841         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
9842         avoid clobbering its value.
9843         (mono_string_to_lpstr): Fix a warning on windows.
9844
9845 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
9846
9847         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
9848
9849         * reflection.c loader.c: Removed references to 'dummy' flag.
9850
9851         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
9852
9853         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
9854         it gets GC tracking.
9855
9856         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
9857         GC tracking.
9858         
9859         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
9860
9861         * marshal.c threadpool.c: Update callers of mono_async_result_new.
9862
9863         * appdomain.c: Bump corlib version.
9864
9865 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
9866
9867         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
9868         CEE_STIND_REF when working with object references.
9869
9870 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
9871
9872         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
9873         Fixes #78539.
9874
9875 2006-05-30  Miguel de Icaza  <miguel@novell.com>
9876
9877         * loader.c (method_from_memberref): Fix argument value for
9878         mono_loader_set_error_method_load (I was passing the MonoClass
9879         instead of the class name char *).
9880
9881 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
9882
9883         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
9884         CEE_STIND_REF when working with object references.
9885
9886 2006-05-30  Martin Baulig  <martin@ximian.com>
9887
9888         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
9889         mono_method_full_name() change and replace the ':' with a '.'
9890         here.
9891
9892 2006-05-30  Martin Baulig  <martin@ximian.com>
9893
9894         * debug-mono-symfile.c
9895         (mono_debug_symfile_lookup_location): Fix the algorithm:
9896         when looking up B which is between A and C, return A not C.
9897
9898 2006-05-29  Martin Baulig  <martin@ximian.com>
9899
9900         * mono-debug.h
9901         (MonoDebugMethodInfo): Make the typedef public.
9902         (MonoDebugSourceLocation): New public struct.
9903
9904         * mono-debug.c
9905         (mono_debug_source_location_from_address): Removed.
9906         (mono_debug_source_location_from_il_offset): Removed.
9907         (mono_debug_il_offset_from_address): Removed.
9908         (mono_debug_address_from_il_offset): Removed.
9909         (mono_debug_lookup_method): New public function.
9910         (mono_debug_lookup_source_location): New public function; replaces
9911         the old mono_debug_source_location_from_*() functions; see the
9912         inline documentation.
9913         (mono_debug_free_source_location): New public function.
9914         (mono_debug_print_stack_frame): New public function; see the
9915         inline documentation.
9916
9917         * debug-mono-symfile.c
9918         (mono_debug_find_source_location): Renamed into
9919         mono_debug_symfile_lookup_location(); only take a
9920         `MonoDebugMethodInfo *' and an `offset' argument; added inline
9921         documentation.
9922         (mono_debug_find_method): Renamed into
9923         mono_debug_symfile_lookup_method().
9924
9925 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9926
9927         * assembly.c (mono_assembly_open_full): Dont overwrite the status
9928         returned by mono_image_open_full ().
9929
9930         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
9931         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
9932         #78517.
9933
9934         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
9935         #78518.
9936
9937 2006-05-27  Miguel de Icaza  <miguel@novell.com>
9938
9939         * class.c (mono_class_from_typeref): handle missing images
9940         earlier, deals with bug #78418.   Refactor code; 
9941
9942         Fix a warning introduced in my previous commit (some stale code
9943         from before I revisited my patch).
9944
9945         * class.c (mono_class_create_from_typedef): On failure, remove the
9946         class from the MonoImage->class_cache as the class is not
9947         initialized;   Fixes the leak pointed out by Paolo.
9948
9949 2006-05-25  Dick Porter  <dick@ximian.com>
9950
9951         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
9952         DeleteCriticalSections until I figure out which one may still be
9953         sometimes locked when mono_thread_cleanup is called.
9954
9955 2006-05-24  Dick Porter  <dick@ximian.com>
9956
9957         * threads.c (mono_thread_cleanup): Move the threading cleanup out
9958         of mono_thread_manage and back into its own function, so it can be
9959         called after the finalizer thread has finished.
9960
9961         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
9962
9963 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
9964
9965         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
9966         Fixes #78495.
9967
9968         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
9969         with non-blittable elements.
9970         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
9971
9972 2006-05-24  Martin Baulig  <martin@ximian.com>
9973
9974         * mono-debug-debugger.h (MonoDebuggerEvent): Added
9975         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
9976
9977         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
9978         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
9979         `mono_debugger_event_handler' to NULL.
9980
9981 2006-05-24  Martin Baulig  <martin@ximian.com>
9982
9983         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
9984
9985 2006-05-24  Martin Baulig  <martin@ximian.com>
9986
9987         * mono-debug-debugger.h
9988         (mono_debugger_create_notification_function): Added
9989         `MonoCodeManager *' argument.
9990
9991 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
9992
9993         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
9994
9995 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
9996
9997         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
9998         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
9999         implementation.
10000
10001 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
10002
10003         * icall.c: precise GC support: objects can't be stored in unmanaged
10004         memory anymore, even if they are kept alive by other references: since
10005         they can move the GC needs to be able to always find them.
10006
10007 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10008
10009         * object.c: precise GC support for static fields. Support
10010         for moving GCs: write barriers and pinned allocation for interned
10011         strings.
10012
10013 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
10014
10015         * domain.c, domain-internals.h: precise GC support for the MonoDomain
10016         structure.
10017
10018 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10019
10020         * class.c, gc.c: sgen and precise GC updates.
10021
10022 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
10023
10024         * marshal.h, marshal.c: added write barrier wrapper and precise type
10025         fixes.
10026
10027 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
10028
10029         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
10030         support.
10031
10032 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
10033
10034         * reflection.c: precise and sgen GC updates.
10035
10036 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
10037
10038         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
10039
10040 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
10041
10042         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
10043
10044 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
10045
10046         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
10047         MONO_TYPE_OBJECT. Fixes #78462.
10048
10049 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
10050
10051         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
10052         and blittable types.
10053
10054 2006-05-17  Miguel de Icaza  <miguel@novell.com>
10055
10056         * class.c (mono_class_get_exception_for_failure): Implement parts
10057         of a TODO: if the loader error is set (instead of the class
10058         error), we return a Loader exception that can be properly thrown
10059         elsewhere.
10060
10061         This was exposed by some Winforms 2.0 code that I tried to run
10062         (Atsushi pointed me to it).
10063
10064 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
10065
10066         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
10067         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
10068         
10069         * marshal.c (emit_marshal_vtype): Add limited support for 
10070         UnmanagedType.LPStruct. Fixes #78427.
10071
10072         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
10073         Applied a patch from kangaroo to fix #77523.
10074
10075 2006-05-17  Martin Baulig  <martin@ximian.com>
10076
10077         * threads.c
10078         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
10079         (debugger_thread_created): Removed.
10080         (debugger_thread_exited): Removed.
10081
10082 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
10083
10084         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10085
10086         * object-internals.h (MonoReflectionResource): Sync with managed version.
10087
10088 2006-05-12  Wade Berrier <wberrier@novell.com>
10089
10090         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
10091
10092 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
10093
10094         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
10095         functions try to allocate from the image mempool.
10096
10097 2006-05-12  Dick Porter  <dick@ximian.com>
10098
10099         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
10100
10101 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
10102
10103         * object.c: The FieldGetter and FieldSetter methods require the full
10104         name of the class, not only the name. Fixes bug #78277.
10105
10106 2006-05-11  Miguel de Icaza  <miguel@novell.com>
10107
10108         * loader.c (method_from_memberref): Do not pass the NULL klass to
10109         mono_loader_set_error_() methods.  Pass the non-NULL value
10110         (class). 
10111
10112 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
10113
10114         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
10115         (mono_assembly_close): Null out assembly->image->references after freeing it.
10116
10117         * image.c (mono_image_close): Free image->references.
10118         
10119         * reflection.c (mono_image_basic_init): Fix a small memory leak.
10120
10121 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
10122
10123         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
10124         before checking if it's NULL (g_assert).
10125
10126 2006-05-10  Martin Baulig  <martin@ximian.com>
10127
10128         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
10129         I thought I already killed that two months ago, but now it somehow reappeared.
10130
10131 2006-05-10  Martin Baulig  <martin@ximian.com>
10132
10133         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
10134
10135 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
10136
10137         * reflection.c: Allocate memory for dynamically created methods in the image
10138         mempools.
10139
10140 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
10141
10142         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
10143         don't use the ad pointer before checking if it's NULL (g_assert).
10144
10145 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
10146
10147         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
10148         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
10149
10150         * marshal.c: Allocate all signatures from mempools.
10151
10152         * marshal.c: Allocate some more signatures from mempools.
10153
10154 2006-05-09  Miguel de Icaza  <miguel@novell.com>
10155
10156         * object.c (mono_load_remote_field): The code used to provide a
10157         temporary variable for returning results if the user did not
10158         provide a result pointer.  But our temporary variable was allocted
10159         on the satck.
10160
10161         Fix calling code to always pass a result area.   Coverity ID 103.
10162
10163 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
10164
10165         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
10166         value, not the old. Fixes #78312.
10167         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
10168
10169         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
10170         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
10171         per-image cache.
10172
10173         * assembly.c (mono_assembly_close): Free image->references.
10174
10175         * assembly.c (mono_assembly_names_equal): Fix a warning.
10176         (mono_assemblies_cleanup): Cleanup more global data.
10177
10178         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
10179
10180         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
10181         ptr_cache and image->modules.
10182
10183         * image.c (mono_image_init): Allocate array_cache lazily.
10184         
10185 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10186
10187         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
10188         behavior was changed recently and has bad side effects.
10189
10190 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
10191
10192         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
10193         
10194         * assembly.c (mono_assembly_close): Remove a debug printf.
10195
10196         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
10197
10198         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
10199         to also allow for temporary references between mono_image_open ()/close ().
10200
10201         * domain.c (get_runtimes_from_exe): Add a FIXME.        
10202
10203 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
10204
10205         * marshal.c: Fix support for dynamic methods.
10206
10207         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
10208
10209         * marshal.c (mono_marshal_cleanup): New cleanup function.
10210
10211         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
10212         image mempools.
10213
10214         * class.c (mono_class_init): Fix leaking class->nested_classes.
10215
10216         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
10217
10218         * image.c (mono_image_init): Initialize the new cashes.
10219
10220         * image.c (mono_image_close): Destroy the new cashes.
10221
10222         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
10223
10224         * mempool.c (mono_mempool_strdup): New helper function.
10225
10226         * class-internals.h: Add prototype for mono_loader_unlock ().
10227
10228         * domain.c (mono_jit_info_table_find): Fix a warning.
10229         (mono_debugger_check_runtime_version): Ditto.
10230
10231         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
10232         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
10233         functions to these modules.
10234
10235         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
10236         metadata modules.
10237         
10238         * marshal.c (mono_free_bstr): Fix a warning.
10239
10240         * assembly.c (mono_assembly_open_full): Fix another small leak.
10241
10242         * object.c: Fix some unload leaks in the remoting code.
10243
10244         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
10245         function.
10246
10247         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
10248
10249         * reflection.c: Fix some unload leaks in dynamic assemblies.
10250
10251 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
10252
10253         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
10254         * marshal.h: Add BSTR support on Win32
10255         * icall.c: Add BSTR icalls
10256         * metadata.h: Add BSTR enums
10257
10258 2006-04-28  Miguel de Icaza  <miguel@novell.com>
10259
10260         Work to catch the crash from #76795 and turn it into an
10261         exception.   As I stubbed out pieces of the VisualBasic support,
10262         I found a number of places where the code was failing and I added
10263         checks to those places. 
10264         
10265         * metadata.c (do_mono_metadata_parse_generic_class): Make this
10266         function return a status code.  If we fail to parse the signature
10267         from mono_metadata_parse_generic_inst, return FALSE.
10268
10269         * loader.c (mono_get_method_from_token): If we fail to load the
10270         method (mono_class_get) return NULL.   
10271
10272         * (method_from_memberref): Return NULL if we are unable to parse
10273         the method signature
10274
10275         (mono_loader_error_prepare_exception): Since we now use the
10276         loader_error flag internally to stop processing, and obtaining
10277         exceptions that might be thrown will walk this code path the
10278         proper way of going from a MonoLoaderError into a
10279         MonoException was convoluted.   This new routine encapsulates the
10280         process of turning the error into an exception and *clearing* the
10281         error afterwards.
10282         
10283 2006-04-27  Miguel de Icaza  <miguel@novell.com>
10284
10285         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
10286         with missing assemblies), and to cope with:
10287
10288                 * Missing fieldref from a non-existing assembly.
10289                 * Missing methodref from a non-existing assembly.
10290
10291         The first batch of work to address *some* of the issues from 76661.
10292         
10293         * object.c (mono_class_create_runtime_vtable): If we fail to
10294         initialize the class raise the exception here. 
10295
10296         * metadata.c (mono_class_get_overrides_full): If any methods fail
10297         to load return the failure to the caller.
10298
10299         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
10300         flagging assemblies that failed to load.   
10301
10302         Do not crash if we are unable to load the assembly.
10303
10304         (mono_assembly_close): Do nothing with REFERENCE_MISSING
10305         assemblies. 
10306
10307         * loader.c (mono_loader_set_error_type_load): Change the
10308         convention to always pass unallocated strings, so we make our own
10309         copies (I know our own code had duplicated strings before, but
10310         this keeps the normal conventions).
10311         (method_from_memberref): Call mono_loader_set_error_method_load
10312         for all possible failures of loading the class. 
10313         Remove assert, turn into a loader error.
10314
10315         (mono_loader_error_to_exception): Move this routine from mini
10316         (mini_loader_error_to_exception) there was no need to have that in
10317         mini. 
10318
10319         * class.c (mono_class_from_typeref): If we were not able to load
10320         the assembly with mono_assembly_load_reference, call the
10321         mono_loader_set_error_type_load to register the problem.
10322
10323         (mono_class_setup_fields): If we fail to load the type from
10324         mono_metadata_parse_type_full, call mono_class_set_failure and
10325         break from the loop.
10326
10327         If class->exception_type is set, we do not layout the fields as
10328         that might crash the runtime, and instead return (from breaking
10329         from the previous loop).
10330
10331         (mono_class_setup_vtable): This now returns a boolean indicating
10332         whether the table was properly setup.   The decision is driven by
10333         mono_class_get_overrides_full which might run into non-existing
10334         methods. 
10335         
10336         (mono_class_init): Returns TRUE on success or FALSE if there was a
10337         problem in loading the type (incorrect assemblies, missing
10338         assemblies, methods, etc).
10339
10340         When we call mono_class_setup_fields we also check for a potential
10341         error inside this call (either a class exception or a general
10342         loader exception).
10343
10344         (mono_class_create_from_typedef): If the parent fails to load
10345         (calling mono_class_get_full) return NULL.
10346         
10347         ** Important **
10348
10349         calls to mono_metadata_parse_type_full should be checked
10350         everywhere and set the mono_class_set_failure
10351         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
10352
10353         The current patch checks the places where my manually constructed
10354         tests show the errors are showing up, but we should do it
10355         everywhere. 
10356
10357         ** Important2 **
10358
10359         mono_class_init return values should be tested everywhere, like
10360         the previous case this is something that we should audit
10361         everywhere and not only on the cases exposed by the tests I
10362         created. 
10363
10364 2006-04-26  Miguel de Icaza  <miguel@novell.com>
10365
10366         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
10367         boolean parameter and instead pass the information on `options'
10368         parameter (FileOptions).
10369
10370         * icall.c: Register the new signature for MonoIO.Open.
10371
10372         * debug-helpers.c (dis_one): Trying to understand how coverity
10373         works.  Fix Run 5, item 78.
10374
10375 2006-04-26  Dick Porter  <dick@ximian.com>
10376
10377         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
10378         dereference.
10379
10380 2006-04-25  Martin Baulig  <martin@ximian.com>
10381
10382         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
10383
10384         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
10385         debugger_thread_created().
10386         (debugger_gc_push_all_stacks): Don't handle the main thread in any
10387         special way.
10388         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
10389         (mono_debugger_finalize_threads): New function; undo the effects
10390         of mono_debugger_init_threads().
10391         (mono_debugger_create_all_threads): Removed.
10392
10393 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
10394
10395         * image.c (mono_image_close): Tidy up trace messages.
10396
10397         * assembly.c (mono_assembly_close): Ditto.
10398
10399         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
10400         no longer references an already freed assembly. Fixes #78168.
10401
10402 2006-04-21  Dick Porter  <dick@ximian.com>
10403
10404         * threads.c (mono_thread_detach): Fix reference counting when
10405         detaching threads.
10406
10407 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
10408
10409         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
10410         #78155.
10411
10412 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
10413
10414         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
10415         (mono_type_to_stind): Ditto.
10416
10417         * marshal.c: Use the new helper functions to simplify code.
10418
10419         * image.c (mono_image_close): Add some code for help debug assembly unloading
10420         problems.
10421
10422         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
10423         image mempool.
10424
10425         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
10426         assembly was already loaded in another appdomain. Fixes #78083.
10427
10428 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
10431         referenced assemblies.
10432         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
10433
10434         * domain.c (mono_domain_free): Add a trace message.
10435
10436         * appdomain.c (add_assemblies_to_domain): Ditto.        
10437
10438         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
10439         field.  
10440
10441 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
10444
10445 2006-04-12  Martin Baulig  <martin@ximian.com>
10446
10447         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
10448         `USE_INCLUDED_LIBGC'.   
10449
10450 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
10451
10452         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
10453         the patch contains ../ and a small directory name later. Hopefully fixes
10454         #78035.
10455
10456 2006-04-10  Martin Baulig  <martin@ximian.com>
10457
10458         Clean up the debugger's thread-handling code.
10459
10460         The debugger's thread-handling code has been moved from
10461         ../mini/debug-debugger.c to threads.c.  We now iterate directly
10462         over the `threads' hash, keep track of exiting threads and also
10463         use proper locking.
10464
10465         We can now debug XSP and XSP based applications with the debugger.
10466
10467         * object-internals.h (MonoThread): Added `gpointer end_stack'.
10468
10469         * threads.h
10470         (MonoThreadCallbacks): Removed; this was only used by the debugger.
10471         (mono_install_thread_callbacks): Likewise.      
10472
10473         * threads.c (mono_thread_callbacks): Removed.
10474         (debugger_thread_created, debugger_thread_exited): New static functions.
10475         (start_wrapper): Call debugger_thread_created().
10476         (thread_cleanup): Call debugger_thread_exited().
10477         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
10478         (mono_debugger_init_threads): New public function.
10479         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
10480         iterate directly over the `threads' hash and also use proper locking.
10481
10482         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
10483
10484         * mono-debug-debugger.h
10485         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
10486
10487 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
10488
10489         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
10490         argument type=array. Fixes #78057.
10491
10492 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
10493
10494         * culture-info-table.h : regenerated. Fixed bug #69652.
10495
10496 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
10497
10498         * loader.c metadata.c: Reapply a variant r59116.
10499         
10500         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
10501
10502         * class.c (mono_class_setup_interface_offsets): New internal function.
10503
10504         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
10505         interfaces too. Fixes #77398.
10506
10507         * reflection.c (encode_cattr_value): Add support for 
10508         parameter type=object, argument type=array.
10509         (load_cattr_value): Ditto. Fixes #77916.
10510
10511         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
10512         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
10513
10514         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
10515         a byval char array and CharSet is Ansi.
10516
10517         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
10518
10519 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
10520
10521         * metadata.c: Add some locking comments.
10522         
10523         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
10524         mempool.
10525         (mono_metadata_free_method_signature): Don't free the signature itself.
10526
10527         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
10528
10529         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
10530         reference the same MonoImage.
10531         (mono_assembly_load_from_full): Add an assert.
10532
10533 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * image.c (mono_image_close): Don't put the image we are about to free into the
10536         loaded_images_guid_hash.
10537
10538         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
10539         to reduce code duplication.
10540
10541         * marshal.c: Register the native functions called by this module as icalls, to
10542         somewhat centralize the creation of MonoMethodSignature's.
10543
10544         * loader.c (mono_method_signature): Add a cache for method signatures.
10545
10546         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
10547         the parameter attributes of a method.
10548         (mono_metadata_parse_method_signature_full): Refactored the computation of
10549         parameter attributes into a separate function. Also avoid one allocation in
10550         most cases.
10551
10552         * assembly.c (mono_assembly_close): Ditto.
10553
10554         * image.c (mono_image_close): Log trace messages with INFO level.
10555
10556         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
10557
10558         * image.c reflection.c: Correct reference counting of image modules.
10559         
10560         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
10561         of this function from the image mempool.
10562         
10563         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
10564         to allow more cached types to be used.
10565
10566         * mono-debug.c (mono_debug_add_method): Appled patch from
10567         David S. Miller  <davem@sunset.davemloft.net>: Access 
10568         minfo->lexical_blocks[] entry elements using read32().
10569
10570 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
10571
10572         * loader.c (mono_free_method): No longer free the method header for non-dynamic
10573         methods as it is allocated from the mempool.
10574
10575         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
10576         image mempool.
10577
10578         * metadata-internals.h: Add comments describing the reference counting scheme
10579         used for MonoImage and MonoAssembly.
10580
10581         * image.c assembly.c reflection.c: Rework reference counting of images and 
10582         assemblies so they are freed when the runtime is shut down. Free some 
10583         additional memory structures when an image is unloaded.
10584         
10585 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
10586
10587         * class.c loader.c reflection.c: Allocate more data structures in
10588         the image mempool.
10589
10590 2006-03-31  Miguel de Icaza  <miguel@novell.com>
10591
10592         * icall.c
10593         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
10594         build on pre glib 2.4 systems.
10595
10596 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
10599
10600         * icall.c: Fix some warnings.
10601
10602 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
10603
10604         * culture-info-table.h : regenerated.
10605
10606 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
10607
10608         * threads.c, object-internals.h, verify.c: changed the culture caching
10609         code to use a normal MonoArray for storage so the GC can keep track of
10610         them easily. Fixed bits of the cache logic, too and simplified the
10611         code.
10612
10613 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
10614
10615         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
10616         thread for non-Boehm GCs.
10617
10618 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
10619
10620         * domain.c, object.c, domain-internals.h: reduce the amount of memory
10621         needed to keep track of the data for static fields.
10622
10623 2006-03-29  Raja R Harinath  <rharinath@novell.com>
10624
10625         Fix #75172
10626         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
10627         for interface classes.  Use 'num_methods' instead.
10628         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
10629         before using '->vtable_size' field.
10630
10631 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
10632
10633         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
10634         doesn't contain managed pointers, so use a normal hashtable.
10635
10636 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
10637
10638         * reflection.c, class-internals.h, domain.c: fixed handling of types
10639         used as values for objects in custom attributes (bug #77915):
10640
10641 2006-03-24  Martin Baulig  <martin@ximian.com>
10642
10643         * class.c (mono_class_setup_fields): Added support for generic
10644         instances; fixes #77580.
10645
10646 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10647
10648         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
10649
10650 2006-03-24  Dick Porter  <dick@ximian.com>
10651
10652         * file-io.c (get_file_attributes): More stat macro breakage.
10653         Fixes bug 77759.
10654
10655 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
10656
10657         * profiler.c: added the file=filename option in the default profiler
10658         to output the profile data to filename.
10659
10660 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10661
10662         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
10663         bug #77877.
10664
10665 2006-03-22  Martin Baulig  <martin@ximian.com>
10666
10667         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
10668         allocated `MonoClassField *' in `fb->handle'.
10669
10670 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10671
10672         * class.c, image.c, metadata-internals.h: implemented new mechanism to
10673         allocate interface ID to save memory and allow better ID reuse on
10674         appdomain unload. setup_generic_vtable () removal from Martin.
10675
10676 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
10677
10678         * object.h, appdomain.c, domain.c, exception.c, icall.c,
10679         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
10680         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
10681         write barriers for reference stores with managed objects accessed with
10682         C structures in the runtime and in embedding programs.
10683
10684 2006-03-20  Raja R Harinath  <rharinath@novell.com>
10685
10686         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
10687         'interface_id' and 'max_interface_id' fields of MonoClasses
10688         representing open generic types.
10689
10690 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
10691
10692         * object.h, object.c, icall.c: added functions to deal with
10693         storing valuetypes that contain references in managed objects.
10694         * reflection.c, string-icalls.c, threads.c, marshal.c: small
10695         fixes and comments around uses of mono_array_addr ().
10696
10697 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
10698
10699         * object.h, icall.c, monitor.c: object.GetHashCode ()
10700         implementation that supports the moving garbage collector.
10701
10702 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
10703
10704         * icall.c, threads-types.h, threads.c: implemented finalizer for
10705         LocalDataStoreSlot.
10706
10707 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
10708
10709         * metadata.c (mono_type_size): Add a fixme.
10710         (mono_type_stack_size): Ditto.
10711
10712         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
10713         'type_forwarders' field.
10714
10715         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
10716         attribute from net 2.0.
10717
10718         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
10719         from class.c.
10720
10721         * class.c (mono_class_setup_fields): Fix a warning.
10722         
10723         * class.c (mono_class_from_name): Add support for assemblyref entries
10724         in the EXPORTEDTYPE table.
10725
10726         * reflection.c: Add support for handling type forwarders under net 2.0.
10727
10728         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
10729         
10730 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
10731
10732         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
10733         overwriting entries in ModuleBuild->types, also clean up the code
10734         a little. Fixes #77774.
10735
10736 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
10737
10738         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
10739         load friend assembly info when present.
10740
10741 2006-03-14  Raja R Harinath  <rharinath@novell.com>
10742
10743         Fix crasher on gtest-158.cs.
10744         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
10745         the return value if the MonoClass we want is yet in an
10746         inconsistent state.
10747         * class.c (mono_class_create_from_typedef): Add an comment
10748         explaining an order dependency between mono_class_setup_parent and
10749         mono_class_setup_mono_type.
10750
10751 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
10752
10753         * class.c: documentation updates and events bug fix.
10754
10755 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
10756
10757         * class.c: some cleanup, locking fixes.
10758
10759 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
10760
10761         * class.c: fix the generics code to setup nested
10762         type info to the instantiated type (bug #77770).
10763
10764 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
10765
10766         * marshal.c: fixed a few type correctness issues.
10767
10768 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10769
10770         * loader.c: the Set/Get/Addrtess array methods should be public.
10771
10772 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
10773
10774         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
10775         
10776         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
10777         info->wrapper.
10778
10779 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
10780
10781         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
10782
10783         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
10784
10785         * mempool.c (mono_mempool_alloc): Speed this up a bit.
10786         (mono_mempool_alloc0): Ditto.
10787
10788 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10789
10790         * socket-io.c:
10791         (create_object_from_sockaddr): it was allocating 4 extra bytes
10792         for the AF_UNIX data. Fixes bug #77747.
10793
10794 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
10795
10796         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
10797
10798 2006-03-09  Dick Porter  <dick@ximian.com>
10799
10800         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
10801         Fixes bug 76966 again.
10802
10803 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
10804
10805         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
10806         names from r57532
10807         * appdomain.c: Bumped corlib version to 48 (due to r57532)
10808
10809 2006-03-07  Martin Baulig  <martin@ximian.com>
10810
10811         * object.c
10812         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
10813
10814 2006-03-07  Martin Baulig  <martin@ximian.com>
10815
10816         * class.c
10817         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
10818         regression introduced in r56970; see gtest-252.cs.
10819
10820         * loader.c (mono_get_method_constrained): Correctly handle generic
10821         methods; see gtest-253.cs.
10822
10823 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
10824
10825         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
10826
10827 2006-03-04  Martin Baulig  <martin@ximian.com>
10828
10829         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
10830         compute the parent type at runtime, just like we're already doing
10831         it for interfaces.
10832
10833         * reflection.c
10834         (mono_reflection_bind_generic_parameters): Don't compute the
10835         parent type anymore.
10836
10837         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
10838
10839 2006-03-04  Martin Baulig  <martin@ximian.com>
10840
10841         * mono-debug-debugger.h
10842         (mono_debugger_create_notification_function): Allocate memory at
10843         runtime and return a pointer to it.
10844
10845 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
10846
10847         * assembly.c: Fix windows build.
10848         
10849         * assembly.c: Fix build.
10850
10851         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
10852
10853         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
10854         
10855 2006-03-03  Dick Porter  <dick@ximian.com>
10856
10857         * process.c
10858         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
10859         Check parameters before dereferencing them.  Fixes Aaron's part of
10860         bug 77393.
10861
10862 2006-03-03  Raja R Harinath  <rharinath@novell.com>
10863
10864         Fix performance regression.
10865         * loader.c (find_method_in_class): Add 'from_class' argument.
10866         Rename 'klass' argument to 'in_class'.  The signature is compared
10867         against the method in 'in_class', and the corresponding method is
10868         returned from 'from_class'.
10869         (find_method): Walk both 'in_class' and 'from_class' in parallel.
10870         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
10871         type definition and generic instantiation in parallel.
10872         (mono_get_method_constrained): Update to changes.
10873
10874 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
10875
10876         * threads.c: make sure the domain is correct, too when doing
10877         mono_thread_attach ().
10878
10879 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
10882         windows. Fixes #77683.
10883
10884 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
10885
10886         * object.h, *: introduced specific way to set elements of an array
10887         of references to be used as write barrier. Still need to audit the
10888         uses of mono_array_addr.
10889
10890 2006-03-01  Miguel de Icaza  <miguel@novell.com>
10891
10892         * object-internals.h: New field to cache the assmebly name, patch
10893         from Tambet Ingo (tambet@ximian.com)
10894
10895 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
10896
10897         * decimal.h, class-internals.h, metadata-internals.h,
10898         file-io.h: mark a few function declarations as internal, to
10899         reduce the number of PLT entries.
10900
10901 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10902
10903         * file-io.c: fix typo in warning message.
10904
10905 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
10906
10907         * loader.c: on unix, lookup the "*A" version of a function
10908         if charset is auto as a second option before failing.
10909
10910 2006-02-28  Raja R Harinath  <rharinath@novell.com>
10911
10912         * class.h (mono_class_inflate_generic_method): Revert to two
10913         argument version.
10914         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
10915         (mono_class_inflate_generic_method_full): Add.
10916         * class.c (mono_class_inflate_generic_method_full): Rename from
10917         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
10918         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
10919         * loader.c, reflection.c: Update to changes.
10920
10921 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
10922
10923         * icall.c: const fixes and small improvements.
10924
10925 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10926
10927         * threadpool.c: for asynchronous connect(), enable the same workaround
10928         for BSD 6 as for the Mac. Fixes bug #77637.
10929
10930 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
10931
10932         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
10933         formatted classes. Fixes #77524.
10934
10935 2006-02-24  Raja R Harinath  <rharinath@novell.com>
10936
10937         * class.c (inflate_generic_type): Add a couple more
10938         micro-optimizations.
10939         (inflate_generic_context): Don't use the 'gmethod' from
10940         'inflate_with'.
10941         (mono_class_inflate_generic_method): If the method has generic
10942         parameters, but the passed-in context doesn't have a 'gmethod',
10943         create one.  Use the possibly simplified generic instantiation
10944         from the declaring class instead of the one passed in.
10945
10946 2006-02-24  Raja R Harinath  <harinath@gmail.com>
10947
10948         Make generic method signature and method header handling lazy.
10949         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
10950         (inflate_generic_header): Likewise.
10951         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
10952         parameter to avoid inflating types.
10953         (mono_get_inflated_method): Empty out.
10954         * class.h (mono_class_inflate_generic_method): Update to changes.
10955         * loader.c (mono_get_method_from_token): Don't parse signature for
10956         generic methods, nor methods of generic classes.
10957         (mono_method_signature): Rename from 'mono_method_signature'.
10958         Inflate signature on demand.
10959         (mono_method_get_header): Inflate method header on demand.
10960         * reflection.c: Update to changes.
10961
10962 2006-02-23  Raja R Harinath  <rharinath@novell.com>
10963
10964         * metadata.c (mono_metadata_inflate_generic_inst): If the
10965         instantiation is closed, don't bother expanding it in the new
10966         context.
10967         * class.c (inflate_generic_class): If the generic instantiation
10968         doesn't change after inflation, return the argument itself.
10969         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
10970         Add bounds checks.
10971         (inflate_generic_context): If neither the generic class nor the
10972         generic method instantiations change, return the original context.
10973         * reflection.c (mono_method_get_object): Do
10974         'mono_get_inflated_method' before accessing the ->klass field.
10975         (inflate_mono_method): Don't create a MonoGenericMethod unless
10976         necessary.
10977         (inflate_method): Don't pass a constructed type as the declaring
10978         type of a methodbuilder.
10979
10980 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
10981
10982         * object.c: fix memory overwrite.
10983
10984 2006-02-22  Dick Porter  <dick@ximian.com>
10985
10986         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
10987         it doesn't work any more.
10988         (mono_threads_request_thread_dump): Fix unused variable warnings.
10989
10990 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10991
10992         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
10993         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
10994         the public header file.
10995
10996 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
10997
10998         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
10999
11000 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11001
11002         * class-internals.h, object.c: reduce the size of MonoVTable
11003         and store the interface_offsets array at negative offsets.
11004
11005 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11006
11007         * metadata.c: tweak table descriptors data structures to reduce
11008         size and runtime relocations.
11009
11010 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11011
11012         * marshal.c: fix some types and opcodes to be type-safe
11013         in marshaling wrappers.
11014
11015 2006-02-21  Ankit Jain  <jankit@novell.com>
11016
11017         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
11018
11019 2006-02-21  Raja R Harinath  <rharinath@novell.com>
11020
11021         * metadata.c (get_constraints): Relax debugging checks for monodis.
11022
11023 2006-02-21  Ankit Jain  <jankit@novell.com>
11024
11025         * metadata.c (mono_metadata_load_generic_params): Move the code
11026         checking for ambiguous generic params from here to mono/dis/get.c
11027         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
11028
11029 2006-02-21  Raja R Harinath  <harinath@gmail.com>
11030
11031         Fix assertion triggered when compiling nemerle.
11032         * class.c (mono_get_shared_generic_inst): Rename from
11033         get_shared_inst and make non-static.
11034         * loader.c (mono_get_shared_generic_method): New.  Used to create
11035         the MonoGenericContext-equivalent of a MonoGenericContainer.
11036         (mono_get_method_from_token): Initialize the 'context' field of
11037         the created MonoGenericContainer.
11038         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
11039         * metadata.c (get_constraints): Add sanity check.
11040         * class-internals.h: Add new internal methods.
11041
11042         * reflection.c (verify_safe_for_managed_space): New sanity check.
11043         Currently checks that owner-less generic parameters aren't allowed
11044         in managed space.
11045         (mono_type_get_object): Use it.
11046         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
11047         that are now in mono_type_get_object.
11048         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
11049
11050 2006-02-19  Raja R Harinath  <harinath@gmail.com>
11051
11052         * metadata.c (mono_type_create_from_typespec): Rename from
11053         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
11054         argument and caching of types in the generic container.
11055         (unwrap_arrays, find_generic_param): Remove.
11056         * metadata-internals.h: Update.
11057         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
11058
11059 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
11060
11061         * class.c (mono_class_get_exception_for_failure): Fix a warning.
11062
11063         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
11064         return values. Fixes #77581.
11065
11066         * class.c (mono_fnptr_class_get): Switch name and name_space.
11067
11068         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
11069         classes and add support for [In, Out] attributes.
11070         (mono_marshal_free_asany): Ditto. Fixes #77524.
11071
11072 2006-02-18  Raja R Harinath  <harinath@gmail.com>
11073
11074         * class.c (mono_class_from_generic_parameter): Make more robust to
11075         incomplete MonoGenericContainers from monodis.
11076
11077 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11078
11079         * class-internals.h: added some more exception types.
11080         * class.c, metadata.c: added a few checks to handle missing
11081         types.
11082
11083 2006-02-17  Raja R Harinath  <rharinath@novell.com>
11084
11085         Use owner-less generic-params some more.
11086         * class.c (my_mono_class_from_generic_parameter): Remove.
11087         (mono_class_from_generic_parameter): Handle null image,
11088         param->name and param->owner.
11089         (mono_class_from_mono_type): Update.
11090         (mono_class_create_from_typespec): Remove 'container' parameter.
11091         If that parameter is non-null, the result is always inflated by
11092         'mono_class_get_full' anyway.
11093         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
11094         parameter.
11095         (mono_class_get_full): Update.
11096
11097         * class.c (inflate_generic_type) [GENERICINST]: If the generic
11098         instance is not open, don't bother inflating.
11099         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
11100         parse metadata for inflated classes.
11101         (_mono_class_get): Change GenericContext* parameter to
11102         GenericContainer*.
11103         (mono_class_create_from_typespec): Likewise.  Simplify, and
11104         implement trivially.  All the cases are handled in
11105         mono_class_from_mono_type.  Don't inflate returned class.
11106         (mono_class_get_full): Delegate GENERICINST optimization to
11107         inflate_generic_type.
11108         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
11109
11110 2006-02-16  Dick Porter  <dick@ximian.com>
11111
11112         * socket-io.c (create_object_from_sockaddr): Fix typo.
11113         (create_sockaddr_from_object): Check array lengths before
11114         potentially accessing items off the end.
11115         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
11116         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
11117         (ves_icall_System_Net_Sockets_Socket_Send_internal)
11118         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
11119         length checks to avoid wraparound overflows.
11120         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
11121         contents of the array of sockets
11122         (hostent_to_IPHostEntry2)
11123         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
11124         Check return value of inet_ntop ().
11125         (addrinfo_to_IPHostEntry): Fix typo
11126
11127 2006-02-16  Raja R Harinath  <rharinath@novell.com>
11128
11129         Type metadata parsing doesn't use generic-instantiation information.
11130         * metadata.c (mono_metadata_parse_array_full): Change
11131         MonoGenericContext* parameter to MonoGenericContainer*.
11132         (mono_metadata_parse_type_full): Likewise.
11133         (mono_type_create_from_typespec_full): Likewise.
11134         (mono_metadata_parse_mh_full): Likewise.
11135         (mono_metadata_parse_generic_inst): Likewise.
11136         (do_mono_metadata_parse_generic_class): Likewise.
11137         (do_mono_metadata_parse_type): Likewise.
11138         * metadata-internals.h: Update to changes.
11139         * class.c (mono_class_find_enum_basetype): Likewise.
11140         (mono_class_setup_fields): Likewise.
11141         (mono_class_create_from_typespec): Likewise.
11142         * loader.c (method_from_methodspec): Likewise.
11143         (mono_get_method_from_token): Likewise.
11144         (mono_method_get_header): Likewise.
11145
11146 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11147
11148         * marshal.c: handle additional GENERICINST case (patch from
11149         Thong Nguyen <tum@veridicus.com>).
11150         Fix a few cases where LDIND_I/STIND_I was used for references.
11151
11152 2006-02-16  Raja R Harinath  <rharinath@novell.com>
11153
11154         * reflection.c (mono_reflection_get_token): Remove unused variable.
11155
11156 2006-02-16  Martin Baulig  <martin@ximian.com>
11157
11158         * reflection.c (mono_reflection_get_token): Add support for fields
11159         in instantiated generic types.
11160
11161         * icall.c
11162         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
11163
11164 2006-02-15  Martin Baulig  <martin@ximian.com>
11165
11166         * icall.c
11167         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
11168         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
11169         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
11170         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
11171
11172 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
11173
11174         * class.c, metadata.c, metadata.h, object.c, icall.c,
11175         marshal.c: changed mono_type_get_underlying_type () to do
11176         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
11177         Fixed handling of instantiated generic valuetypes (bug #75479).
11178
11179 2006-02-15  Raja R Harinath  <rharinath@novell.com>
11180
11181         * metadata.c (mono_metadata_decode_signed_value): Simplify.
11182         Delegate to mono_metadata_decode_value, and work on the returned value.
11183
11184         * icall.c (ves_icall_MonoType_GetGenericArguments):
11185         Add consistency check here too.
11186         
11187 2006-02-15  Ankit Jain  <jankit@novell.com>
11188
11189         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
11190         char/short etc.
11191
11192 2006-02-15  Ankit Jain  <jankit@novell.com>
11193
11194         * metadata.c (mono_metadata_decode_signed_value): New function to decode
11195         signed values, used only for representing lower bounds of arrays.
11196         (mono_metadata_parse_array_full): Use new
11197         mono_metadata_decode_signed_value to decode lower bounds.
11198
11199 2006-02-14  Martin Baulig  <martin@ximian.com>
11200
11201         * reflection.c
11202         (mono_reflection_get_token): Support "MonoGenericMethod" and
11203         "MonoGenericCMethod" and allow generic instances / methods.
11204
11205 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
11206
11207         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
11208         to obtain the terminal size using an ioctl.
11209
11210         * object.c (mono_nullable_init): Revert this as nullable reference
11211         types are not valid.
11212         (mono_nullable_box): Ditto.
11213
11214 2006-02-09  Dick Porter  <dick@ximian.com>
11215
11216         * threads.c (mono_thread_detach): Drop a reference to the thread
11217         we're detaching.
11218
11219 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
11220
11221         * object.c (mono_nullable_init): Handle nullable reference types.
11222         (mono_nullable_box): Ditto. Fixes #77446.
11223
11224 2006-02-07  Martin Baulig  <martin@ximian.com>
11225
11226         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
11227
11228 2006-02-07  Ankit Jain  <jankit@novell.com>
11229
11230         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
11231         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
11232         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
11233         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
11234         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
11235         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
11236
11237 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
11238
11239         * class.c (mono_class_create_generic): Set type_token as well.
11240
11241         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
11242         compatible with MS.
11243
11244 2006-02-02  Martin Baulig  <martin@ximian.com>
11245
11246         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
11247         has never been used so far.
11248
11249 2006-02-02  Martin Baulig  <martin@ximian.com>
11250
11251         * mono-debug-debugger.h: Changed comment at the top of this file;
11252         the header is not installed, but it's safe to #include it from
11253         within the JIT.
11254
11255         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
11256         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
11257
11258 2006-02-02  Martin Baulig  <martin@ximian.com>
11259
11260         * mono-debug.h
11261         (MonoSymbolTable): Removed the `metadata_info' field.
11262
11263         * mono-debug.c
11264         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
11265
11266         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
11267         (mono_debugger_add_builtin_types): Removed.
11268         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
11269         (mono_debugger_create_notification_function): We now operate on a
11270         pre-allocated area; take a `gpointer' and return `void'.
11271
11272         * mono-debug-debugger.c
11273         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
11274         (mono_debugger_add_builtin_types): Removed.
11275
11276 2006-02-02  Martin Baulig  <martin@ximian.com>
11277
11278         * threads.c (mono_debugger_create_all_threads): New public method.
11279
11280 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11281
11282         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
11283         breaks on several platforms.
11284
11285 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
11286
11287         * assembly.c: the VS.NET build doesn't supply default values for
11288         MONO_ASSEMBLIES and MONO_CFG_DIR.
11289
11290 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
11291
11292         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
11293         helper function.
11294
11295         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
11296
11297         * loader.c (method_from_memberref): Fix a warning.
11298
11299         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
11300
11301         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
11302         with explicit layout. Fixes #77433.
11303
11304 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
11305
11306         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
11307         max_interface_id is initialized before using it. Fixes #77398.
11308         (ves_icall_Type_GetInterfaces): Ditto.
11309
11310 2006-01-30  Raja R Harinath  <rharinath@novell.com>
11311
11312         * metadata.c (mono_metadata_parse_method_signature_full): Don't
11313         allocate memory for parameter attributes when parsing memberref
11314         signatures.
11315         * loader.c (mono_loader_set_error_method_load): Don't warn.
11316         (method_from_memberref): Ensure MissingMethodException gets thrown
11317         if method is not found.  Make warning more informative.
11318
11319 2006-01-29  Raja R Harinath  <harinath@gmail.com>
11320
11321         Fix #77397
11322         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
11323         return true if is byref.
11324         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
11325         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
11326         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
11327
11328 2006-01-27  Raja R Harinath  <rharinath@novell.com>
11329
11330         Fix tests/find-method.2.il
11331         * loader.c (find_method, find_method_in_class): Remove is_inflated
11332         argument.  Revert 2006-01-18 change.
11333         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
11334         is generic, search for method in its generic definition.
11335         * class.c (mono_class_setup_vtable_general): Print generic
11336         arguments of generic types in debugging printf.
11337
11338 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
11339
11340         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
11341
11342         * threads.c (mono_threads_request_thread_dump): New helper function.
11343
11344 2006-01-25  Raja R Harinath  <rharinath@novell.com>
11345
11346         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
11347
11348 2006-01-25  Ankit Jain  <jankit@novell.com>
11349
11350         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
11351         move definition to ..
11352         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
11353         
11354 2006-01-25  Ankit Jain  <jankit@novell.com>
11355             Raja R Harinath  <rharinath@novell.com>
11356
11357         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
11358         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
11359         as necessary.
11360
11361 2006-01-25  Martin Baulig  <martin@ximian.com>
11362
11363         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
11364         `MonoDebuggerThread' into debug-debugger.c.
11365
11366 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
11367
11368         * profiler.c: fix printing of data.
11369
11370 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
11371
11372         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
11373           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
11374
11375 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11376
11377         * object.c: fix deadlock related to string interning.
11378
11379 2006-01-23  Martin Baulig  <martin@ximian.com>
11380
11381         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
11382
11383         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
11384
11385 2006-01-23  Martin Baulig  <martin@ximian.com>
11386
11387         * mono-debug.h: Moved the prototypes of some functions which are
11388         used by the JIT here from mono-debug-debugger.h.
11389
11390 2006-01-21  Martin Baulig  <martin@ximian.com>
11391
11392         * Makefile.am: Don't install mono-debug-debugger.h.
11393
11394 2006-01-21  Martin Baulig  <martin@ximian.com>
11395
11396         * mono-debug-debugger.h: Enforce the private status of this header
11397         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
11398         Moved some stuff from mono-debugger-jit-wrapper.h here.
11399
11400 2006-01-20  Raja R Harinath  <rharinath@novell.com>
11401
11402         * class.c (mono_class_from_typeref): Add a sanity test to help
11403         catch lack of assembly load/search hooks.
11404
11405 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
11406
11407         * marshal.c (emit_struct_conv): Relax the fields with same offset
11408         check even more. Fixes #77230.
11409
11410 2006-01-18  Martin Baulig  <martin@ximian.com>
11411
11412         * loader.c (find_method_in_class): Added `gboolean is_inflated'
11413         argument; if false, we compare the uninstantiated signatures.
11414         (method_from_memberref): Compare the uninstantiated signatures;
11415         fixes #76417.
11416
11417 2006-01-18  Robert Jordan  <robertj@gmx.net>
11418
11419         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
11420         Clear the weak link. Fixes bug #77170.
11421
11422         * gc.c (mono_gchandle_free):
11423         Reflect *-gc.c changes (tiny optimization).
11424
11425 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
11426
11427         * metadata.c (mono_metadata_signature_dup): Applied patch from
11428         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
11429         Fixes #77288.
11430
11431 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
11432
11433         * marshal.c (emit_struct_conv): Allow fields with the same offset when
11434         marshalling from native to managed code. Fixes #77230.
11435
11436 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11437
11438         * threadpool.c: fix problem (Mac only) when more than one asynchronous
11439         connect. Fixes bug #77020.
11440
11441 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
11442
11443         * class.c: fixed id assignement for nested interfaces (bug #77275).
11444         Added also better info for --print-vtable debugging.
11445
11446 2006-01-12  Martin Baulig  <martin@ximian.com>
11447
11448         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
11449         interfaces on-the-fly; fixes #76625.
11450
11451         * class-internals.h
11452         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
11453         don't need that anymore.
11454
11455 2006-01-12  Miguel de Icaza  <miguel@novell.com>
11456
11457         * socket-io.c
11458         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
11459         To avoid initing the nested_classes when not needed I turned the
11460         PeerCredData as a toplevel internal class, as it has to be shared
11461         anyways. 
11462
11463         Fixes the CASA issue.
11464
11465 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
11466
11467         * domain.c: Accessors for MonoJitInfo
11468
11469         * profiler-private.h: Add jitinfo to the end jit hook
11470
11471         * profiler.[ch]: Define new hooks, called after jitting which give
11472         the MonoJitInfo that was compiled
11473
11474 2006-01-10  Martin Baulig  <martin@ximian.com>
11475
11476         * class.c (mono_class_setup_events): Add support for generic
11477         classes; fixes #76440.
11478
11479 2006-01-06  Raja R Harinath  <rharinath@novell.com>
11480
11481         Fix #77160.
11482         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
11483         on passed-in method.
11484
11485 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
11486
11487         * object.c (mono_runtime_invoke_array): Add Nullable support.
11488
11489         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
11490
11491 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
11492
11493         * file-io.c: Don't consider sockets as directory and avoid an endless
11494         loop. Fix bug #76966.
11495
11496 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
11497
11498         * object.c (mono_nullable_init): New helper function.
11499         (mono_nullable_box): Ditto.
11500
11501         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
11502
11503         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
11504
11505         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
11506         
11507 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
11508
11509         * class.c (mono_class_is_assignable_from): Make T assignable to 
11510         Nullable<T>.
11511
11512 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
11513
11514         * appdomain.c: Bump corlib version to 46.
11515         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
11516         serialization purpose) and changed ves_icall_System_Reflection_
11517         Assembly_get_code_base signature to accept a boolean (to escape, or 
11518         not, the assembly code base).
11519
11520 2005-12-23  Dick Porter  <dick@ximian.com>
11521
11522         * icall.c: 
11523         * threads-types.h: 
11524         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
11525         CreateEvent icall now returns "created" boolean parameter.
11526
11527 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
11528
11529         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
11530         #76967.
11531
11532         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
11533         when attr_klass is an interface. Fixes #77045.
11534
11535 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
11536
11537         * marshal.c (emit_struct_conv): Fix previous patch.
11538         
11539         * marshal.c (emit_struct_conv): Add a check for fields with the same
11540         offset.
11541
11542 2005-12-20  Raja R Harinath  <rharinath@novell.com>
11543
11544         Fix regression in Mono.C5.
11545         * class.c (mono_class_create_generic): If 'klass' is an interface
11546         set up the interface offsets.
11547         (mono_class_is_assignable_from): Don't throw away generic arguments.
11548
11549 2005-12-19  Raja R Harinath  <rharinath@novell.com>
11550
11551         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
11552         type parameters.
11553
11554 2005-12-15  Raja R Harinath  <rharinath@novell.com>
11555
11556         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
11557         dead store.
11558         (do_mono_metadata_parse_generic_class): Don't pass the current
11559         generic context when parsing the type being instantiated: it
11560         cannot use it, anyway.
11561
11562         * loader.c (method_from_memberref): Don't inflate a signature if
11563         it doesn't contain any type parameters.
11564
11565 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
11566
11567         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
11568
11569 2005-12-14  Martin Baulig  <martin@ximian.com>
11570
11571         * class.c
11572         (mono_type_get_name_recurse): Don't return null for type
11573         parameters and open generic classes.
11574         (mono_class_setup_methods): Don't exclude generic instances.
11575         (mono_get_unique_iid): Use different IDs for different
11576         instantiations of the same generic type.
11577         (mono_class_setup_vtable): Only use setup_generic_vtable() for
11578         open generic instances; create a normal vtable for closed generic
11579         instances.
11580         (mono_class_setup_vtable_general): We're now also called for
11581         closed generic instances.
11582
11583         * reflection.c
11584         (mono_reflection_bind_generic_parameters): Correctly use
11585         mono_metadata_lookup_generic_inst() everywhere.
11586
11587 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
11588
11589         * object.c (mono_class_create_runtime_vtable): Call 
11590         mono_class_setup_vtable ().
11591
11592         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
11593         function.
11594         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
11595         #76959.
11596
11597         * loader.c (mono_loader_set_error_type_load): Print the type load
11598         warnings to the console so they are more visible to the user.
11599         (mono_loader_set_error_method_load): Ditto.
11600
11601         * reflection.c (ensure_runtime_vtable): Revert the last change as it
11602         is still broken.
11603         
11604         * reflection.c (ensure_runtime_vtable): Fix build.
11605
11606         * reflection.c (ensure_runtime_vtable): Disable an optimization which
11607         doesn't work in all cases.
11608
11609 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
11610
11611         * object.c (mono_array_new_full): Treat a single dimensional array
11612         with 0 lower bounds as an szarray. Fixes #76973.
11613
11614         * reflection.c (custom_attr_visible): Really fix this.
11615
11616 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
11617
11618         * reflection.c (custom_attr_visible): Allow nested public attributes
11619         as well.
11620
11621         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
11622         interface check.
11623
11624 2005-12-12  Raja R Harinath  <harinath@gmail.com>
11625
11626         * class.c (set_generic_param_owner): Delete.
11627         (mono_class_create_from_typedef): Don't set ->owner field of
11628         generic parameters to "param containers" of enclosing classes.
11629         * reflection.c (mono_reflection_initialize_generic_parameter):
11630         Likewise.
11631
11632 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * reflection.c (custom_attr_visible): Fix build.
11635
11636 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
11637
11638         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
11639         private attributes.
11640         
11641         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
11642         handling of null parameter defaults.
11643
11644 2005-12-09  Raja R Harinath  <rharinath@novell.com>
11645
11646         * class.c (mono_class_from_generic_parameter): Don't set
11647         klass->generic_container.
11648         (my_mono_class_from_generic_parameter): Likewise.
11649
11650 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * reflection.c (load_public_key): Fix a warning.
11653         (method_encode_code): Fix unaligned accesses.
11654
11655 2005-12-07  Martin Baulig  <martin@ximian.com>
11656
11657         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
11658
11659         * reflection.c
11660         (write_generic_param_entry): Encode our custom attrs.
11661
11662         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
11663
11664 2005-12-07  Martin Baulig  <martin@ximian.com>
11665
11666         * reflection.c (encode_new_constraint): Removed; we don't use the
11667         `NewConstraintAttribute' anymore.
11668
11669 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
11672         not fire a TypeResolve event when Assembly.GetType () is called.
11673
11674 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
11675
11676         Beginning of support for nullable types in the runtime. Parts of
11677         this patch are from Martin.
11678
11679         * appdomain.c (MONO_CORLIB_VERSION): Bump
11680
11681         * domain.c (mono_init_internal): get the nullable type
11682
11683         * class.c (mono_class_is_nullable): New method
11684         (mono_class_get_nullable_param): New mehod
11685         (mono_class_create_generic): In types T? set cast_class to T
11686
11687         * class-internals.h (MonoDefaults): new nullable default class
11688         (mono_class_get_nullable_param, mono_class_get_nullable_param):
11689         new methods.
11690
11691 2005-12-05  Raja R Harinath  <rharinath@novell.com>
11692
11693         * metadata.c (select_container): New.  Refactor code to select the
11694         appropriate GenericContainer given the type of generic parameter
11695         we are looking for.
11696         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
11697         not a MonoGenericContext.  Use select_container.  Update parameters.
11698         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
11699         and MONO_TYPE_MVAR.
11700         (unwrap_arrays): Remove duplicate tests.
11701         (find_generic_param): Rename from 'has_same_context'.  Now walks a
11702         generic instantiated class to find any arguments that are generic
11703         parameters.
11704         (mono_type_create_from_typespec_full): Use find_generic_param to
11705         avoid evicting some generic instantiations from the typespec
11706         cache.
11707
11708 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
11709
11710         * reflection.c: fixed writing of doubles on ARM FPA.
11711
11712 2005-12-02  Robert Jordan  <robertj@gmx.net>
11713
11714         * icall.c: Fixed EventInfo.ReflectedType (#76829).
11715
11716 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11717
11718         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
11719         least on SUSE 10 they are not the same (on debian, they are just the
11720         same thing).
11721
11722 2005-12-01  Raja R Harinath  <rharinath@novell.com>
11723
11724         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
11725         DeclaringType for VARs and MVARs.
11726         * class.c (set_generic_param_owner): Fix initialization of owner
11727         fields.
11728
11729 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
11730
11731         * icall.c: fixed Enum.ToObject() to correctly convert the values.
11732
11733 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11734
11735         * threadpool.c: workaround for a bug that shows up on the Mac:
11736         select()+connect() on a blocking socket is not like it should
11737         be, so we proceed to connect() in that case, wasting the I/O
11738         threadpool thread until connect succeedes. Fixes bug #75436.
11739
11740 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11741
11742         * threadpool.c: fix typo when setting file descriptor states.
11743
11744 2005-11-28  Raja R Harinath  <rharinath@novell.com>
11745
11746         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
11747         * metadata.c (mono_metadata_parse_method_signature_full): Don't
11748         create a temporary signature container.
11749         (mono_metadata_parse_generic_param): Update to changes.
11750         (mono_type_create_from_typespec_full): Update to changes.
11751         * loader.c (method_from_memberref): Don't use a
11752         MonoGenericContainer while parsing a memberref signature.
11753         (method_from_methodspec): Remove dead-store of the 'container'
11754         variable.  It's overwritten before use.
11755
11756         * metadata.c (mono_type_create_from_typespec_full): Make debugging
11757         checks tighter.
11758         (mono_metadata_parse_generic_param): Likewise.
11759         * loader.c (find_method_in_class): Does not need a
11760         MonoGenericContainer.  Use 'mono_method_signature' rather than
11761         'mono_method_signature_full'.
11762         (find_method, mono_get_method_constrained, method_from_memberref):
11763         Update to changes.
11764
11765         * metadata.c (mono_type_create_from_typespec_full): Ensure that
11766         owner-less generic-parameters are never evicted from the typespec
11767         cache.
11768
11769         * loader.c (method_from_memberref): Don't use the current context
11770         when parsing signatures.
11771         (method_from_methodspec, mono_get_method_from_token): Update to changes.
11772
11773         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
11774         side-effects in g_assert.
11775         * loader.c (mono_get_method_from_token): Resolve klass earlier so
11776         that we don't potentially lose information.
11777
11778 2005-11-26  Dick Porter  <dick@ximian.com>
11779
11780         * icall.c:
11781         * threads.c: icalls to implement basic (ie, not named)
11782         System.Threading.Semaphore.
11783
11784 2005-11-24  Dick Porter  <dick@ximian.com>
11785
11786         * process.c
11787         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
11788         Use GetProcessId() if it's available.
11789
11790 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
11791
11792         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
11793
11794 2005-11-23  Raja R Harinath  <rharinath@novell.com>
11795             Ankit Jain  <jankit@novell.com>
11796
11797         * loader.c (mono_get_method_from_token): Initialize 'method' field
11798         of all generic parameters before parsing the signature.  Remove
11799         code that "fixed"-up MVAR references.
11800
11801 2005-11-23  Ankit Jain  <jankit@novell.com>
11802
11803         * metadata.c (mono_metadata_has_generic_params):
11804         (mono_metadata_load_generic_param_constraints):
11805         (mono_metadata_load_generic_params): Move duplicate code ...
11806         (mono_metadata_get_generic_param_row): ... here. Returns the
11807         first row-id in GenericParam table for a given owner (token).
11808         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
11809         prototype.
11810
11811 2005-11-23  Raja R Harinath  <rharinath@novell.com>
11812             Ankit Jain  <jankit@novell.com>
11813
11814         * metadata.c (mono_metadata_class_equal): Pass signature_only when
11815         comparing VARs too.
11816         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
11817         type->data.generic_param only if the type is an MVAR.
11818         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
11819         leak owner-less VARs and MVARs into managed space.
11820
11821 2005-11-21  Martin Baulig  <martin@ximian.com>
11822
11823         * class-internals.h
11824         (MonoMethod): Moved the `generic_container' here from
11825         `MonoMethodNormal' since we now also need it for
11826         `MonoMethodPInvoke';
11827         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
11828         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
11829         an union containing both `MonoMethodNormal' and
11830         `MonoMethodPInvoke'.
11831
11832         * loader.c
11833         (mono_get_method_from_token): Allow implementing generic methods
11834         as interncalls.
11835
11836         * threads.c
11837         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
11838         icall.
11839
11840 2005-11-17  Dick Porter  <dick@ximian.com>
11841
11842         * icall.c: 
11843         * process.h: 
11844         * process.c: Split the Process Start_internal icall into
11845         ShellExecuteEx_internal and CreateProcess_internal, which are
11846         called depending on whether UseShellExecute is true.  Fixes bug
11847         76670.
11848
11849         * appdomain.c (MONO_CORLIB_VERSION): Incremented
11850
11851 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
11852
11853         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
11854         'msize' parameters, use the information in 'mspec' instead.
11855         (emit_object_to_ptr_conv): Ditto.
11856
11857         * marshal.c (emit_struct_conv): Handle explicit layout structs with
11858         fields out of order. Fixes #76733.
11859
11860 2005-11-17  Ankit Jain  <jankit@novell.com>
11861
11862         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
11863
11864 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
11865
11866         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
11867           bug #76575.
11868
11869 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
11870
11871         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
11872         for types with non-auto layout. Fixes #76717.
11873
11874 2005-11-16  Ankit Jain  <jankit@novell.com>
11875
11876         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
11877         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
11878         if generic_context is null.
11879           (mono_metadata_generic_param_equal): param->owner can be null.
11880           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
11881         null.
11882
11883 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
11884
11885         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
11886         the correct value.
11887
11888 2005-11-15  Martin Baulig  <martin@ximian.com>
11889
11890         * object.c (set_value): Use mono_class_from_mono_type() instead of
11891         the hack for generic instances; fixes #76136.
11892
11893 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
11894
11895         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
11896         fields.
11897
11898         * image.c (load_metadata_ptrs): Initialize the new fields.
11899
11900         * reflection.c (create_dynamic_mono_image): Ditto.
11901
11902         * reflection.c (build_compressed_metadata): Use the new fields.
11903
11904         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
11905         icall.
11906
11907         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
11908         icall.
11909         
11910 2005-11-15  Ankit Jain  <jankit@novell.com>
11911             Raja R Harinath  <harinath@gmail.com>
11912
11913         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
11914         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
11915         new per-generic_container cache if the cached MonoType's context matches
11916         the current context.
11917           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
11918         to the expected context.
11919           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
11920
11921 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11922
11923         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
11924         we changed the signature of an icall.
11925         * icall.c: Modify to mono_double_ParseImpl return true/false 
11926         depending on the success, instead of throwing the exception. This will
11927         help us in Double.TryParse methods.
11928         
11929 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
11930
11931         * marshal.c (emit_marshal_object): Throw an exception when
11932         marshalling 'object' instead of crashing. Fixes #76696.
11933
11934 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
11935
11936         * class-internals.h: Add prototype for mono_type_get_full_name ().
11937
11938 2005-11-11  Dick Porter  <dick@ximian.com>
11939
11940         * threads.c (mono_thread_manage): Make sure the main thread has
11941         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
11942
11943 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
11944
11945         * loader.c (mono_loader_set_error_type_load): Log a warning to the
11946         console about the missing type.
11947         (mono_loader_set_error_method_load): Ditto.
11948
11949 2005-11-09  Miguel de Icaza  <miguel@novell.com>
11950
11951         * mono-config.c (mono_get_config_dir): Set the system defaults if
11952         none is specified.
11953
11954         * assembly.c (mono_set_dirs): New API entry point to set the
11955         assembly and the config directory in one call
11956
11957 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
11958
11959         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
11960         the ftnptr was created from a delegate in a domain other than the
11961         current domain. Fixes #75377.
11962
11963         * exception.h exception.c: Add mono_get_exception_not_supported ().
11964
11965 2005-11-08  Martin Baulig  <martin@ximian.com>
11966
11967         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
11968
11969 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
11970
11971         * security-manager.h: Added definitions to deal with strongname key 
11972         pairs bigger (and smaller) than 1024 bits.
11973         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
11974         adjust wrt the public key length being used.
11975
11976 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
11977
11978         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
11979           Windows build (r51396-51397).
11980
11981 2005-11-03  Martin Baulig  <martin@ximian.com>
11982
11983         * class.c (mono_class_setup_vtable_general): Also add generic
11984         methods to the vtable; fixes #76581.
11985
11986 2005-11-01  Miguel de Icaza  <miguel@novell.com>
11987
11988         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
11989         sure that we lookup GetString method from the System.Text.Encoding
11990         class, not the derived class or we get an empty method.
11991
11992         Fixed class #76612.
11993
11994 2005-10-25  Miguel de Icaza  <miguel@novell.com>
11995
11996         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
11997         if it has been previously set (embedders). 
11998
11999         Make mono_set_rootdir available also on Unix.
12000
12001 005-10-24  Robert Jordan  <robertj@gmx.net>
12002
12003         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
12004
12005 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12006
12007         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
12008         only calls which are made to native code use this flag.
12009
12010         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
12011
12012 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12013
12014         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
12015         Add support for FieldBuilders.
12016
12017 2005-10-29  Martin Baulig  <martin@ximian.com>
12018
12019         * mono-debug.c
12020         (mono_debug_using_mono_debugger): New public method; returns
12021         whether we're running inside the debugger.
12022
12023 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
12024
12025         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
12026         for Method/Constructor/FieldBuilders.
12027
12028 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12029
12030         * reflection.c (module_add_cattrs): Save custom attributes for global methods
12031         and fields as well.
12032
12033 2005-10-26  Martin Baulig  <martin@ximian.com>
12034
12035         * mono-debug-debugger.c
12036         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
12037
12038 2005-10-24  Raja R Harinath  <harinath@gmail.com>
12039
12040         * icall.c (base64_to_byte_array): Don't pass an out-of-range
12041         integer to isspace.
12042
12043 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
12044
12045         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
12046         when passing valuetypes byref. Fixes #76502.
12047
12048 2005-10-19  Jackson Harper  <jackson@ximian.com>
12049
12050         * profiler.c: Don't put a . in front of types that are not in a
12051         namespace.
12052
12053 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
12054
12055         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
12056
12057 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
12058
12059         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
12060         #76436.
12061         (mono_marshal_get_ldflda_wrapper): Fix a warning.
12062
12063 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12064
12065         * assembly.c metadata-internals.h icall.c: Define an additional
12066         parameter for mono_assembly_name_parse_full, so we can avoid creating
12067         S.R.AssemblyName.Version when no version info wasn't passed.
12068         
12069 2005-10-09  Miguel de Icaza  <miguel@novell.com>
12070
12071         * class.c (mono_type_get_full_name): Reimplement method that was
12072         removed. 
12073
12074         * image.c: Some docs
12075
12076 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
12077
12078         * profiler.c (output_newobj_profile): Fix printing of Total memory
12079         on x86.
12080
12081 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12082
12083         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
12084
12085 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
12086
12087         * threads.c: remove debug output.
12088
12089 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12090
12091         * threads.c (mono_thread_manage): Fix crashes if more than 64
12092         threads need to be aborted. Hopefully fixes #75899.
12093
12094         * assembly.c (mono_stringify_assembly_name): New helper function.
12095
12096         * class.c: Use mono_stringify_assembly_name instead of the similar
12097         static function.
12098
12099         * assembly.h assembly.c: Add support for calling a postload search 
12100         hook if an assembly cannot be loaded.
12101
12102         * appdomain.c: Register new search hooks which call the AssemblyResolve
12103         events in AppDomain. Fixes #75231
12104
12105 2005-10-07  Martin Baulig  <martin@ximian.com>
12106
12107         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
12108         methods without debug info.
12109
12110 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
12111
12112         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
12113         wrappers.
12114
12115 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12116
12117         * file-io.c: now that we return symlinks, use lstat and, when the file
12118         is a symbolic link, stat, to get the file attributes. Also avoid the
12119         conversion to/from utf16/external.
12120
12121 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
12122
12123         * class.c (mono_class_layout_fields): Compute klass->has_references
12124         correctly if an embedded valuetype is not yet initialized. Fixes
12125         #76331.
12126
12127 2005-10-04  Martin Baulig  <martin@ximian.com>
12128
12129         * metadata.c
12130         (mono_metadata_load_generic_param_constraints): New public
12131         function; splitted the constraints loading out from
12132         mono_metadata_load_generic_params().
12133
12134         * class.c (mono_class_create_from_typedef): Call
12135         mono_metadata_load_generic_param_constraints() after setting up
12136         the type and creating our parent; fixes #75329.
12137
12138 2005-10-04  Martin Baulig  <martin@ximian.com>
12139
12140         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
12141         non-dynamic parent classes.
12142
12143 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
12144
12145         * file-io.c : win32 build fix (ETXTBSY seems not found).
12146
12147 2005-10-04  Martin Baulig  <martin@ximian.com>
12148
12149         * reflection.c
12150         (mono_image_get_methodspec_token): Make the cache actually work;
12151         fixes #75974.
12152
12153 2005-10-04  Martin Baulig  <martin@ximian.com>
12154
12155         * class.c (mono_class_name_from_token): Removed the unneccessary
12156         `MonoGenericContext *' argument.
12157
12158 2005-10-04  Martin Baulig  <martin@ximian.com>
12159
12160         * loader.c
12161         (method_from_methodspec): Make the caching work again; fixes the
12162         performance regression from #76262.
12163
12164 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12165
12166         * file-io.c:
12167         * file-io.h:
12168         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
12169         GetFileSystemEntries that performs the same work but without going
12170         into io-layer, locking, etc.
12171
12172 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
12173
12174         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
12175         ThreadState_Stopped as well. Fixes #76047.
12176
12177 2005-09-29  Martin Baulig  <martin@ximian.com>
12178
12179         * class.c
12180         (inflate_generic_context): If the new context has a `gmethod', set
12181         its `container' that that gmethod's `container'.
12182
12183         * metadata.c
12184         (mono_metadata_parse_generic_param): Simplify things;
12185         `generic_container = generic_context->container;' is just fine.
12186
12187         * loader.c (method_from_methodspec): Code cleanups.
12188
12189 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
12190
12191         * decimal.c: fix warning (and let gcc generate correct
12192         code on ARM with optimizations).
12193
12194 2005-09-28  Martin Baulig  <martin@ximian.com>
12195
12196         * loader.c
12197         (method_from_memberref): Added `MonoGenericContext *class_context'
12198         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
12199         (method_from_methodspec): If we're a memberref, use the enclosing
12200         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
12201
12202 2005-09-28  Martin Baulig  <martin@ximian.com>
12203
12204         * object.c (mono_runtime_invoke_array): Added support for
12205         MONO_TYPE_GENERICINST; fixes #75917.
12206
12207 2005-09-27  Martin Baulig  <martin@ximian.com>
12208
12209         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
12210         `k->byval_arg.type' to determine the actual type.
12211
12212         * loader.c (method_from_methodspec): Removed some hacks.
12213
12214 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
12215
12216         * class-internals.h (mono_field_is_deleted): Do the test for
12217         rtspecialname before we check the actual name of the field. This
12218         prevents us from dereferencing a pointer into the string table,
12219         saving us from accessing a few pages
12220
12221         * *.c: Replace the use of {Enter,Leave}CriticalSection with
12222         macros. This will allow a deadlock debugger to easily be plugged
12223         in.
12224
12225 2005-09-27  Martin Baulig  <martin@ximian.com>
12226
12227         * loader.c (method_from_methodspec): Create a "signature"
12228         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
12229
12230 2005-09-27  Martin Baulig  <martin@ximian.com>
12231
12232         * class.c
12233         (inflate_generic_class): Correctly set the new context's
12234         container.
12235
12236         * loader.c
12237         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
12238         instead of a `MonoGenericContext *'.
12239         (mono_method_signature_full): Take a `MonoGenericContainer *'
12240         instead of a `MonoGenericContext *'.
12241
12242         * metadata.c
12243         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
12244         instead of a `MonoGenericContext *'.
12245         (mono_metadata_parse_method_signature_full): Likewise.
12246
12247 2005-09-26  Martin Baulig  <martin@ximian.com>
12248
12249         * class.c
12250         (mono_class_from_generic_parameter): Set `klass->generic_container'
12251         (mono_class_from_generic_parameter): Likewise.
12252         (mono_bounded_array_class_get): We inherit the generic container
12253         from the element class.
12254
12255         * loader.c
12256         (find_method, find_method_in_class): Take a `MonoGenericContext *'
12257         argument rather than computing it here.
12258         (method_from_memberref): Correctly set the generic context before
12259         parsing the signature.  Fixes #75681.
12260
12261 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * object.c (mono_class_has_special_static_fields): Fix warnings.
12264
12265 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12266
12267         * assembly.c: Add parse_public_key function, to
12268         par the public keys. Also added mono_assembly_name_parse_full,
12269         to define it the parsed key should be freed or not.
12270         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
12271         to parse a long format assembly name.
12272         * metadata-internals.h: Keep mono_assembly_name_parse_full as
12273         private, since calling it to preserve the key requires
12274         freeing it manually.
12275         
12276 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
12277
12278         * locales.c : removed HAVE_ICU part.
12279
12280 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12281
12282         * object.c (mono_class_create_runtime_vtable): Avoid calling 
12283         field_is_special_static if the klass has no special static fields.
12284
12285         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
12286         (MonoCachedClassInfo): Likewise.
12287
12288         * object.c (mono_class_has_special_static_fields): New helper function.
12289
12290 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12291
12292         * class.c (mono_class_create_from_typedef): Don't call 
12293         interfaces_from_typedef_full for enums.
12294         (mono_class_create_from_typedef): Compute the base types of enums directly
12295         without calling mono_class_setup_fields ().
12296         (mono_class_find_enum_basetype): New helper function.
12297
12298         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
12299         one place inside the string heap.
12300         
12301 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
12302
12303         * class.c: locking fixes, code cleanups, some docs added.
12304         Allocate some data structures in the image mempool.
12305
12306 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12307
12308         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
12309         the example code.
12310         
12311 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
12312
12313         * class-internals.h, class.c, reflection.c: reduce memory taken by
12314         MonoClass.
12315
12316 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
12317
12318         * metadata.c, metadata.h, loader.h: documentation updates, code and
12319         API cleanups.
12320
12321 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12322
12323         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
12324         the example code.
12325
12326         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
12327         page faults caused by the runtime while reading metadata.
12328
12329 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12330
12331         * socket-io.c: the field names were changed 3 months ago and no one
12332         realized until bug #76077 got filed!
12333
12334 2005-09-20  Martin Baulig  <martin@ximian.com>
12335
12336         * icall.c (assembly_icalls): Removed some unused debugger icalls.
12337
12338 2005-09-20  Martin Baulig  <martin@ximian.com>
12339
12340         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
12341         write the rank into the class entry.
12342
12343 2005-09-20  Martin Baulig  <martin@ximian.com>
12344
12345         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
12346
12347 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
12348
12349         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12350
12351         * icall.c (custom_attrs_defined_internal): New icall.
12352
12353         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
12354         function.
12355         (mono_custom_attrs_construct_by_type): New helper function.
12356
12357 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
12358
12359         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
12360         terminate the resulting string. Fixes #76123.
12361
12362 2005-09-16  Martin Baulig  <martin@ximian.com>
12363
12364         * mono-debug.c
12365         (mono_debug_add_method): Ignore inflated methods for the moment.
12366
12367 2005-09-14  Martin Baulig  <martin@ximian.com>
12368
12369         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
12370
12371 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
12372
12373         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
12374         return a success/failure indication.
12375         (mono_metadata_interfaces_from_typedef_full): Ditto.
12376         (get_constraints): Ditto.
12377
12378 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
12379
12380         * marshal.c (emit_marshal_array): Fix handling of null arrays.
12381         
12382         * marshal.c (emit_marshal_array): Add support for returning string
12383         arrays from delegates. Fixes #76063.
12384
12385         * marshal.c: Use the emit_ldloc/stloc macros where possible.
12386
12387 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
12388
12389         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
12390         icall.
12391
12392 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
12393
12394         * reflection.c icall.c: Fix after mono_get_exception_type_load
12395         signature change.
12396
12397         * assembly.c (mono_assembly_get_assemblyref): New helper function.
12398         (mono_assembly_load_reference): Use the new helper.
12399
12400         * class-internals.h (MonoLoaderError): New structure containing 
12401         information about type loading errors.
12402
12403         * class-internals.h loader.c: Add APIs to store per-thread loader
12404         error information.
12405
12406         * loader.c class.c: Set the loader error if needed.
12407
12408         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
12409
12410 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
12411
12412         * decimal.c: fixed to handle the broken ARM fp format.
12413
12414 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
12415
12416         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
12417         broken.
12418
12419 2005-09-06  Martin Baulig  <martin@ximian.com>
12420
12421         * domain.c (supported_runtimes): Added v2.0.50727.
12422
12423 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
12424
12425         * culture-info.h: reduce the size of some structures.
12426
12427 2005-09-05  Martin Baulig  <martin@ximian.com>
12428
12429         Reflect latest API changes in the August CTP.
12430
12431         * icall.c
12432         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
12433         ("MonoType.HasGenericArguments"): Removed.
12434         ("MonoMethod.BindGenericParameters"): Renamed to
12435         "MakeGenericMethod".
12436         ("MethodBuilder.BindGenericParameters"): Renamed to
12437         "MakeGenericMethod".    
12438
12439 2005-09-05  Martin Baulig  <martin@ximian.com>
12440
12441         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
12442
12443 2005-09-05  Martin Baulig  <martin@ximian.com>
12444
12445         Applying a patch from Michal Moskal <malekith@nemerle.org>.
12446
12447         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
12448         generic_container is non-NULL.
12449
12450 2005-09-05  Martin Baulig  <martin@ximian.com>
12451
12452         Applying a patch from Michal Moskal <malekith@nemerle.org>.
12453
12454         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
12455
12456 2005-08-29  Michal Moskal  <malekith@nemerle.org>
12457
12458         * reflection.c (encode_locals,
12459         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
12460         for large generic types.
12461
12462 2005-09-05  Martin Baulig  <martin@ximian.com>
12463
12464         Applying a patch from Michal Moskal <malekith@nemerle.org>.
12465
12466         * class.c (mono_dup_array_type): New public method.
12467         (mono_metadata_signature_deep_dup): New public method.
12468         (dup_type): Correctly duplicate array and function types.
12469
12470 2005-09-05  Martin Baulig  <martin@ximian.com>
12471
12472         Applying a patch from Michal Moskal <malekith@nemerle.org>.
12473
12474         * reflection.c (get_default_param_value_blobs): Handle generic types
12475         and generic methods.
12476
12477 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
12478
12479         * class.c: Fixed error reporting (method/class were inversed) for 
12480         inheritance demands.
12481         * security-manager.c|h: Added the AppDomain when calling the managed
12482         System.Security.SecurityManager.InheritanceDemand method.
12483
12484 2005-09-01  Raja R Harinath  <rharinath@novell.com>
12485
12486         * reflection.c (encode_marshal_blob): 'marshaltype' and
12487         'marshaltyperef' are alternate sources for the custom marshaler
12488         name.
12489
12490 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
12491
12492         * class.c: fix creation of array classes with rank == 1
12493         (patch by Ankit Jain <jankit@novell.com>).
12494
12495 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
12496
12497         * object.c: fix check for creating the bound data for arrays vs
12498         szarrays.
12499
12500 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12501
12502         * object.c: configuration file name is now based on the executable name,
12503         not the image name. Fixes bug #75931.
12504
12505 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
12506
12507         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
12508         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
12509
12510 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
12511
12512         * rand.c: Use wincrypt.h instead of WinCrypt.h.
12513
12514 2005-08-24  Ankit Jain  <jankit@novell.com>
12515             Raja R Harinath  <rharinath@novell.com>
12516
12517         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
12518           called by it recursively.
12519           (mono_class_init): Remove special case in pending_init handling, since it's
12520           superseded by the fix to mono_class_from_typeref.
12521
12522 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
12523
12524         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
12525         BROKEN_THREAD_START stuff.
12526
12527 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
12528
12529         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
12530         trampoline.
12531
12532         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
12533         
12534         * object.c (mono_delegate_ctor): Replace the original function address with
12535         a delegate trampoline.
12536
12537 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
12538
12539         * icall.c: add boolean argument to base64_to_byte_array and 
12540         InternalFromBase64String to control whether a whitespace-only string
12541         is allowed (or should casue a FormatException to be thrown). We need
12542         this as the behavior has changed between MS.NET 1.x and 2.0, and we
12543         to match the MS behaviour in both profiles.
12544         * appdomain.c: Bump corlib version.
12545
12546 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12547
12548         This patch implements a big portion of publisher policy
12549         support, used to bind assembly versions and redirect
12550         one assembly from version A to version B.
12551
12552         * assembly.c:
12553         New GSList loaded_assembly_bindings, for storing the cached
12554         assembly bindings.
12555         (assembly_binding_maps_name): New static function for checking if a 
12556         assembly binding information maps an assembly name.
12557         (mono_assembly_binding_info_free): New function for freeing
12558         assembly binding information resources.
12559         (get_publisher_policy_info): New static function for retrieving 
12560         assembly binding information from a MonoImage.
12561         (compare_versions): New static function for comparing an assembly
12562         binding information data and the version of an assembly name.
12563         (check_policy_versions): New static function for checking if an
12564         assembly binding info mapping an assembly name is valid for it.
12565         (mono_assembly_load_publisher_policy): New static function for
12566         loading the 'policy.major.minor.MyAssembly' image for an assembly
12567         with an assembly name 'aname'.
12568         (mono_assembly_bind_version): New static function for updating
12569         assembly redirection.
12570         (mono_assembly_apply_binding): New static function for applying
12571         assembly binding.
12572         (search_binding_loaded): New static function for searching 
12573         loaded assembly binding infos in the cache domain.
12574         (mono_assembly_load_full): Don't apply assembly binding for
12575         reflection only assemblies.
12576
12577         * metadata-internals.h: Add MonoAssemblyBindingInfo,
12578         which contains information about assembly binding. Also
12579         declare signature for mono_config_parse_publisher_policy ()
12580         function, used to retrieve pub policy info.
12581         
12582         * mono-config.c:
12583         (publisher_policy_start): New static function used to parse publisher 
12584         policy config files.
12585         (publisher_policy_parser): New static MonoParseHandler containing 
12586         the functions used when parsing config files.
12587         (mono_config_parse_publisher_policy): New function for parsing
12588         publisher policy files.
12589         
12590 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
12591
12592         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
12593
12594         * marshal.c (mono_delegate_free_ftnptr): Ditto.
12595
12596         * object.c (mono_get_addr_from_ftnptr): New helper function.
12597
12598         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
12599
12600         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12601
12602 2005-08-19  Dick Porter  <dick@ximian.com>
12603
12604         * threads.c, threads.h, appdomain.c, appdomain.h,
12605         profiler-private.h, monitor.c, object.c, object-internals.h,
12606         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
12607         store the thread ID, so it can hold a 64 bit value if needed.
12608
12609 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
12610
12611         * reflection.c (mono_reflection_create_dynamic_method): Store the
12612         handle class into the method references as well so ldtoken works in
12613         dynamic methods.
12614
12615         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
12616         types.
12617
12618 2005-08-19  Ankit Jain <jankit@novell.com>
12619
12620         Fix #75847.
12621         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
12622           here rather than using the method signature of a arbitrary function
12623           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
12624           two arguments.
12625           Hack done with Harinath.
12626
12627 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12628
12629         * threadpool.c: disable printing stack traces when we get a exception
12630         in a threadpool thread. I need to do more testing to figure out which
12631         cases actually print this. Fixes bug #75828.
12632
12633 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12634
12635         * icall.c: there might be ignored whitespace after the last '='. This
12636         fixes length computation and bug #75840.
12637
12638 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
12639
12640         * assembly.c (mono_assembly_load_full): Consider .exe extension as
12641         well. Fixes #75809.
12642
12643         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
12644         #75784.
12645         
12646         * reflection.c (create_custom_attr_data): Ditto.
12647
12648 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
12649
12650         * locales.c, culture-info.h : removed RegionLCIDMap.
12651         * culture-info-tables.h : regenerated.
12652
12653 2005-08-16  Martin Baulig  <martin@ximian.com>
12654
12655         * class.c (mono_type_get_name_recurse): Small fix.
12656
12657 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
12658
12659         * locales.c : indentation fixie.
12660
12661 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
12662
12663         * object-internals.h,
12664           locales.h,
12665           locales.c,
12666           culture-info.h,
12667           icall.c : added RegionInfo table support.
12668         * culture-info-table.h : regenerated for region support.
12669
12670 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
12671
12672         * reflection.c (resolve_object): handle all kinds of MonoMethod
12673         including generic ones
12674
12675 2005-08-12  Ankit Jain <jankit@novell.com>
12676
12677         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
12678           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
12679
12680 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
12681
12682         * process.c: Don't close a thread handle when it's NULL. This is a
12683         workaround for bug #75733.
12684
12685 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
12686
12687         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
12688
12689 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
12690
12691         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
12692
12693 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12694
12695         * threadpool.c: if a work item in the thread pool has a callback that
12696         catches a exception, don't propagate it after invoking the callback.
12697         Fixes bug #75336.
12698
12699 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
12700
12701         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
12702
12703         * class-internals.h (MonoCachedClassInfo): Add some new fields.
12704
12705         * class.c (mono_class_init): Load field info lazily in the AOT case.    
12706
12707         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
12708
12709 2005-08-03  Ankit Jain  <jankit@novell.com>
12710
12711         Fix #75683.
12712         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
12713           PInvoke calling convention is 0.
12714
12715 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
12716
12717         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
12718         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
12719
12720 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
12721
12722         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
12723         to handle threads not started by the GC (patch by Michael Meeks
12724         <michael.meeks@novell.com>).
12725
12726 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
12727
12728         * reflection.c: Make buffer used in emitting types larger for some
12729         big generic types (patch by Michal Moskal).
12730
12731 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
12732
12733         * mono-debug.c: Fix some (not all) alignment problems.
12734
12735 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12736
12737         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
12738         Invoke mono_image_load_from_data_full passing the refonly
12739         parameter.
12740
12741         * assembly.c
12742         (mono_assembly_open_from_bundle): Add the refonly argument, 
12743         in order to pass it to other methods it calls to.
12744         (do_mono_assembly_open): Add the refonly argument, in order 
12745         to pass it to other methods it calls to.
12746         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
12747         the refonly parameter to it.
12748
12749         * image.c: Add loaded_images_refonly_hash and
12750         loaded_images_refonly_guid_hash to cache the reflection
12751         only loaded images.
12752         (mono_images_init): Initialize the hash tables used for
12753         caching the reflection only images.
12754         (load_modules): Invoke mono_image_open_full passing the refonly
12755         parameter to load the modules the correct way.
12756         (build_guid_table): Add the refonly argument, to re-build the 
12757         correct hash table.
12758         (do_mono_image_open): Added the refonly argument, in order to
12759         define it for the loaded image.
12760         (mono_image_loaded_full): New function, which receives an
12761         additional parameter to look for the image in the refonly or
12762         non-refonly section.
12763         (mono_image_loaded): Updated, using mono_image_loaded_full.
12764         (mono_image_loaded_by_guid_full): The same case that happens
12765         with mono_image_loaded_full.
12766         (mono_image_loaded_by_guid): Likewise.
12767         (register_image): Use the ref_only variable inside MonoImage
12768         to decide in which hash table store the current image.
12769         (mono_image_open_from_data_full): Rename
12770         mono_image_open_from_data to mono_image_open_from_data_full,
12771         adding the refonly argument, to define the ref_only variable 
12772         inside MonoImage.
12773         (mono_image_open_from_data): Return 
12774         mono_image_open_from_data_full.
12775         (mono_image_open_full): Rename mono_image_open to
12776         mono_image_open_full, receiving the new refonly argument,
12777         to pass it to inner methods.
12778         (mono_pe_file_open): Update this function, to open
12779         a MonoImage as a non-refonly image.
12780         (mono_image_close): Use the refonly variable inside
12781         MonoImage to remove the image from the correct caches.
12782
12783         * image.h: Add the signatures of mono_image_open_full,
12784         mono_image_open_from_data_full, mono_image_loaded_full,
12785         mono_image_loaded_by_guid_full.
12786
12787         * metadata-internals.h: Add the ref_only field to 
12788         MonoImage.
12789         
12790 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12791
12792         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
12793         Fix the last behavior, which used to load the assemblies and
12794         extract MonoReflectionAssemblyName information, instead of
12795         extract it from the metadata tables. Needed for Reflection
12796         Only assemblies.
12797         
12798 2005-07-29  Martin Baulig  <martin@ximian.com>
12799
12800         * mono-debug-debugger.c
12801         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
12802         not initialized.
12803
12804         * mono-debug.c
12805         (mono_debug_address_from_il_offset): Check whether we have
12806         debugging support before attempting to take the lock.
12807         (mono_debug_source_location_from_address): Likewise.
12808         (mono_debug_source_location_from_il_offset): Likewise.
12809         (mono_debug_il_offset_from_address): Likewise.
12810         (mono_debug_address_from_il_offset): Likewise.
12811
12812 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
12813
12814         * class.c (mono_class_from_name_case): Add support for dynamic images.
12815         Fixes #75650.
12816
12817         * object.c (mono_class_compute_gc_descriptor): Add a workaround
12818         for #75479.
12819
12820 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
12821         
12822         * reflection.c (mono_method_get_object): Fix warning.
12823
12824 2005-07-28  Martin Baulig  <martin@ximian.com>
12825
12826         * mono-debug.c
12827         (mono_debug_add_wrapper): Also write the wrapper type.
12828
12829 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
12830
12831         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
12832         
12833         * class.c (mono_class_init): Avoid reading nested classes if the AOT
12834         data indicates the class has none.
12835
12836 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
12837
12838         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
12839         loader lock with the debugger lock. Prevents deadlocks for beagle.
12840
12841         Beagle can now run on an smp box for a weekend without any
12842         issues. Woohoo!
12843
12844 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
12845
12846         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
12847         in a module. Fixes #75629.
12848
12849 2005-07-26  Martin Baulig  <martin@ximian.com>
12850
12851         * mono-debug.c (mono_debug_add_wrapper): New static method.
12852         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
12853         interncall or a wrapper.
12854
12855         * mono-debug.h (MonoDebugWrapperData): New public typedef.
12856         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
12857         (MONO_DEBUGGER_VERSION): Bump to 51.
12858
12859         * mono-debug-debugger.c
12860         (mono_debugger_add_type): Removed this empty function.
12861         (mono_debugger_add_method): Likewise.
12862
12863 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
12864
12865         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
12866         before accessing method->slot.
12867
12868 2005-07-21  Jb Evain  <jbevain@gmail.com>
12869
12870         * reflection.c (method_encode_clauses/class): Handle filters clauses.
12871         Fixes #75010.
12872
12873 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
12874
12875         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
12876         #75587.
12877
12878 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
12879
12880         * image.h image.c: Add mono_image_get_guid () API function.
12881
12882 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
12883
12884         There were issues when multiple threads tried to load
12885         assemblies. A deadlock was created between assemblies_mutex and
12886         mono_domain_assemblies_lock. This fixes the issue by making the
12887         assembly ref counting be lock free. See bug 75586.
12888         
12889         * image.c (mono_image_close): The add ref function here was using
12890         Interlocked operations while the unref was using a mutex and a
12891         --. I don't think this was ever a bug that would be exposed in a
12892         non-pendantic way (ie, by an embedder doing a ref on one thread
12893         and an unref on another), but for the sake of correctness, this is
12894         now Interlocked.
12895
12896         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
12897         (mono_assembly_load_reference): Call mono_assembly_addref rather
12898         than touching the refcount ourselves.
12899         (mono_assembly_close): Use InterlockedDecrement to unref the
12900         assembly. Don't acquire the lock unless it is actually needed.
12901
12902 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
12903
12904         * class.c (mono_class_layout_fields): Fix calculation of has_references
12905         for generic types.
12906
12907 2005-07-12  Martin Baulig  <martin@ximian.com>
12908
12909         Applying a patch from Michal Moskal <malekith@nemerle.org>.
12910
12911         * metadata.c
12912         (mono_type_hash): Provide better hashing for generic instances.
12913         (mono_generic_inst_hash): Improve hashing.
12914         (mono_generic_class_hash): Likewise.
12915
12916         * reflection.c (mymono_metadata_type_hash): Improve hashing for
12917         generic instances.
12918
12919 2005-07-12  Martin Baulig  <martin@ximian.com>
12920
12921         * reflection.c (mono_reflection_create_runtime_class): Remove the
12922         hack for generic type definitions and non-`Run' assemblies.
12923         (mono_reflection_bind_generic_parameters): Also use
12924         `klass->wastypebuilder' to check for TypeBuilders.
12925
12926 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
12927
12928         * class.c (mono_class_layout_fields): Fix calculation of has_references
12929         for generic types.
12930
12931         * class.c (inflate_generic_class): Fix a leak.
12932         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
12933         for generic types.
12934
12935 2005-07-11  Martin Baulig  <martin@ximian.com>
12936
12937         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
12938         on error.
12939
12940 2005-07-11  Martin Baulig  <martin@ximian.com>
12941
12942         * loader.c (find_method): Also lookup in
12943         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
12944
12945 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
12946
12947         * appdomain.c (mono_domain_unload): Don't free the error message
12948         before passing it to mono_get_exception_...
12949
12950         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
12951         
12952 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
12953
12954         * threads.c: try to better guess an available RT signal (bug #75387).
12955
12956 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
12957
12958         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
12959         and CACHE_OBJECT.
12960
12961 2005-07-07  Martin Baulig  <martin@ximian.com>
12962
12963         * class.c (mono_type_get_name_full): Return NULL for
12964         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
12965         fixes #75408.
12966
12967 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
12968
12969         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
12970         exit the appdomain as well being aborted.
12971
12972         * threadpool.c: Create all threadpool threads inside the root appdomain, and
12973         change back to the root domain after calling managed code. This enables
12974         appdomains using threadpools to be unloaded.
12975
12976 2005-07-07  Martin Baulig  <martin@ximian.com>
12977
12978         * class-internals.h
12979         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
12980         into `MonoDynamicGenericClass' since we only need it for dynamic
12981         types.
12982
12983         * reflection.c (mono_class_bind_generic_parameters): We don't need
12984         to compute the `parent' here.
12985
12986 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
12987
12988         * culture-info-table.h : regenerated.
12989
12990 2005-07-06  Martin Baulig  <martin@ximian.com>
12991
12992         * icall.c
12993         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
12994
12995         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
12996
12997 2005-07-06  Martin Baulig  <martin@ximian.com>
12998
12999         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
13000         we're doing a signature-only comparision; fixes #74945.
13001
13002 2005-07-06  Martin Baulig  <martin@ximian.com>
13003
13004         * class-internals.h (MonoGenericClass): Moved some things out into
13005         a new `MonoInflatedGenericClass' type.  
13006         (MonoInflatedGenericClass): New type; the `klass' of a
13007         `MonoGenericClass' is now computed lazyly in
13008         mono_get_inflated_generic_class().      
13009
13010         * class.c (mono_get_inflated_generic_class): New public function.
13011         (mono_class_inflate_generic_method): Removed the unused
13012         `MonoClass *' argument.
13013         (setup_generic_vtable): Don't call mono_get_inflated_method() on
13014         all the methods.
13015         (mono_class_create_generic): Make this static and merge it with
13016         mono_class_create_generic_2(); we're now called automatically from
13017         mono_get_inflated_generic_class().
13018
13019         * loader.c (mono_method_signature): Call
13020         mono_get_inflated_method() here.
13021
13022 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
13023
13024         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
13025         type of fields with RVA.
13026
13027         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
13028         for this pseudo class.
13029         (my_mono_class_from_generic_parameter): Likewise.
13030         (mono_class_init): Allow interfaces to have cctors.
13031
13032 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13033
13034         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
13035         lazily for AOT methods.
13036
13037 2005-07-05  Martin Baulig  <martin@ximian.com>
13038
13039         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
13040         returns FALSE for a successful match, not TRUE.
13041
13042 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13043
13044         * loader.c (mono_method_get_index): Optimize this a bit.
13045
13046 2005-07-04  Martin Baulig  <martin@ximian.com>
13047
13048         * class.c
13049         (class_compute_field_layout): Move the check for generic type
13050         definitions into mono_class_layout_fields().  Fixes #74684.
13051         (mono_class_from_generic_parameter): Correctly compute
13052         `klass->parent'; fixes #75457.
13053
13054         * reflection.c (register_assembly, register_module): Make sure
13055         `domain->rejobject_hash' is already created.
13056
13057 2005-07-02  Martin Baulig  <martin@ximian.com>
13058
13059         * class-internals.h
13060         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
13061         `MonoDynamicGenericClass'.      
13062
13063 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
13064
13065         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
13066         returned by a field getter is null, since null is a valid value.
13067
13068 2005-07-01  Martin Baulig  <martin@ximian.com>
13069
13070         * reflection.c (mono_reflection_generic_class_initialize): Update
13071         the `dgclass->fields [i].parent' to the correct class.
13072         (mono_image_get_fieldref_token): Use the declaring type, not the
13073         reflected type.
13074
13075 2005-07-01  Martin Baulig  <martin@ximian.com>
13076
13077         * loader.c (find_method): Also look in the interfaces; fixes #75429.
13078
13079 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
13080
13081         * threads.c (thread_cleanup): assert that thread != NULL
13082         (wait_for_tids_or_state_change): We were using the wrong variable
13083         when accessing wait->threads. `i' was always out of the bounds of
13084         the array.
13085
13086 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13087
13088         * loader.c: map user32 and kernel32 to libMonoSupportW
13089
13090 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13091
13092         * appdomain.c (unload_thread_main): Mark this as WINAPI.
13093
13094 2005-06-28  Martin Baulig  <martin@ximian.com>
13095
13096         * loader.c (method_from_methodspec): Fix #75334.
13097
13098 2005-06-28  Martin Baulig  <martin@ximian.com>
13099
13100         Fix #74953 - Arrays now implement the generic IList<T> interface
13101         on the 2.0 platform.
13102
13103         * class-internals.h (MonoDefaults): Added `generic_array_class'.
13104
13105         * reflection.c (mono_class_bind_generic_parameters): New public
13106         function; similar to mono_reflection_bind_generic_parameters(),
13107         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
13108
13109         * domain.c (mono_init_internal): Try to initialize.
13110         `mono_defaults.generic_array_class' here; this'll only succeed if
13111         we're using the 2.0 corlib.
13112
13113         * icall.c
13114         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
13115         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
13116         (mono_lookup_internal_call): Added support for nested classes.
13117
13118         * loader.c
13119         (mono_get_method_from_token): Set `result->signature->pinvoke' if
13120         we're an interncall and have generic arguments.
13121
13122         * class.c
13123         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
13124         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
13125         instance of System.Array.InternalArray<T> for arrays, so they
13126         implement the generic IList<T> interface.
13127
13128 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
13129
13130         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
13131         (chastamar@yahoo.com). Fixes #75374.    
13132
13133 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
13134
13135         * culture-info-table.h: regenerated.
13136
13137 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13138
13139         * icall.c: handle spaces correctly for base64 strings.
13140
13141 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13142
13143         * *.c: Kill some warnings.
13144
13145 2005-06-23  Duncan Mak  <duncan@novell.com>
13146
13147         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
13148         that this builds on Solaris 10 (x86).
13149
13150 2005-06-23  Martin Baulig  <martin@ximian.com>
13151
13152         * class.c
13153         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
13154         generic type definitions.
13155
13156 2005-06-23  Martin Baulig  <martin@ximian.com>
13157
13158         Fix #75331.
13159
13160         * metadata.c (mono_class_get_overrides): Renamed to
13161         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
13162         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
13163         pass it to mono_get_method_full().
13164
13165 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
13166
13167         * reflection.c (mono_reflection_create_runtime_class): take the
13168         mono_domain_lock in this method. Prevents deadlocks
13169
13170 2005-06-22  Martin Baulig  <martin@ximian.com>
13171
13172         * loader.c (method_from_methodspec): Fix #75330.
13173
13174 2005-06-22  Martin Baulig  <martin@ximian.com>
13175
13176         * reflection.c (type_get_qualified_name): Use
13177         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
13178         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
13179         argument; use it if we don't have an assembly name.
13180
13181 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
13182
13183         * object.c: In mono_message_init, set "copy out" flag for in
13184         parameters with the [Out] flag.
13185
13186 2005-06-21  Martin Baulig  <martin@ximian.com>
13187
13188         * class.c
13189         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
13190         and MONO_TYPE_PTR.
13191
13192 2005-06-21  Martin Baulig  <martin@ximian.com>
13193
13194         * class.c (mono_class_init): Don't initialize `class->fields' for
13195         generic instances since they're initialized again in
13196         compute_field_layout(). 
13197         (compute_field_layout): Set the field's `generic_info' here; fix
13198         #75320. 
13199
13200 2005-06-21  Martin Baulig  <martin@ximian.com>
13201
13202         * class-internals.h
13203         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
13204
13205         * metadata.c (mono_metadata_generic_method_equal): Also
13206         distinguish the `generic_class'; fixes #75334.
13207
13208 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13209
13210         * domain.c:
13211         * appdomain.c:
13212         * domain-internals.h:
13213         * reflection.c: 'domain_assemblies' field is now protected by its own
13214         lock. Don't call into managed code to run the AssemblyLoad event if we
13215         now there are no registered delegates for it.
13216
13217 2005-06-20  Martin Baulig  <martin@ximian.com>
13218
13219         * class.c (mono_class_is_assignable_from): Use a custom version of
13220         mono_class_has_parent() to make things work for generic instances;
13221         fix #75300.
13222
13223 2005-06-20  Martin Baulig  <martin@ximian.com>
13224
13225         * loader.c (method_from_methodspec): Apply a patch from
13226         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
13227
13228 2005-06-20  Martin Baulig  <martin@ximian.com>
13229
13230         * class.c (mono_class_init): Reverted Zoltan's last change; it
13231         breaks generics.
13232
13233 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13234
13235         * threads.c (wait_for_tids_or_state_change): Add missing locking.
13236
13237 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13238
13239         * socket-io.c: fix the index in the socket array for writable/error
13240         sockets. Fixes bug #75306.
13241
13242 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13243
13244         * class.c (mono_class_init): Allow interfaces to have static ctors.
13245
13246 2005-06-17  Martin Baulig  <martin@ximian.com>
13247
13248         * loader.c (method_from_methodspec): Use `context->container' when
13249         parsing the `gmethod->inst'.
13250
13251 2005-06-17  Martin Baulig  <martin@ximian.com>
13252
13253         * class.c (mono_type_get_name_recurse): Don't add the assembly
13254         name for type arguments.
13255
13256 2005-06-15  Martin Baulig  <martin@ximian.com>
13257
13258         * reflection.c (mono_image_get_inflated_method_token): Encode
13259         correct klass; fixes #75260.
13260
13261 2005-06-13 Michal Moskal <malekith@nemerle.org>
13262
13263         * icall.c: Make GetCorrespondingMethod/Constructor take
13264         MonoReflectionMethod method not MonoMethod. Removed
13265         MonoType.GetCorrespondingField, and make
13266         MonoGenericType.GetCorrespondingField take name not
13267         MonoClassField.
13268
13269 2005-06-13  Michal Moskal <malekith@nemerle.org>
13270
13271         * reflection.c (field_encode_signature, encode_locals):
13272          Make sizes of buffers for types larger (for big generic types).
13273          (create_generic_typespec,
13274          mono_reflection_sighelper_get_signature_local,
13275          mono_reflection_sighelper_get_signature_field):
13276          Add asserts for too small buffers.
13277
13278 2005-06-15  Martin Baulig  <martin@ximian.com>
13279
13280         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
13281         if our parent is not a dynamic type.
13282
13283 2005-06-15  Martin Baulig  <martin@ximian.com>
13284
13285         * class-internals.h (MonoTypeNameFormat): New enum.
13286
13287         * class.c
13288         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
13289         (mono_type_get_full_name): Removed.
13290         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
13291         argument instead of the boolean's.
13292
13293         * icall.c (ves_icall_System_MonoType_getFullName):
13294         Added `gboolean assembly_qualified'.    
13295
13296         * reflection.h
13297         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
13298
13299         * reflection.c (mono_reflection_parse_type): Parse the new type
13300         name format.
13301
13302 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13303
13304         * icall.c: no need to convert from utf16 to utf8 and then back again
13305         after the call to GetLogicalDrives.
13306
13307 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13308
13309         * icall.c: frombase64. Fix problems exposed by new tests.
13310
13311 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13312
13313         * icall.c: added internal calls for converting char [] and strings in
13314         base64 into byte [].
13315
13316 2005-06-10  Martin Baulig  <martin@ximian.com>
13317
13318         * class.c (mono_class_create_generic_2): Read the nested classes
13319         from the metadata rather than from `gklass->nested_classes' since
13320         `gklass' might not be initialized yet.
13321
13322 2005-06-09  Duncan Mak  <duncan@novell.com>
13323
13324         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
13325         all public headers. Fixes #74919.
13326
13327 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
13328
13329         * domain.c: The key for proxy_vtable_hash is now a pointer
13330         array. Added new GHashFunc and GCompareFunc functions for this.
13331
13332         * class.h: The list of interfaces in MonoRemoteClass is known in
13333         advance and can't grow (we create a new MonoRemoteClass if needed),
13334         so now the interface array can be allocated together with
13335         MonoRemoteClass.
13336         
13337         * object.c: Added a new method create_remote_class_key.
13338         Fixed mono_remote_class so it does not depend on
13339         mono_upgrade_remote_class.
13340         Removed extend_interface_array.
13341         Added new method clone_remote_class(), which makes a copy of a remote
13342         class and adds a new interface or class to it.
13343         mono_upgrade_remote_class() now creates a new remote class (or gets
13344         it from the cache) if an vtable upgrade is needed. In this way
13345         we make sure that other objects sharing the same remote class
13346         don't get the new vtable with unwanted interfaces.
13347         
13348         * object-internals.h:
13349         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
13350         
13351         * marshal.c: Track changes in mono_upgrade_remote_class().
13352
13353 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
13354         * icall.c: Add runtime methods for obtaining members of inflated
13355         class, which were created from supplied non-inflated members. It
13356         is used in internal Get{Method,Constructor,Field} methods in
13357         System.Type
13358
13359 2005-06-09  Martin Baulig  <martin@ximian.com>
13360
13361         * reflection.c
13362         (mono_reflection_bind_generic_method_parameters): Fix #75169.
13363
13364 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13365         * reflection.c (mono_image_basic_init): Define
13366         Version in MonoDynamicAssembly. 
13367         
13368 2005-06-08  Martin Baulig  <martin@ximian.com>
13369
13370         Fix #75136.
13371
13372         * loader.c
13373         (mono_method_signature_full): New public method; takes a
13374         `MonoGenericContext *'.
13375         (find_method): Use mono_method_signature_full() and pass the
13376         klass'es context to it.
13377
13378         * class.c (mono_class_is_inflated_method): Use
13379         mono_method_signature_full() and pass the context to it.
13380
13381 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
13382
13383         * object.c: add proper locking in mono_remote_class_vtable(),
13384         fixes possible memory corruption.
13385
13386 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
13387
13388         * marshal.c (mono_remoting_marshal_init): set
13389         initialized after initialization.
13390
13391 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
13392
13393         * locales.c : hush.
13394
13395 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
13396
13397         * object.c (extend_interface_array): fix really silly
13398         memory corrupting / comparison bug.
13399
13400 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13401
13402         * reflection.c: Functions added to support the creation
13403         of CustomAttributeData, which includes Attribute data
13404         used by ReflectionOnly methods.
13405
13406         * reflection.h:  mono_reflection_get_custom_attrs_data and
13407          mono_custom_attrs_data_construct added (functions exposed).
13408
13409          * icall.c: Added mono_reflection_get_custom_attrs_data
13410          as icall.
13411         
13412 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
13413
13414         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
13415         lupus's request.
13416
13417 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
13418
13419         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
13420
13421         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
13422         dynamic DllImportAttribute.
13423
13424         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
13425         dynamic DllImportAttribute.
13426
13427         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
13428         Fixes #75162.
13429
13430 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13431
13432         * threads.c: avoid segfault when an unstarted thread is aborted.
13433
13434 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
13435
13436         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
13437         Returns the name and version of the runtime for reporting.
13438
13439 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13440
13441         * appdomain.c: bump corlib version.
13442         * object-internals.h: new field in MonoReflectionAssembly.
13443
13444 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13445
13446         * object-internals.h: Carlos forgot to add this field.
13447
13448 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13449
13450         * icall.c: Added create_version to create instances
13451         of Version of MonoReflectionAssemblyName. This change helps
13452         the AssemblyName tests to keep running fine.
13453         
13454 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
13455   
13456         * object.c (mono_method_return_message_restore): A somehow less
13457         intrusive fix for #75138.
13458
13459 2005-06-03  Raja R Harinath  <rharinath@novell.com>
13460
13461         * object.c (mono_method_return_message_restore): Fix computation
13462         of expected number of out args.
13463
13464 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
13465
13466         * reflection.c (mono_image_get_method_info): Fix the case when the
13467         charset is empty.
13468
13469 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
13470
13471         * object.c: Added missing null check in
13472           mono_method_return_message_restore.
13473
13474 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
13475
13476         * reflection.c (mono_image_get_method_info): Handle the case when
13477         dllentry is empty.
13478
13479 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
13480
13481         * object.c: When creating the vtable for a proxy, take into account
13482         all inherited interfaces, not only the ones registered in
13483         iclass->interfaces. This fixs bug #74996.
13484         Also, in mono_method_return_message_restore, verify that the array
13485         of out args has the expected lengh.
13486
13487 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13488
13489         * socket-io.c: update the timeout in Poll when the call is interrupte.
13490
13491 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13492
13493         * socket-io.c: support abort/suspend in Select_internal after last
13494         change.
13495
13496 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13497
13498         * threadpool.c: remove warning.
13499
13500 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13501
13502         * icall.c:
13503         * socket-io.[ch]: Select_internal uses poll() now when available, thus
13504         removing the 1024 limit from select(). Runtime part of the fix for
13505         bug #71203.
13506
13507 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13508
13509         * socket-io.c: when resolving the addresses for the same
13510         host returned by gethostname(), get the local IPs from the interface
13511         list. Loopback addresses are discarded if the are interfaces up with
13512         non-loopback ones. Fixes bug #63265.
13513
13514 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
13515
13516         * appdomain.c, verify.c, object-internals.h, reflection.c:
13517         bumped corlib number to 36, and added new extra_flags field
13518         to ReflectionMethodBuilder and friends.  Fixes #75060.
13519
13520 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
13521
13522         * gc.c: register a new weak link only if the object is non-null
13523         (fixes bug#75047).
13524
13525 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
13526
13527         * culture-info.h : short time pattern too.
13528
13529 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
13530
13531         * culture-info.h : expand long time pattern string length.
13532
13533 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
13534
13535         * culture-info-table.h : update (more French date format; #72788).
13536
13537 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
13538
13539         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
13540         the method is static. Fixes #75029.
13541
13542 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
13543
13544         * reflection.c: Update the table_idx field of method builders after
13545         saving the module, since it can change. This is a workaround for
13546         bug #74914. 
13547
13548 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
13549
13550         * culture-info-table.h : update (additional French date format).
13551
13552 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
13553
13554         * icall.c (ves_icall_type_Equals): Revert last change.
13555         
13556         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
13557
13558         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
13559
13560 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
13561
13562         * class-internals.h: Added executioncontext_class field to 
13563         MonoDefaults structure.
13564         * domain.c: Cache System.Threading.ExecutionContext class in 
13565         mono_defaults.
13566         * object.c: Capture the ExecutionContext for asynchroneous calls in
13567          mono_async_result_new.
13568         * object-internals.h: Added execution_context and original_context 
13569         fields to MonoAsyncResult. Added execution_context to MonoThread.
13570         * security-manager.c|.h: Added mono_get_context_capture_method to 
13571         return the capture method (if required by the security manager or by
13572         the framework version used).
13573         * threadpool.c: Apply capture (if present) ExecutionContext in 
13574         mono_async_invoke and revert to original context after it completes.
13575
13576 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
13577
13578         * culture-info-table.h : updated (real hacky solution for zh-CHT).
13579
13580 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
13581
13582         * culture-info-table.h : zh-CHT related workaround.
13583
13584 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
13585
13586         * marshal.c (emit_marshal_custom): Add some error checking and call the
13587         methods in the ICustomMarshaler interface. Fixes #74875.
13588         
13589         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
13590         native->managed wrappers.
13591
13592 2005-05-12  Martin Baulig  <martin@ximian.com>
13593
13594         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
13595         here and use the loader lock.
13596
13597         * mono-debug.c: Properly lock when the debugger is not attached.
13598         (mono_debug_init): Release the initial lock if we're not running
13599         in the debugger.
13600
13601 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
13602
13603         * marshal.c (emit_marshal_custom): Pass through NULL values without
13604         calling the custom marshalling routines.
13605
13606         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
13607         conversion in structures. Fixes #74882.
13608
13609 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
13610
13611         * culture-info-table.h : zh-* cultures were missing.
13612
13613 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
13614
13615         * threads.c: Added a new event background_change_event which is signaled
13616         when a thread changes its background mode.
13617         Moved here several checks previously done in managed code. The checks
13618         require the thread lock, and using the thread lock in managed code
13619         can result in deadlocks.
13620         Merged Start_internal and Thread_internal into a single method. Now 
13621         Thread_internal does all work of creating and starting a thread.
13622         Added icalls for setting and getting the state of the object. Moved from
13623         managed code to avoid locking there.
13624         Added wait_for_tids_or_state_change() which is called instad of
13625         wait_for_tids when waiting for non-backround threads to end. This method
13626         will return if one of the threads ends or the background_change_event
13627         is signaled.
13628         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
13629         the background mode. This method signals the background_change_event
13630         event.
13631         * icall.c:
13632         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
13633         removed Start_internal.
13634         
13635 2005-05-11  Martin Baulig  <martin@ximian.com>
13636
13637         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
13638         to order of some fields to get proper alignment on 64-bit machines.
13639
13640 2005-05-11  Martin Baulig  <martin@ximian.com>
13641
13642         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
13643         changes as they're broken and completely fuck up the debugger.
13644
13645         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
13646
13647 2005-05-10  Martin Baulig  <martin@ximian.com>
13648
13649         * reflection.c (mono_reflection_generic_class_initialize): Don't
13650         call mono_class_setup_parent() here.
13651
13652 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13653
13654         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
13655         send/receive timeout use an integer in milliseconds. We were using a
13656         struct timeval.
13657
13658 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13659
13660         * locales.c:
13661         (internal_get_cultures): reserve the first slot of the array for the
13662         InvariantCulture, which will be filled in managed code.
13663
13664 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
13665
13666         * reflection.c (mono_image_fill_module_table): Initialize the
13667         GENERATION field as well.
13668
13669 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13670
13671         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
13672         Monitor.Enter on the object.
13673
13674 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
13675
13676         * threads.c: Enable the wait for running threads when exiting.
13677         * icall.c: Suspend all threads before exiting.
13678
13679 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
13680
13681         * assembly.c (mono_assembly_load_reference): Fix warning.
13682
13683 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13684
13685         * threadpool.c: changed the default number of threads per cpu. From now
13686         on, the default will be 20 + (5 * number of cpus) instead of 50.
13687
13688 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
13689
13690         * loader.c (mono_method_get_signature_full): Add locking here.
13691
13692 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
13693
13694         * appdomain.c: Moved methods for parsing and freeing assembly
13695         names to assembly.c.
13696         * assembly.c, domain-internals.h: Created public methods for parsing
13697         assembly names. Fixed mono_assembly_load_with_partial_name:
13698         it now finds the best match, taking into account the version,
13699         token and culture specified in the partial name. Also return
13700         the latest version if no version information is specified.
13701
13702 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
13703
13704         * threadpool.c: replace check for SocketAsyncCall class.
13705
13706 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13707
13708         * threadpool-internals.h:
13709         * Makefile.am: added threadpool-internals.h
13710
13711         * threadpool.c: call mono_unhandled_exception on exceptions not handled
13712         that happen in threadpool threads (tested on MS).
13713         (mono_thread_pool_remove_socket): new function that dispatch any pending
13714         AIO call on a socket that is closing. By now only epoll really needs it,
13715         as select/poll wake up when the socket closes.
13716
13717
13718         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
13719
13720 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
13721
13722         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
13723
13724 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
13725
13726         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
13727
13728 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
13729
13730         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
13731         has an abort request, convert it into a suspend request.
13732
13733 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
13734
13735         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
13736         warning for the usage of `UnmanagedFunctionPointerAttribute' which
13737         is not supported yet.
13738
13739 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13740
13741         * image.c: register assemblies loaded from data (bundles) in the loaded
13742         assemblies hash. Fixes bug #74772.
13743
13744 2005-04-29  Martin Baulig  <martin@ximian.com>
13745
13746         * class.c (mono_type_get_name_recurse): Update to the new naming
13747         schema from the latest .NET 2.x beta2.
13748         (mono_class_setup_vtable_general): If we're a generic instance,
13749         copy the vtable from our generic type definition and inflate all
13750         the methods in it.
13751
13752         * loader.c (find_method): Update to the new naming schema from the
13753         latest .NET 2.x beta2.
13754
13755 2005-04-29  Raja R Harinath  <harinath@gmail.com>
13756
13757         * class.c (mono_class_init): Add a mono_loader_unlock to the
13758         #74734 fix.
13759
13760 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
13761
13762         * icall.c (ves_icall_System_Environment_Exit): Remove the 
13763         suspend_all_other_threads () call for the time being, since it can hang.
13764
13765         * threads.c (mono_thread_manage): Similarly, disable the waiting for
13766         the background threads to exit, since it can also hang.
13767
13768         * class.c (mono_class_init): Applied patch from Ankit Jain 
13769         (radical@gmail.com). Avoid pending init errors when a field refers
13770         to a nested class using a typeref. Fixes #74734.
13771
13772         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
13773         this for dynamic modules.
13774
13775 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13776
13777         * threads.c: don't wait for threads that are in the process of aborting
13778         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
13779         and waiting for background threads to finish. This makes xsp and
13780         mod-mono-server exit without random length delays and/or hangs.
13781
13782 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13783
13784         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
13785
13786 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
13787
13788         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
13789         dynamic types to prevent infinite loops. Fixes #74727.
13790
13791         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
13792         ..._is_assignable_to.
13793
13794 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
13795
13796         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
13797
13798 2005-04-25  Martin Baulig  <martin@ximian.com>
13799
13800         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
13801
13802         * domain.c
13803         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
13804
13805         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
13806
13807         * reflection.c (build_compressed_metadata): Set metadata header
13808         version to 2.0.
13809
13810 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
13811
13812         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
13813         number into an integral and a decimal part. Fixes #70473.
13814
13815         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
13816
13817 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
13818
13819         * culture-info-table.h : reflected the latest locale-builder output.
13820
13821 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13822
13823         * threadpool.c: check for SuspendRequested too when deciding if
13824         mono_thread_interruption_checkpoint should be called.
13825
13826 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13827
13828         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
13829         * threads.c: remove interruption_mutex and use Interlocked instead. When
13830         suspending all the threads, wait for all the suspended events at once.
13831         If we're shutting down and get an APC that is going to be queued,
13832         call mono_thread_execute_interruption immediately, as the thread might
13833         be sleeping on a pthread condition or mutex.
13834
13835         * icall.c: call mono_runtime_set_shutting_down before suspending the
13836         threads.
13837
13838         Fixes bug #74693. And now xsp is happier when exiting.
13839
13840 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
13841
13842         * loader.c (mono_stack_walk): Fix #74690.
13843
13844 2005-04-22  Martin Baulig  <martin@ximian.com>
13845
13846         * mono-debug.h (MonoDebugMethodJitInfo): Added
13847         `MonoDebugMethodJitInfo *jit'.
13848
13849         * mono-debug.c (mono_debug_read_method): Cache the
13850         MonoDebugMethodJitInfo in `address->jit'.
13851         (mono_debug_free_method_jit_info): New public method.
13852
13853 2005-04-22  Martin Baulig  <martin@ximian.com>
13854
13855         * class.c (mono_class_is_assignable_from): Disallow
13856         type parameter -> interface.
13857
13858 2005-04-21  Dick Porter  <dick@ximian.com>
13859
13860         * threads.c (mono_thread_create): Turn an assertion into an error.
13861
13862 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
13863
13864         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
13865         
13866         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
13867         Fix some gcc 4.0 warnings.
13868
13869 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
13870
13871         * file-io.c: fix alt dir separator char on unix systems
13872         and cleanup (fixes bug #71214).
13873
13874 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
13875
13876         * marshal.c: Use CALLVIRT instead of CALL when dispatching
13877         a call to a remote domain, since the method may be an
13878         interface method in the client domain. This fixes bug #74192.
13879
13880 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13881
13882         * threadpool.c: recv/send are now performed before going back to managed
13883         code to save one transition.
13884
13885 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13886
13887         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
13888
13889         * metadata/threadpool.c: removed hack to workaround the bug above.
13890
13891         Fixes bug #74618.
13892
13893 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
13894
13895         * reflection.c reflection.h: Fix handling of parameter defaults in
13896         dynamic methods. Also fixes handling of parameter attributes.
13897         Fixes #74609.
13898
13899         * mono-debug.c (mono_debug_close_image): Fix warning.
13900
13901 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13902
13903         * socket-io.h: replaced old unused field with new 'blocking'.
13904         * threadpool.c: restore socket blocking state on windows(tm).
13905
13906 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
13907
13908         * icall.c: don't return the codebase in the AssemblyName[] returned by
13909         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
13910         * object-internals.h: Removed FIXME (fields were presents) and fixed
13911         versioncompat declaration.
13912
13913 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13914
13915         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
13916         not closed, so don't cleanup when it happens.
13917
13918 2005-04-13  Chris Toshok  <toshok@ximian.com>
13919
13920         * mono-debug-debugger.h: change prototype for
13921         mono_debugger_lookup_type.
13922
13923         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
13924         this function, although it should probably be named
13925         mono_debugger_init_type.
13926
13927 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13928
13929         * threadpool.c: fix non-AIO case.
13930
13931 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
13932
13933         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
13934         the built-in profiler to measure just JIT compilation times.
13935
13936 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13937
13938         * threadpool.c: the epollfd might be closed by another thread at
13939         any time, so ignore EBADF at treat it as a "we're closing" sign.
13940
13941 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13942
13943         * threadpool.c: release the semaphores with a count equals to the number
13944         of working threads in both IO and regular pools. Fixed typo that messed
13945         up the count of IO pool threads. Don't initialize the pipe handles if
13946         we're using epoll.
13947
13948 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13949
13950         * threadpool.c: some systems don't like a NULL when deleting the socket
13951         from epoll.
13952
13953 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13954
13955         * threadpool.c: fix semaphore allocation.
13956
13957 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13958
13959         * threadpool.c: added epoll() based implementation for asynchronous IO
13960         that is used instead of the default poll() when available.
13961         It can be disabled by setting MONO_DISABLE_AIO.
13962
13963 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13964
13965         * threadpool.c: windows needs 'closesocket' and instead of returning
13966         0 when the stream is closed while in select, it returns -1. Fixes bug
13967         #74573.
13968
13969 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
13970
13971         * class.c (class_compute_field_layout): Fix the regression caused by
13972         the previous try.
13973
13974 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13975
13976         * threadpool.c: separate pool for socket async. IO.
13977         * threadpool.h: mono_max_worker_threads is not a global any more.
13978
13979 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
13980
13981         * class.c (class_compute_field_layout): Fix #74549.
13982
13983 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13984
13985         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
13986         use 2 connected sockets instead.
13987
13988 2005-04-08  Miguel de Icaza  <miguel@novell.com>
13989
13990         * mono-config.c: Add new entry point for mkbundle
13991         mono_config_parse_memory. 
13992
13993 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13994
13995         * threadpool.c: removed another unused function.
13996
13997 2005-04-08  Ankit Jain  <radical@corewars.org>
13998
13999         * reflection.c (get_default_param_value_blobs): Add 'types'
14000         parameter to get the types encoded in the constant table.
14001         (mono_param_get_objects): Use the type from the constant table,
14002         not the type of the parameter, when creating default values.
14003         Handle null default values correctly.
14004
14005 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14006
14007         * file-io.c:
14008         * file-io.h:
14009         * threadpool.c:
14010         * threadpool.h:
14011         * icall.c:
14012         * socket-io.c: removed dead code for async IO.
14013
14014 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14015
14016         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
14017
14018         * threadpool.c: intercept socket async. calls and pass them to a thread
14019         that is polling and dispatching the job items to the threadpool as
14020         socket become ready. Fixes bugs #71217, #71933.
14021
14022         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
14023         between char and short/ushort arrays.
14024
14025         * socket-io.c: remove dead code.
14026
14027 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
14028
14029         * locales.c,
14030           icall.c : removed InternalToUpper_Comp() and
14031           InternalToLower_Comp().
14032
14033 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
14034
14035         * char-conversions.h : The tables were incorrectly generated. Should
14036           be generated against invariant culture.
14037
14038 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14039
14040         * object.c (mono_runtime_invoke_array): Fix return value when 
14041         passing pre-created valuetype objects to ctors.
14042
14043         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
14044         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
14045         Fixes #74338.
14046
14047 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
14048
14049         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
14050         only used with --security and hides the wrong corlib version error.
14051
14052 2005-03-30  Joshua Tauberer  <tauberer@for.net>
14053
14054         * class.c: Changed mono_class_name_from_token so that types
14055         outside of a namespace don't have an initial period.  Improved
14056         the g_warning message used in _mono_class_get when loading
14057         fails.
14058         * assembly.c: In mono_assembly_load_reference, when an assembly
14059         can't be found, "No such file or directory" is misleading and
14060         unhelpful because a few paths were checked for the presence of
14061         the assembly.  When that happens (ENOENT), display a nicer
14062         message indicating the directories that were searched.  In all
14063         cases, the warning is made easier to read for non-hackers.
14064
14065 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14066
14067         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
14068         project/solution.
14069         * appdomain.h|domain.c: Removed inline from functions.
14070         * appdomain.c: Reduced warnings when compiling on windows.
14071         * icall.c: Fixed output_debug declaration to gunichar2*.
14072         * mono-config.c: Reduced warnings when compiling on windows.
14073         * rand.c: Added missing "windows.h". Added missing return value.
14074         * rawbuffer.c: Added missing winsock2.h for windows.
14075         * sysmath.h: Added mono-compiler.h header to allow/ease 
14076         compilation with non-GCC compilers.
14077         * threads.c: Fixed declarations to compile with VS.NET C compiler.
14078         Removed cast warnings.
14079
14080         Adapted from the work of J Lothian (for VC6).
14081
14082 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14083
14084         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
14085         from default_path.
14086
14087 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14088
14089         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
14090         the 2.0 profile.
14091
14092 2005-03-27  Raja R Harinath  <harinath@gmail.com>
14093
14094         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
14095         has to be in $(exec_prefix).  $(prefix) is for arch-independent
14096         stuff, and it would probably use $(prefix)/share rather than
14097         $(prefix)/lib.
14098
14099 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14100
14101         * console-io.c: added 2 includes that might be missing.
14102
14103 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14104
14105         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
14106         profile.
14107
14108         * reflection.c (create_custom_attr): Allocate the params array using
14109         alloca so it gets GC tracking.
14110
14111 2005-03-23  Chris Toshok  <toshok@ximian.com>
14112
14113         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
14114         out some spew.
14115
14116 2005-03-24  Raja R Harinath  <rharinath@novell.com>
14117
14118         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
14119         changes to pick up any changes in prefix, etc.
14120
14121 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14122
14123         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
14124         
14125         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
14126         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
14127
14128 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14129
14130         * class-internals.h object-internals.h class.c reflection.c: Extend the
14131         mono_lookup_dynamic_token () function to return the class of the
14132         token as well. 
14133
14134         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
14135         well. Fixes #73848.
14136
14137 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14138
14139         * security-manager.c: Skip inheritance checks for intra-corlib
14140         class inheritance and method overrides. This skips a lot of checks
14141         and (anyway) permissions cannot work until corlib is loaded.
14142
14143 2005-03-23  Martin Baulig  <martin@ximian.com>
14144
14145         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
14146         MONO_TYPE_GENERICINST.  
14147
14148 2005-03-23  Martin Baulig  <martin@ximian.com>
14149
14150         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
14151
14152 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14153
14154         * class.c: added locking comments to some functions.
14155         Cache the interface offsets arrays (saves about 20 KB
14156         of runtime memory in a typical app).
14157         Reduce the time overhead in mono_class_setup_supertypes ().
14158
14159 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
14160
14161         * icall.c: speedup and fix leaks in GetMethodsByName and
14162         GetPropertiesByName.
14163
14164 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
14165
14166         * reflection.c: some locking fixes.
14167
14168 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
14169
14170         * metadata.c: added missing break in case statement.
14171
14172 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
14173
14174         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
14175         typedbyref return values. Fixes #73941.
14176
14177 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14178
14179         * security-manager.c|h: Added demandunmanaged method and 
14180         suppressunmanagedcodesecurity class to MonoSecurityManager.
14181         Renamed aptc class to allowpartiallytrustedcallers.
14182
14183 2005-03-17  Martin Baulig  <martin@ximian.com>
14184
14185         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
14186
14187 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14188
14189         * file-io.c: disabled file async. IO using aio_*. It uses the
14190         threadpool now. Workaround for bug #73718.
14191
14192 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
14193
14194         * assembly.h, mono-config.c: added code to deal with bundled configs
14195         for bundled assemblies.
14196
14197 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
14198
14199         * *.c, private.h: cleanup, removing old private.h header file.
14200
14201 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14202
14203         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
14204         and throw_on_unmappable_char attributes.
14205
14206 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
14207
14208         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
14209         _ProcessName_internal.
14210
14211 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14212
14213         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
14214         #73631.
14215
14216         * icall.c threads.c threads-types.h: Remove slothash icalls as they
14217         are no longer used.
14218
14219 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14220
14221         * object.c (compute_class_bitmap): Add support for generics. Fixes
14222         #73527.
14223
14224 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
14225
14226         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
14227
14228 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14229
14230         * filewatcher.c: commented out the code for windows watcher, as we don't
14231         use it (we use the managed implementation instead).
14232
14233 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
14234
14235         * object-internals.h (MonoThread): Remove 'unused1' field.
14236
14237         * appdomain.c: Bump corlib version.
14238
14239         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
14240
14241         * reflection.c (mono_reflection_create_runtime_class): Remove the
14242         AssemblyBuilder.Save optimization since it causes too many problems.
14243
14244 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
14245
14246         * exception.c|h: Added mono_get_exception_reflection_type_load to
14247         create a ReflectionTypeLoadException object.
14248         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
14249         to return NULL is a InheritanceDemand fails during reflection. Updated
14250         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
14251         ReflectionTypeLoadException if an InheritanceDemand fails during 
14252         reflection. Added icall mapping for GetLinkDemandSecurity.
14253         * security-manager.c|h: Added ves_icall_System_Security_
14254         SecurityManager_GetLinkDemandSecurity internal call to return the
14255         class and methods permissions set for a LinkDemand. Removed unused
14256         fields in MonoSecurityManager.
14257
14258 2005-03-10  Martin Baulig  <martin@ximian.com>
14259
14260         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
14261         it's a generic instance.
14262
14263 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
14264
14265         * reflection.c (mono_get_object_from_blob): Applied patch from
14266         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
14267
14268         * class.c (mono_class_is_assignable_from): Another try at fixing 
14269         #73469 without breaking anything.
14270
14271 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14272
14273         * class.c: (mono_class_is_assignable_from): Revert the last changes
14274         since they don't work with generics.
14275         
14276         * class.c (mono_class_is_assignable_from): Fix build bustage.
14277
14278         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
14279         the managed IsAssignableFrom method. Fixes #73469.
14280
14281         * reflection.c (mono_reflection_call_is_assignable_from): New helper
14282         function.
14283
14284 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14285
14286         * object.c (mono_load_remote_field_new): Fix returning uninitialized
14287         memory when the remoting callback does not sets the out arguments.
14288         Fixes #73007.
14289
14290         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
14291         by mistake.
14292
14293         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
14294
14295         * object-internals.h (MonoStackFrame): Sync with managed object layout.
14296
14297         * appdomain.c: Bump corlib version.
14298
14299 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14300
14301         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
14302         function.
14303
14304         * threads.c (mono_thread_attach): Detect threads which are not started
14305         by the GC pthread wrappers.
14306
14307 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
14308
14309         * icall.c: Added new icall for RNG.
14310         * rand.c|h: Added new icall to open the RNG. This allows to share a 
14311         single handle on Linux to access /dev/urandom and fix #73183.
14312
14313 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14314
14315         * object.c: setting the new vtable in a transparent proxy object must
14316         not change the GC descriptor.
14317
14318 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
14319
14320         * object.c: fixed compilation without GCJ support.
14321         * reflection.c: for runtime-created types ensure klass->has_references
14322         is correct (bug #73215).
14323
14324 2005-03-02  Martin Baulig  <martin@ximian.com>
14325
14326         * class.c (mono_class_is_assignable_from): Make this work if
14327         `oklass' is a generic instance; fixes #72831.
14328
14329 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
14330
14331         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
14332         with hasthis set.
14333         
14334         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
14335
14336         * marshal.c: Reorganize native->managed marshalling code to also use
14337         the emit_marshal_... functions.
14338
14339 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
14340
14341         * object.c: typed allocs have issues with bitmap sizes > 30,
14342         so check for max_set >= 30.
14343
14344 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
14345
14346         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
14347         managed code. Fixes #73012.
14348
14349         * metadata.h (MonoMarshalSpec): Add elem_mult field.
14350
14351         * metadata.c reflection.c: Load/Emit elem_mult as well.
14352         
14353         * metadata.h (MonoMarshalSpec): Add comment.
14354
14355         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
14356
14357         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
14358         num_elem to -1 if not given.
14359
14360         * object-internals.h (MonoReflectionMarshal): Add has_size field.
14361
14362         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
14363         given values.
14364
14365 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
14366
14367         * null-gc.c (mono_gc_free_fixed): Was not compilable.
14368
14369 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
14370
14371         * reflection.c (encode_marshal_blob): Encode param_num field as well.
14372
14373         * object-internals.h (MonoReflectionMarshal): Add param_num field.
14374
14375 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
14376
14377         * object.c: generalized the reference bitmap creation
14378         and added hooks for the new GC.
14379         * class-internals.c: removed the gc_bitmap field from MonoClass.
14380
14381 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14382
14383         * domain.c: help the compiler to produce better code
14384         in mono_jit_info_table_find ().
14385
14386 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
14387
14388         * object.c: make all allocations look typed.
14389
14390 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14391
14392         * socket-io.c: load Mono.Posix if it's not loaded already
14393         (fixes bug#73033).
14394
14395 2005-02-24  Martin Baulig  <martin@ximian.com>
14396
14397         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
14398         * reflection.c (dup_type): Likewise.
14399
14400 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
14401
14402         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
14403         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
14404
14405 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14406
14407         * domain.c, threads.c, object-internals.h: make the critical thread
14408         local vars use the fast access mode (even when we're compiled in
14409         a lib). Provide accessors to be used by the jit during codegen.
14410
14411 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14412
14413         * appdomain.c: Changed hook functios behavior to include
14414         support for the reflection only assemblies. Some icalls were changed
14415         to support the mentioned assemblies too. Signatures of static methods
14416         try_assembly_resolve and real_load now have an additional parameter:
14417         refonly.
14418
14419         * assembly.c: General changes to mono_assembly_ methods to support
14420         reflection only api. Functions mono_assembly_open, mono_assembly_load,
14421         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
14422         suffix, to support an additional gbool parameter to specify whether
14423         the assembli is reflection only or not. Created some new hook functions 
14424         to add support for reflection only assemblies. Signatures of static 
14425         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
14426         have now an additional parameter: refonly.
14427
14428         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
14429         indicating whether the assembly is reflection only or not.
14430
14431         * exception.c: Add mono_get_exception_invalid_operation.
14432
14433         * icall.c: Throw an InvalidOperationException when trying to invoke
14434         a property/method/event, or trying to set/get the value of a field.
14435         Also add an icall to retrieve the ref_only flag to the
14436         MonoReflectionAssembly.
14437
14438 2005-02-23  Chris Toshok  <toshok@ximian.com>
14439
14440         Part of fix for #72827.
14441         * mono-debug.c (mono_debug_add_method): add lexical block data to
14442         the info we write.  Kind of a hack at the moment - we copy the
14443         lexical block info from the MonoDebugMethodInfo to the
14444         MonoDebugMethodJitInfo here, before writing it.
14445         (mono_debug_read_method): read the lexical block info.
14446
14447         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
14448
14449         * debug-mono-symfile.h: add lexical block support.
14450
14451         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
14452         support.
14453
14454 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14455
14456         * loader.c (mono_lookup_pinvoke_call): Fix warning.
14457
14458         * object.c (mono_runtime_free_method): Call mono_free_method () and
14459         put the TODOs there.
14460
14461         * loader.c (mono_free_method): Free up most memory allocated for 
14462         dynamic methods.
14463
14464 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14465
14466         * reflection.c: properly flag a Type argument to a
14467         named custom attr value (bug #72248).
14468
14469 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14470
14471         * reflection.c: reduce code duplication in named custom
14472         attribute encoding.
14473
14474 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
14475
14476         * reflection.c: properly encode custom attrs of type object
14477         (bug #72649).
14478
14479 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
14480
14481         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
14482
14483 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
14484
14485         * socket-io.c: load System.dll if it's not loaded already
14486         (bug #72850 and #70477).
14487
14488 2005-02-21  Martin Baulig  <martin@ximian.com>
14489
14490         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
14491         generic instances.
14492
14493 2005-02-21  Martin Baulig  <martin@ximian.com>
14494
14495         * reflection.c (mono_image_build_metadata): We also need to
14496         "fixup" the MethodImpl table after we computed the final method
14497         indices.  Call fixup_methodimpl() to do that.
14498         (fixup_methodimpl): New private method.
14499
14500 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
14501
14502         * assembly.c: special case mscorlib.dll (bug#72536),
14503         patch from Carlos Alberto Cortez.
14504
14505 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
14506
14507         * threads-types.h threads.c: Fix build bustage.
14508
14509         * threads.c: Use a union for long<->double conversions.
14510
14511         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
14512         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
14513
14514         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
14515         containing the checkpoint call with NOT_TAKEN.
14516         
14517         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
14518         checkpoint before pushing the arguments, so they won't have to be
14519         spilled to stack.
14520
14521 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
14522
14523         * domain.c, assembly.c, domain-internals.h: make some data
14524         const and relocation-free.
14525
14526 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
14527
14528         * object.c, appdomain.c, class-internals.h: introduce the
14529         MonoClassRuntimeInfo structure to hold the info needed to
14530         use a class at runtime. Made mono_class_vtable() lock-free
14531         for all the appdomains.
14532
14533 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
14534
14535         * metadata-internals.h, image.c: introduce a per-image mempool to
14536         be used for memory that has the same lifetime as the image.
14537
14538 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
14539
14540         * domain.c: In mono_init_internal(), instead of selecting the first
14541         runtime version supported by an executable, get a list of all
14542         supported versions and select the one for which an mscorlib exists
14543         (since even if the runtime supports a given version, it doesn't mean
14544         that the framework for that version is installed).
14545         Modified get_runtimes_from_exe to support this behavior.
14546         In supported_runtimes, added information about additional system
14547         assembly versions.
14548         
14549         * assembly.c: Added support for more than one system assembly version
14550         per runtime version. Updated the assembly list.
14551         In mono_assembly_remap_version, removed the initial version check,
14552         since we don't know to which version we need to compare until we
14553         get the version set on which the assembly is based.
14554         Moved the code for loading corlib into the new method
14555         mono_assembly_load_corlib(), so it can be used by the initialization
14556         code.
14557         
14558         * domain-internals.h: Updated data structures and added declaration
14559         for mono_assembly_load_corlib.
14560
14561 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14562
14563         * reflection.c (resolve_object): Fix the creation of the signature in 
14564         the SignatureHelper case.
14565
14566         * assembly.c (mono_assembly_remap_version): Fix binary search.
14567         
14568 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
14569  
14570         * class.c: Added inheritance check when a method is overloaded (from a
14571         virtual method or when implementing an interface) and when a class is
14572         inherited. Added functions to set a failure for a class and to 
14573         retreive the exception from a failure.
14574         * class-internals.h: Added fields to MonoClass to keep the exception
14575         information status for inheritance (or other exceptions) to be thrown
14576         later (i.e. not at load time).
14577         * object.c: Throw the inheritance SecurityException when a type is to 
14578         be created with either class or method inheritance violations.
14579         * reflection.c|h: Fix when getting declsec from a class. Removed 
14580         unrequired code for class. Improved sanity in parameter naming.
14581         * security-manager.c|h: Added functions to check for class and method
14582         inheritance.
14583
14584 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
14585
14586         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
14587         and has_finalize in dynamic types as well.
14588
14589 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
14590
14591         * culture-info-table.h : fixed currency format for en-GB (and so on).
14592
14593 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
14594
14595         * gc.c: ensure the GC handles never have 0 as a value.
14596
14597 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
14598
14599         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
14600         a pointer to a struct to unmanaged code. Fixes #72625.
14601
14602 2005-02-16  Martin Baulig  <martin@ximian.com>
14603
14604         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
14605
14606 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
14607
14608         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
14609
14610 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
14611
14612         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
14613
14614         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
14615         UnmanagedFunctionPointerAttribute, use it for determining calling convention
14616         etc. Fixes #71471.
14617
14618         * reflection.c (mono_custom_attrs_get_attr): New helper function.
14619
14620         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
14621
14622 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
14623
14624         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
14625         changes to make the current context a field in MonoThread.
14626
14627 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
14628
14629         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
14630         the last change.
14631         
14632         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
14633         extracted from mono_marshal_get_native_wrapper.
14634
14635         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
14636         to create wrappers around native functions.
14637
14638         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
14639         delegates for arbitrary function pointers. Fixes #71472.
14640
14641 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
14642
14643         * threads.c: cleaned up the code a little.
14644
14645 2005-02-15  Martin Baulig  <martin@ximian.com>
14646
14647         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
14648         the data table.
14649
14650         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
14651         allocate larger chunks if needed.
14652
14653 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14654
14655         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
14656         in by mistake.
14657
14658 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
14659
14660         * domain.c: keep the domains in an array and ensure the domain ids
14661         are kept small, so they can be used as indexes to domain-specific data
14662         with a small memory overhead.
14663
14664 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
14665
14666         * icall.c: Handle byref types in Type icalls. Fixes #72544.
14667
14668 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
14669
14670         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
14671
14672 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
14673
14674         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
14675
14676         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
14677         values.
14678
14679         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
14680         
14681 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
14682
14683         * domain-internals.h: add the hashtable here.
14684
14685         * class-internals.h: Remove `info' from MonoMethod
14686
14687         * domain.c: Add a new hashtable, jit_trampoline_hash
14688
14689 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14690
14691         * object.c: don't set the value of static fields
14692         (fixes bug#72494).
14693
14694 2005-02-11  Martin Baulig  <martin@ximian.com>
14695
14696         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
14697         (mono_debug_add_method): Silently ignore the method if it's too big.
14698         (mono_debug_add_type): Likewise.
14699
14700 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
14701
14702         * threads.c, appdomain.c: remove #ifdefs from the code.
14703
14704 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
14705
14706         * metadata-internals.h: Added flags to MonoAssembly to cache the most
14707         common security informations. This allows us to stay in unmanaged code
14708         when doing LinkDemand and it's special cases (except for the first 
14709         time for initialization). The flags a very much used with --security.
14710         * reflection.c|h: Added code to get declarative security attributes 
14711         for LinkDemand and InheritanceDemand. This required to refactor the
14712         existing code for Demand.
14713         * security-manager.c|h: Added new method fields for the special cases
14714         of LinkDemand.
14715
14716 2005-02-10  Martin Baulig  <martin@ximian.com>
14717
14718         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
14719         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
14720
14721 2005-02-10  Martin Baulig  <martin@ximian.com>
14722
14723         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
14724         debugging code; this is almost a complete rewrite.
14725
14726         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
14727
14728 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14729
14730         * domain.c, object.h: expose mono_string_equal () and 
14731         mono_string_hash ().
14732         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
14733         it's implemented in managed code.
14734
14735 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
14736
14737         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
14738         lo leak objects between appdomains.
14739
14740 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
14741
14742         * assembly.c: old compilers compilation fix from 
14743         robertj@gmx.net (Robert Jordan).
14744
14745 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
14746
14747         * class-internals.h: Little reminder for the future.
14748
14749         * debug-helpers.c: Fix up wrapper_type_names
14750
14751 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
14752
14753         * image.c, metadata-internals.h: when loading an image from a file,
14754         mmap all of it and use the same codepaths as when using a
14755         in-memory image: the code is simpler and we use less memory
14756         (both writable and readonly).
14757
14758 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
14759
14760         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
14761         API to alloc runtime data structures that need to be tracked by the
14762         GC and contain pointers.
14763         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
14764         make the code more readable and eventually use a different GC.
14765
14766 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
14767
14768         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
14769         for out arguments.
14770         
14771 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
14772
14773         * object.c: In release_type_locks(), don't release the cctor lock
14774         if it has already been released. This fixes a crash in the
14775         thread5 test.
14776
14777 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
14778
14779         * gc.c, marshal.c, icall.c: register a delegate for finalization
14780         only when the native function pointer has been allocated for it.
14781
14782 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14783
14784         * object.c: cleaned up some code, allocate objects that are
14785         pointer free with the atomic malloc variant. Allocate memory
14786         for static data from the mempool if it's pointer-free.
14787         Allocate the bounds array at the end of the array data, when needed.
14788         * object-internals.h, object.h: move a private function in a private
14789         header.
14790         * class.c: handle missing case in tracking references in fields.
14791
14792 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
14793
14794         * class.c, class-internals.h: keep track if a type has
14795         reference fields in either the instance or static fields.
14796
14797 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
14798
14799         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
14800         and renamed to MonoRuntimeInfo. Added fields to store the expected
14801         framework assembly version. Changed mono_get_framework_version and
14802         mono_get_runtime_version for a single mono_get_runtime_info method.
14803         
14804         * assembly.c: Added method to remap system assembly versions to the
14805         current executing runtime version. Removed old mapping code.
14806         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
14807         
14808         * icall.c, reflection.c: Track api changes.
14809
14810 2005-02-06  Miguel de Icaza  <miguel@novell.com>
14811
14812         * loader.c (method_from_memberref): Improve error reporting,
14813         produce the class name instead of the typeref/typedef index. 
14814
14815 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
14816
14817         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
14818
14819 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14820
14821         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
14822         stdcall and charset name mangling.  Reorganize the code and add
14823         some tracing stuff.
14824
14825 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
14826
14827         * monodiet.c: More iters!
14828
14829         * marshal.c: Iter usage.
14830
14831         * icall.c: Iter usage.
14832
14833         * object.c: Use iters.
14834
14835         * debug-helpers.c: More iters
14836
14837 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14838
14839         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
14840         under win32.
14841
14842 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
14843
14844         * mono-debug-debugger.c: use iters
14845
14846         * class.c, class-internals.h: mono_class_setup_events is static
14847         now
14848
14849         * All callers: use iters
14850
14851 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
14852
14853         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
14854         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
14855
14856 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14857
14858         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
14859
14860         * marshal.h: Add prototypes for ldfld/stfld_remote.
14861
14862         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
14863         this is called during startup.
14864         
14865 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
14866
14867         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
14868         MonoThreadsSync struct private in monitor.c. Changed the way
14869         MonoThreadsSync is allocated so it's faster and there is no
14870         need to keep track of it with a finalizer and it uses less memory.
14871         This also finally allows us to allocate mono objects as ptrfree when
14872         there are no reference fields.
14873
14874 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
14875
14876         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
14877         disappearing link to the GC interface and use them to simplify
14878         the gchandles code.
14879
14880 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
14881
14882         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
14883         stfld_remote which call mono_load/store_field_new. This allows methods
14884         calling ldfld/stfld wrappers to be AOTed.
14885
14886         * console-io.c: Include sys/filio.h under solaris.
14887         
14888         * console-io.c: Include curses.h if needed correctly.
14889
14890 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14891         
14892         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
14893         method->klass as well.
14894
14895         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
14896
14897         * class.c (mono_class_init): Switch on lazy initialization of 
14898         methods.
14899
14900         * class.c (mono_class_get_finalizer): Handle the case when the 
14901         finalizer is inherited.
14902
14903 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14904
14905         * console-io.c: <curses.h> is needed by term.h on solaris.
14906
14907 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
14908
14909         * icall.c, class-internals.h, monodiet.c, class.c: Remove
14910         mono_class_setup_properties where possible. Remove this ftn from
14911         the header file, and make it static.
14912
14913 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14914
14915         * loader.c: Add missing setup_... call.
14916
14917         * class.c: Add missing setup_... calls.
14918
14919         * class.c (mono_class_init): Switch on lazy initialization of 
14920         the generic vtable.
14921         
14922         * class.c (mono_class_init): Fix generics broken by the recent changes.
14923
14924         * monodiet.c (handle_type): Add missing setup_... calls.
14925
14926         * class.c: Back out garbage in previous patch.
14927         
14928         * class.c: Add missing setup_... calls.
14929
14930         * class.c (mono_class_get_method_from_name_flags): Avoid calling
14931         mono_class_setup_methods () if possible.
14932
14933         * class-internals.h (MonoClass): Add 'has_cctor' flag.
14934
14935         * class-internals.h (MonoCachedClassInfo): New structure.
14936
14937         * class.c: Initialize properties and events fields of MonoClass lazily.
14938
14939         * class.c: Add infrastructure for lazily initializing the methods and
14940         vtable fields of MonoClass. Not yet used.
14941
14942         * class.c (mono_class_get_finalizer): New helper function.
14943
14944         * class.c: Add infrastructure for loading some class related data from
14945         an AOT file.
14946
14947         * object.c: Add infrastructure for initializing the vtable from data
14948         in the AOT file.
14949
14950         * gc.c (run_finalize): Use mono_class_get_finalizer ().
14951
14952         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
14953         appropriate initialization function before accessing parts of the
14954         MonoClass structure.
14955
14956         * marshal.c: Fix warnings.
14957         
14958         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
14959
14960         * mono-debug-debugger.c (get_exception_message): Use 
14961         mono_class_get_method_from_name_flags ().
14962
14963 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
14964
14965         * reflection.c, appdomain.c: Replace a few manual searches that
14966         Zoltan missed. (Paolo approved this part of my initial patch).
14967
14968 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
14969
14970         * profiler.c: disable recording statistical events at report time.
14971
14972 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
14973
14974         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
14975         to byteswap arrays of enum values, too (bug #72080).
14976
14977 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14978
14979         * appdomain.c (set_domain_search_path): Allow this to be called if
14980         domain->setup is not yet set.
14981
14982         * loader.c (mono_method_get_index): New helper function.
14983
14984         * loader.c reflection.c: Use mono_method_get_index ().
14985
14986         * class.c (mono_class_get_method_from_name_flags): New helper method.
14987
14988         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
14989         this.
14990
14991         * class.c (mono_class_get_cctor): New helper method.
14992
14993         * string-icalls.c object.c class.c marshal.c reflection.c: Use
14994         mono_class_get_method () to look up methods.
14995
14996 2005-02-01  Miguel de Icaza  <miguel@novell.com>
14997
14998         * console-io.c: Fix the build, this should work on Windows.
14999
15000 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
15001
15002         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
15003         be set to null to keep things valid
15004
15005 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15006
15007         * icall.c: added Console 2.0 icalls.
15008         * Makefile.am: added console-io.[ch]
15009         * console-io.[ch]: internal calls for Console 2.0 API.
15010
15011 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
15012
15013         * class.c: make sure we consider all the interfaces
15014         when calculating max_interface_id (bug found by
15015         Jeroen Frijters running ikvm).
15016
15017 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15018
15019         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
15020         valuetype fields to null.
15021
15022         * object.c (set_value): Ditto. Fixes #71669.    
15023
15024 2005-01-31  Martin Baulig  <martin@ximian.com>
15025
15026         * metadata.c (mono_metadata_has_generic_params): New public
15027         function; checks whether something is a generic method.
15028
15029 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15030
15031         * appdomain.c: fix infinite recursion when adding assemblies.
15032
15033 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
15034
15035         * object.c: Fix small typo to return all items for Environment.
15036         GetCommandLineArgs.
15037
15038 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15039
15040         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
15041         reflection.c: more domain and assembly-unload related fixes
15042         and memory leaks plugs.
15043
15044 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15045
15046         * 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.
15047
15048 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15049
15050         * loader.c (mono_method_signature): Make this method lazy
15051         (mono_get_method_from_token): Don't computate the signature here.
15052
15053         Doing this saves quite a bit of memory. I got 90 kb on starting up
15054         monodoc. It should also save some disk reads on startup.
15055
15056         * *: MonoMethod->signature might be NULL now. You *MUST* use
15057         mono_method_signature.
15058
15059 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
15060
15061         * object.c (mono_runtime_get_main_args): Return an array from the
15062         current domain here. Fixes #71938.
15063
15064 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15065
15066         * monitor.c: formatting changes to comply with the
15067         mono coding style and remove #ifdefs from the code.
15068
15069 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
15070
15071         * metadata.c, private.h: remove some unneeded data
15072         and use a more compact representation for table schemas.
15073
15074 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15075
15076         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
15077         to get a better distribution in hash tables.
15078         * *.c: use mono_aligned_addr_hash() where appropriate.
15079         * assembly.c: make var static.
15080
15081 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15082
15083         * domain-internals.h: Put MonoJitInfo on a diet.
15084
15085         * domain.c: Fix a warning.
15086
15087 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
15088
15089         * gc.c: rework the gc handles code to reuse handles
15090         when freed.
15091
15092 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
15093
15094         * domain.c: fixed long standing bug in mono_string_equal() which
15095         was brought to light with the ldstr changes.
15096
15097 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15098
15099         * reflection.c: Remove warning by adding missing include for marshal.h
15100
15101 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
15102
15103         * domain.c, object.c: change the ldstr_table to hold
15104         MonoString* as keys: makes the runtime isinterned lookup
15105         faster and simplifies memory management.
15106
15107 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
15108  
15109         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
15110         possible to add imperative security checks before calling the icall.
15111         * reflection.c: Return security attributes on the original MonoMethod
15112         (and not the wrapped one). This fix permissions on icalls.
15113
15114 2005-01-25  Dick Porter  <dick@ximian.com>
15115
15116         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
15117         the check for mktime() support actually test the mktime() return
15118         value.  "Fixes" bug 71682, though the output is still different to
15119         MS.
15120
15121 2005-01-25  Martin Baulig  <martin@ximian.com>
15122
15123         * class.c (mono_class_is_assignable_from): Make this work for
15124         generic instances.
15125
15126 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
15127
15128         * marshal.c (mono_string_utf8_to_builder)
15129         (mono_string_builder_to_utf16): We might not have ownership of the
15130         string. In thise case, we need to create a new buffer.
15131
15132         * object-internals.h (mono_stringbuilder_capacity): sb->str might
15133         be null, in which case, use the default capacity.
15134
15135 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
15136
15137         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
15138         GC events to the profiler.
15139
15140 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
15141
15142         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
15143         if you don't want the GC to run.
15144
15145 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
15146
15147         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
15148         start providing a GC API and keeping different implementations in
15149         their own file.
15150         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
15151
15152 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15153
15154         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
15155         mmap rather than allocating a huge buffer.
15156         (mono_debug_close_mono_symbol_file): Free the buffer allocated
15157         above.
15158
15159 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15160
15161         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
15162         and CheckExecutionRights.
15163         * reflection.c|h: Keep the index of the declarative security to be 
15164         used, instead of the pointer, when AOT compiler is used. Also add 
15165         class initialization when requesting demands.
15166         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
15167         CheckExecutionRights. Both properties are now FALSE by default, and
15168         unmodifiable, unless the --security option is used.
15169
15170 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15171
15172         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
15173         reflection.c: properly refcount images and assemblies, many leaks fixed.
15174
15175 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15176
15177         * threadpool.c: increase the timeout for threads in the thread pool to
15178         10s.  Fixes bug #67159.
15179
15180 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
15181
15182         * class-internals.h: Sun's compiler insists on explicit
15183         signed on bit fields to handle then correctly.
15184
15185 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
15186
15187         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
15188         Make the size of the array fit only the number of invalid path
15189         chars that we have.
15190
15191         * class.c (_mono_class_get): Improve the error reporting when a
15192         class referenced is not found, to assist debugging. 
15193
15194 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
15195
15196         * threads.c: fix off-by-one error.
15197         * domain.c: free data allocated in the domain.
15198
15199 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
15200
15201         * reflection.c (mono_method_body_get_object): Fill out exception info
15202         as well.
15203
15204         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
15205         structure.
15206         
15207 2005-01-19  Martin Baulig  <martin@ximian.com>
15208
15209         * loader.c (mono_get_method_constrained): Make this work again.
15210
15211 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
15212
15213         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
15214         guint16 to match the managed side.
15215
15216         * reflection.c (mono_reflection_body_get_object): Fill out local
15217         variables array.
15218
15219         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
15220         as well.
15221
15222         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
15223         'local_var_sig_token'.
15224
15225 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15226
15227         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
15228         System.Drawing.
15229
15230         * reflection.c (mono_method_body_get_object): Handle abstract and
15231         runtime methods.
15232
15233 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
15234
15235         * marshal.c, loader.c, class-internals.h, reflection.c:
15236         store the emthod data for a wrapper in an array instead of a list.
15237
15238 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
15239
15240         * marshal.c: change the code to allocate memory more
15241         conservatively for method wrappers.
15242
15243 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15244
15245         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
15246         fields from MonoClass to the marshal info structure where they belong.
15247
15248 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
15249
15250         * class.c, object.c, class-internals.h, marshal.c: rearrange
15251         some fields and tweak some types to lower memory usage.
15252
15253 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15254
15255         * threads.c (signal_thread_state_change): Handle the case when the
15256         target thread is the current thread.
15257
15258         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
15259
15260         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
15261         emit_ptr_to_object_conv. 
15262
15263         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
15264         marshalling. Fixes #71352.
15265
15266 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15267
15268         * metadata.h, blob.h: move table enum to blob.h so it can be included
15269         in any header.
15270         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
15271         cut the size of MonoImage/MonoDynamicImage.
15272
15273 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15274
15275         * profiler.c (mono_profiler_install_simple): Fix default arguments.
15276
15277 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
15278
15279         * reflection.c, reflection.h, icall.c: add a function to check
15280         if an attribute type is defined for a metadata object.
15281
15282 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
15283
15284         * object-internals.h: Added some needed fields from StringBuilder class.
15285         * marshal.c: Set the maxCapacity when creating a StringBuilder.
15286
15287 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15288
15289         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
15290         threads before shutting down the runtime.
15291
15292         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
15293
15294 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15295
15296         * object-internal.h, threads.c: implement stacksize and 
15297         parameterized thread start functionality (requires
15298         matching corlib). Marked broken code for later removal.
15299
15300 2005-01-12  Martin Baulig  <martin@ximian.com>
15301
15302         * class-internals.h (MonoGenericClass): Moved the `initialized'
15303         flag to MonoDynamicGenericClass, removed `init_pending'.
15304         (MonoGenericInst): Added `is_reference' flag.
15305
15306 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
15307
15308         * reflection.c (mono_image_create_pefile): Only set the pe_offset
15309         inside the MSDOS header. Fixes #71201.
15310
15311         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
15312         gc thread.
15313         (mono_domain_finalize): Ditto.
15314
15315 2005-01-12  Martin Baulig  <martin@ximian.com>
15316
15317         * class.c (mono_get_shared_generic_class): Use the cache for
15318         non-dynamic generic classes.
15319
15320         * class-internals.h (mono_class_create_generic_2): Removed
15321         function prototype, this function is now static inside class.c.
15322
15323         * class.c (mono_class_create_generic_2): Made this static, only
15324         call it from mono_class_init() and mono_class_setup_parent().
15325         (collect_implemented_interfaces_aux): Call mono_class_init() on
15326         the interfaces we collect.
15327         (mono_class_setup_vtable): Call mono_class_init (class->parent).
15328
15329 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15330
15331         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
15332         it a real thread handle.
15333
15334         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
15335         MonoJitExceptionInfo, since each catch clause needs its own variable.
15336         
15337 2005-01-11  Dick Porter  <dick@ximian.com>
15338
15339         * image.c (mono_pe_file_open): New variant on mono_image_open()
15340         that does not set up the CLI metadata; used for FileVersionInfo so
15341         it can get the data for windows binaries too.
15342         
15343         * process.c (process_read_string_block): Don't read off the end of
15344         the StringTable block.
15345
15346         These both fix bug 70766.
15347
15348 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
15349
15350         * gc.c: set some fields to NULL at GC cleanup time.
15351         * threads.c: if we quit the main thread, call exit ().
15352
15353 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
15354
15355         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
15356
15357 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
15358
15359         * threads.h, threads.c, object.c: added accessor and settor for
15360         main_thread. Handle it specially when exiting from it: wait
15361         for other foreground threads to exit.
15362
15363 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
15364
15365         * process.c, verify.c: remove some bloat.
15366
15367 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
15368
15369         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
15370         the calling convention to cdecl under win32.
15371
15372 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
15373
15374         * object.c (mono_object_get_size): New function to get the size of
15375         an object instance.
15376
15377         * profiler.c (simple_allocation): Use above.
15378
15379 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
15380
15381         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
15382         ves_icall_System_AppDomain_getRootDomain (as it's not required to
15383         get an appdomain by it's id and we can't assume the root's id is 0).
15384         * domain-internals.h: Change the function prototype to match.
15385         * icall.c: Change the icall table for AppDomain.
15386
15387 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
15388
15389         * locales.c (string_invariant_compare_char): Only compute
15390         GUnicodeTypes in the case where we need them.  Test for ordinality
15391         first and return if so.
15392
15393         From the commit:
15394
15395                 /*
15396                  * FIXME: here we must use the information from c1type and c2type
15397                  * to find out the proper collation, even on the InvariantCulture, the
15398                  * sorting is not done by computing the unicode values, but their
15399                  * actual sort order.
15400                  */
15401
15402 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15403
15404         * loader.c: for P/Invoke methods, allow the "Internal" shared
15405         library name to refer to the calling process symbol namespace.
15406
15407 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
15408
15409         * Makefile.am: Add the security manager to the build.
15410         * security-manager.c|h: New. Initialization of the security manager.
15411
15412 2005-01-07  Dick Porter  <dick@ximian.com>
15413
15414         * threads.c: 
15415         * monitor.c: Update thread state during Monitor and WaitHandle
15416         waits.  Fixes bug 71031.
15417
15418 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
15419
15420         * reflection.c (property_encode_signature): Correctly handle when the
15421         property has no methods.
15422
15423 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
15424
15425         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
15426         
15427         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
15428         fields from mb, not rmb. Fixes #71017.
15429
15430         * marshal.c (emit_ptr_to_str_conv): Add support for 
15431         ByValTStr -> string conversion. Fixes #71015.
15432
15433         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
15434
15435         * mempool.c (mono_mempool_contains_addr): New helper function.
15436
15437 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15438
15439         * metadata.c (mono_metadata_compute_size): Fix size calculation of
15440         HasSematics encoded fields.
15441         
15442         * metadata.c (mono_type_to_unmanaged): Improve error message for 
15443         invalid string marshalling.
15444
15445         * metadata.c: Fix warnings.
15446         
15447 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15448
15449         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
15450         profiler support.
15451
15452 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
15453
15454         * domain.c object.c domain-internals.h: Revert part of r38077 since the
15455         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
15456         tests.
15457
15458 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
15459
15460         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
15461         so methods containing these can be AOTed.
15462
15463 2005-01-03  Martin Baulig  <martin@ximian.com>
15464
15465         * loader.c (find_method): Removed the hack for generic instances.
15466         (method_from_memberref): If our parent is a generic instance, pass
15467         its generic type definition to find_method() and then inflate the
15468         method.
15469         (mono_get_method_constrained): Pass the generic type definition to
15470         find_method() and inflate the method later.
15471
15472         * class-internals.h (MonoStats): Added `generic_class_count'.
15473
15474         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
15475         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
15476
15477         * reflection.c (mono_custom_attrs_from_params): Don't ignore
15478         generic type definitions.
15479
15480 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
15481
15482         * loader.c icall.c: Fix warnings.
15483
15484 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
15485
15486         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
15487         blittable types. Fixes #70864.
15488
15489 2004-12-29  Martin Baulig  <martin@ximian.com>
15490
15491         * icall.c
15492         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
15493
15494         * reflection.c (mono_method_get_object): Create a
15495         "System.Reflection.MonoGenericMethod" for inflated methods; don't
15496         call mono_get_inflated_method().
15497
15498         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
15499
15500 2004-12-27  Martin Baulig  <martin@ximian.com>
15501
15502         * class-internals.h (MonoMethod): Added `is_inflated' flag.
15503         (MonoMethodInflated): Added `inflated' field.
15504
15505         * class.c (mono_class_inflate_generic_method): Don't really
15506         inflate the method here; just set the `is_inflated' flag in the
15507         MonoMethod.
15508         (mono_class_get_inflated_method): Actually inflate the method here
15509         if it's not already inflated; we use the MonoMethodInflated's new
15510         `inflated' field as a cache.
15511
15512 2004-12-26  Martin Baulig  <martin@ximian.com>
15513
15514         * class.c
15515         (inflate_generic_class): Moved some code out of inflate_generic_type().
15516         (mono_class_inflate_generic_method): If we're already inflated,
15517         inflate the context and use the declaring method; ie. make sure
15518         the declaring method of an inflated method is always the generic
15519         method definition.
15520         (mono_class_create_from_typedef): Create
15521         `class->generic_container->context->gclass'.
15522
15523 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
15524
15525         * metadata-internals.h, marshal.c, reflection.c: More
15526         MonoGHashTable->GHashTable.
15527
15528         * domain-internals.h, class.c: Change MonoGHashTable's into
15529         GHashTables for some cases where no gc stuff is used
15530
15531         All users: update apis
15532
15533 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
15534
15535         * metadata.c (builtin_types): Make this `const'. Makes this get
15536         put into the shareable section.
15537         (mono_metadata_init): Casts to make gcc happy.
15538
15539 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
15540
15541         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
15542
15543 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
15544
15545         * icall.c: Added an internal call to retrieve the position and length
15546         of assembly-level declarative security attributes (RequestMinimum, 
15547         RequestOptional and RequestRefuse). This is used by the Assembly class
15548         to re-create the corresponding permission sets.
15549
15550 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
15551
15552         * marshal.c: fix the stelemref wrapper to be type correct
15553         (and faster).
15554
15555 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
15556
15557         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
15558         to do key & 0x7fffffff. Hashtable already does this. It just
15559         results in longer code.
15560
15561 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
15562
15563         * appdomain.c: Bump corlib version.
15564         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
15565         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
15566         * reflection.c|h: Add functions to get declarative security infos
15567         (blob position and length) for assemblies, classes and methods.
15568
15569 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
15570
15571         * reflection.c: sort the constant table (bug #70693).
15572
15573 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
15574
15575         * object-internals.h, threads.c, domain.c: add accessors for
15576         the MonoThread and MonoDomain tls keys.
15577
15578 2004-12-18  Martin Baulig  <martin@ximian.com>
15579
15580         * class.c (inflate_generic_type): If we're inflating a generic
15581         instance, set `ngclass->context->container = context->container';
15582         ie. the container we inflated into.
15583
15584         * metadata.c (mono_metadata_parse_generic_param): Reflect above
15585         inflate_generic_type() changes.
15586
15587 2004-12-17  Martin Baulig  <martin@ximian.com>
15588
15589         * class-internals.h
15590         (MonoGenericClass): Replaced `MonoType *generic_type' with
15591         `MonoClass *generic_class'.  Removed `dynamic_info'; if
15592         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
15593         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
15594
15595 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
15596
15597         * exception.c (mono_exception_from_token): New helper function.
15598
15599 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
15600
15601         * assembly.c (mono_assembly_load_with_partial_name): Call 
15602         mono_assembly_loaded before invoking the preload hooks. Fixes
15603         #70564.
15604
15605         * object-internals.h (MonoThread): Change culture_info and 
15606         ui_culture_info into an array.
15607
15608         * threads.c: Cache culture info objects from more than one appdomain.
15609
15610         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
15611         current UI culture.
15612
15613 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
15614
15615         * threads.h threads.c appdomain.c: Clear the culture_info field of
15616         all threads during unloading if they point to an object in the dying
15617         appdomain.
15618
15619 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
15620
15621         * culture-info.h (TextInfoEntry): New struct
15622         * object-internals.h: sync with managed
15623         * locales.c: fill the `text_info_data' field
15624         * culture-info-tables.h: update
15625
15626 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
15627
15628         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
15629         collector.
15630
15631 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
15632
15633         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
15634         (ves_icall_ModuleBuilder_getMethodToken): Ditto
15635
15636 2004-12-12  Martin Baulig  <martin@ximian.com>
15637
15638         * mono-debug-debugger.c (write_type): If we're an enum and the
15639         builtin types have already been initialized, call mono_class_init().
15640
15641 2004-12-11  Martin Baulig  <martin@ximian.com>
15642
15643         * metadata.c (mono_metadata_load_generic_params): Added
15644         `MonoGenericContainer *parent_container' argument; automatically
15645         compute `container->is_method'; pass the correct owner to
15646         get_constraints().      
15647
15648         * reflection.c (compare_genericparam): Sort the GenericParam table
15649         according to increasing owners. 
15650
15651 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
15652
15653         * profiler.c: allow disabling the default profiler.
15654
15655 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
15656
15657         * decimal.c, icall.c: allow disabling System.Decimal support.
15658
15659 2004-12-09  Marek Safar <marek.safar@seznam.cz>
15660
15661         * reflection.c: Add support for null attribute arguments.
15662
15663 2004-12-09  Martin Baulig  <martin@ximian.com>
15664
15665         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
15666         names to get rid of compiler warnings.
15667
15668 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15669
15670         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
15671         mono_marshal_load_type_info (). Fixes #69625.
15672         (mono_marshal_get_ptr_to_struct): Likewise.
15673
15674 2004-12-08  Martin Baulig  <martin@ximian.com>
15675
15676         * mono-debug.h: Bumped version number to 47.
15677
15678         * mono-debug-debugger.c
15679         (mono_debugger_event_handler, mono_debugger_event): Take two
15680         guint64 arguments insteed of a gpointer and a guint32.  
15681
15682 2004-12-08  Martin Baulig  <martin@ximian.com>
15683
15684         * debug-mono-symfile.h
15685         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
15686         `address' to `native_offset'.
15687
15688 2004-12-08  Martin Baulig  <martin@ximian.com>
15689
15690         * class.c (mono_class_create_from_typespec): Only inflate if we
15691         either have `context->gclass' or `context->gmethod'.
15692
15693 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
15694
15695         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
15696
15697         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
15698
15699         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
15700
15701         * reflection.c (mono_assembly_get_object): Remove the workaround put
15702         in for the release.
15703         
15704         * appdomain.c: Use the corlib_internal field from MonoAssembly.
15705
15706         * appdomain.c: Bump corlib version.
15707
15708         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
15709         be visible in other appdomains.
15710
15711 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
15712
15713         * threads.c: Interlocked inc and dec for longs were messed up,
15714         use a KISS based impl for this. Fixes 70234
15715
15716 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
15717
15718         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
15719
15720 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
15721
15722         * icall.c: fix to follow policy not to allow struct
15723         arguments in icalls.
15724
15725 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15726
15727         * process.c: make the patch that handles spaces in file paths work
15728         on mono/windows too.
15729
15730 2004-12-06  Martin Baulig  <martin@ximian.com>
15731
15732         * class.c (mono_class_create_generic): Call
15733         mono_class_setup_supertypes() if we're dynamic.
15734         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
15735
15736 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
15737
15738         * object-internals.h: Add new fields to MonoThread.
15739
15740         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15741
15742         * icall.c threads-types.h threads.c: Add new icalls.
15743
15744         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
15745
15746         * object-internals.h (MonoReflectionAssembly): Sync object layout with
15747         managed side.
15748
15749         * appdomain.c: Bump corlib version.
15750
15751         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
15752         internal assemblies. Fixes #69181.
15753
15754 2004-12-05  Martin Baulig  <martin@ximian.com>
15755
15756         * class.c (mono_class_inflate_generic_signature): Make this a
15757         no-op if `context' is NULL or we don't have any type parameters;
15758         also copy `sentinelpos'.        
15759
15760 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
15761
15762         * image.c: Add unbox_wrapper_cache.
15763
15764         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
15765
15766         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
15767         function generator.
15768         
15769         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
15770         Fixes #70173.
15771
15772         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
15773         
15774 2004-12-04  Martin Baulig  <martin@ximian.com>
15775
15776         * loader.c (mono_method_get_signature_full): New public function;
15777         like mono_method_get_signature(), but with an additional
15778         `MonoGenericContext *' argument.
15779
15780         * class.c (mono_class_inflate_generic_signature): Formerly known
15781         as inflate_generic_signature(); make this public.
15782
15783 2004-12-04  Martin Baulig  <martin@ximian.com>
15784
15785         * metadata.c
15786         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
15787         instead of a `MonoGenericContainer *'.  
15788         (mono_metadata_parse_array_full): Likewise.
15789         (mono_metadata_parse_signature_full): Likewise.
15790         (mono_metadata_parse_method_signature_full): Likewise.
15791         (mono_metadata_parse_generic_inst): Likewise.
15792         (mono_metadata_parse_generic_param): Likewise.
15793         (mono_metadata_parse_mh_full): Likewise.
15794         (mono_type_create_from_typespec_full): Likewise.
15795
15796 2004-12-03  Martin Baulig  <martin@ximian.com>
15797
15798         * class-internals.h (MonoGenericContainer): Replaced the
15799         `MonoGenericContext * pointer with a `MonoGenericContext'
15800         structure and made it the first element.
15801
15802 2004-12-03  Martin Baulig  <martin@ximian.com>
15803
15804         * class.c
15805         (inflate_generic_type): Set the `context->container' when creating
15806         a new MonoGenericContext.
15807         (mono_class_inflate_generic_method): Likewise.
15808         (mono_class_create_from_typespec): Just use `context->container'
15809         to get the container.
15810
15811         * loader.c (method_from_methodspec): Set `context->parent' from
15812         `context->container' - and if that's a method container, use its
15813         parent.  Also set the `context->container' when creating a new
15814         MonoGenericContext.
15815         (mono_get_method_from_token): Use just `context->container' to get
15816         the container.
15817
15818         * metadata.c (do_mono_metadata_parse_generic_class): Also set
15819         `gclass->context->container'.
15820
15821         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
15822         the `context->container' when creating a new MonoGenericContext.
15823
15824 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
15825
15826         * reflection.c (compare_genericparam): Sort params with identical
15827         owner by their number. Fixes gen-111 on sparc.
15828
15829 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15830
15831         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
15832         around the domain changes.
15833
15834         * appdomain.c (mono_domain_unload): Handle the case when the thread
15835         calling Unload is itself being aborted during unloading. Fixes #70022.
15836
15837         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
15838
15839         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
15840         checkpoint_func as an icall so it gets a wrapper.
15841         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
15842         in the cross-appdomain wrappers too.
15843
15844         * threads.c (mono_thread_has_appdomain_ref): Make this public.
15845
15846         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
15847
15848         * reflection.c: Fix some memory leaks.
15849         
15850 2004-12-02  Martin Baulig  <martin@ximian.com>
15851
15852         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
15853
15854         * metadata.c (generic_class_cache): New static hashtable.
15855         (mono_metadata_lookup_generic_class): New public method.
15856
15857 2004-12-02  Martin Baulig  <martin@ximian.com>
15858
15859         * class.c (mono_class_create_from_typedef): Call
15860         mono_class_setup_parent() and mono_class_create_mono_type() before
15861         parsing the interfaces.
15862
15863 2004-12-02  Martin Baulig  <martin@ximian.com>
15864
15865         * metadata.c (generic_inst_cache): New static hashtable.
15866         (mono_metadata_lookup_generic_inst): New public function.
15867         (mono_metadata_inflate_generic_inst): New public function.
15868         (mono_metadata_parse_generic_inst): New public function.
15869         (do_mono_metadata_parse_generic_class): Use the new
15870         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
15871         since this'll also use the cache.
15872
15873         * reflection.c (mono_reflection_bind_generic_method_parameters):
15874         Use mono_metadata_lookup_generic_inst() to use the new cache.
15875
15876         * class.c (inflate_mono_type): Use
15877         mono_metadata_inflate_generic_inst() to inflate a generic
15878         instance; this'll also use the new cache.
15879
15880         * loader.c (method_from_methodspec): Use
15881         mono_metadata_parse_generic_inst() and
15882         mono_metadata_inflate_generic_inst() rather than parsing it
15883         manually, so we can use the new cache.
15884
15885 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
15886
15887         * threads.c (wait_for_tids): Do not incorrectly free threads when 
15888         the wait times out.
15889
15890 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
15891
15892         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
15893         iter->args based on whether parameters are passed in registers (i.e.
15894         MONO_ARCH_REGPARMS is defined)
15895
15896 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
15897
15898         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
15899         the exception message. Fixes #70070.
15900         (method_from_methodspec): Fix warnings.
15901
15902 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15903
15904         * process.c: (complete_path) return the path quoted
15905
15906 2004-12-01  Martin Baulig  <martin@ximian.com>
15907
15908         * class-internals.h (MonoGenericInst): New structure.
15909         (MonoGenericClass): Replaced `type_argc', `type_argv' and
15910         `is_open' with `MonoGenericInst *inst'.
15911         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
15912         `is_open' with `MonoGenericInst *inst'.
15913
15914 2004-11-30  Martin Baulig  <martin@ximian.com>
15915
15916         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
15917
15918         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
15919         to `generic_class_cache'.
15920
15921         * metadata.c
15922         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
15923         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
15924         (mono_generic_inst_is_valuetype): Renamed to
15925         mono_generic_class_is_valuetype().
15926
15927         * class-internals.h
15928         (MonoGenericInst): Renamed to MonoGenericClass.
15929         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
15930         (MonoClass): Renamed `generic_inst' to `generic_class'.
15931         (MonoGenericContext): Renamed `ginst' to `gclass'.
15932
15933         * object-internals.h
15934         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
15935
15936         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
15937         mono_reflection_generic_class_initialize().
15938
15939         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
15940         now known as "System.Reflection.MonoGenericClass".
15941         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
15942
15943 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
15944
15945         * class-internals.h: Added a flag field to MonoClass to cache the
15946         declarative security attributes actions associated with the class.
15947         * domain-internals.h: Added booleans to MonoJitInfo to cache the
15948         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
15949         applicable to the JITted method.
15950         * reflection.c|h: Added functions to extract (as flags) which security
15951         actions are available (declaratively) for a method, class or assembly.
15952         * metadata.c|h: Added functions to search the declarative security
15953         table in the metadata.
15954         
15955 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
15956
15957         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
15958         EXPORTEDTYPES are already in the class name cache, so there is no
15959         need to add extra code here to look at them. Just removes a bit of
15960         cruft.
15961
15962         (ves_icall_System_Environment_get_TickCount): No need for #if
15963         WINDOWS. We already have the code in io-layer.
15964
15965 2004-11-28  Martin Baulig  <martin@ximian.com>
15966
15967         * loader.c
15968         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
15969         Fixes gen-112.cs.
15970
15971 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
15972
15973         * assembly.c (do_mono_assembly_open): Instead of having a
15974         conditional WITH_BUNDLE, incorporate support for bundles here, by
15975         having a global `bundles' variable holding a pointer to the actual
15976         bundles. 
15977
15978         (mono_register_bundled_assemblies): New API call used by the
15979         bundle code. 
15980
15981         See mkbundle.1 for details.
15982         
15983 2004-11-27  Martin Baulig  <martin@ximian.com>
15984
15985         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
15986         the vtable for generic methods.
15987
15988 2004-11-26  Martin Baulig  <martin@ximian.com>
15989
15990         * metadata.c
15991         (mono_metadata_generic_method_hash): New public function.
15992         (mono_metadata_generic_method_equal): Likewise.
15993
15994         * class-internals.h
15995         (MonoGenericContainer): Added `GHashTable *method_hash'.
15996
15997         * reflection.c (ReflectionMethodBuilder): Added
15998         `MonoGenericContainer *generic_container'.
15999         (reflection_methodbuilder_to_mono_method): Don't create a new
16000         MonoGenericContainer each time we're called.
16001         (mono_reflection_bind_generic_method_parameters): Use
16002         `container->method_hash' to cache the results so we don't create a
16003         different method if we're called several times with the same
16004         arguments.
16005
16006         * loader.c (method_from_methodspec): Use the new
16007         `container->method_hash' here, too.
16008
16009 2004-11-26  Martin Baulig  <martin@ximian.com>
16010
16011         * class.c (inflate_generic_signature): Correctly compute
16012         `res->has_type_parameters'.
16013         (mono_class_vtable): Use the `has_type_parameters' flag to
16014         determine whether we're a generic method.
16015
16016         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
16017
16018 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16019
16020         * object.c (mono_runtime_run_main): Fix a small memory leak.
16021
16022 2004-11-25  Martin Baulig  <martin@ximian.com>
16023
16024         * class.c (set_generic_param_owner): Fixed the loop.
16025
16026 2004-11-25  Martin Baulig  <martin@ximian.com>
16027
16028         * object.c (mono_class_vtable): Don't create any JIT wrappers for
16029         generic methods.
16030
16031 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16032
16033         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
16034         names. Fixes #69787.
16035
16036 2004-11-24  Martin Baulig  <martin@ximian.com>
16037
16038         * class.c (mono_class_create_generic_2): If we don't have a
16039         `ginst->parent', inflate `gklass->parent' to get our parent.
16040
16041 2004-11-24  Martin Baulig  <martin@ximian.com>
16042
16043         * reflection.c (compare_genericparam): Correctly sort the
16044         GenericParam table; fixes #69779.
16045
16046 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
16047
16048         * reflection.c: When writing a PE file, don't create a huge
16049         buffer in memory. Just write the arrays we have to the file.
16050         This reduces memory usage.
16051
16052         * metadata-internals.h: MonoDynamicStream pefile is no longer used
16053         globally.
16054
16055 2004-11-17  Martin Baulig  <martin@ximian.com>
16056
16057         * class.c (mono_class_init): Don't setup `class->parent' for
16058         dynamic instances; moved this to mono_class_generic_2().
16059         (mono_class_create_generic): Also set `klass->inited' for dynamic
16060         generic instances.
16061         (mono_class_create_generic_2): Don't do anything for dynamic
16062         generic instances.  Set `klass->parent' here and also call
16063         mono_class_setup_parent() here. 
16064
16065         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
16066         `MonoType *parent' argument; set `ginst->parent' before calling
16067         mono_class_create_generic_2(), so we set the correct parent.
16068
16069 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
16070
16071         * reflection.c: allow getting attributes from ModuleBuilder
16072         (used by ikvm).
16073
16074 2004-11-17  Martin Baulig  <martin@ximian.com>
16075
16076         * class.c (mono_class_create_from_typedef): If a type parameter is
16077         inherited from an outer class, set its owner to that class.
16078
16079 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
16080
16081         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
16082           for (int*) written size. This fixes bug #69592.
16083
16084 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
16085
16086         * icall.c: Added IsAuthenticodePresnet internal call.
16087         * image.c|h: New function that check a MonoImage for an Authenticode
16088         signature in the certificate PE data directory.
16089         * security.c|h: New internal call to ask the runtime if an 
16090         Authenticode signature seems referenced in the PE header.
16091
16092 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
16093
16094         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
16095
16096         * reflection.c (mono_image_create_pefile): Free the assembly streams
16097         after writing out the assembly file.
16098
16099         * object.c (mono_runtime_run_main): Fix small memory leak.
16100
16101         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
16102         property access modifiers. Fixes #69389.
16103
16104 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16105
16106         * domain.c, object.c, object-internals.h, domain-internals.h,
16107         object.h, marshal.c: keep dynamic code info per domain.
16108
16109 2004-11-15  Martin Baulig  <martin@ximian.com>
16110
16111         * class.c (mono_type_get_name_recurse): Put type arguments in
16112         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
16113         see bug #68387.
16114
16115 2004-11-15  Martin Baulig  <martin@ximian.com>
16116
16117         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
16118         (mono_class_setup_vtable): When computing `the_cname' for a
16119         generic instance, don't include the namespace since we'd otherwise
16120         add it twice.
16121
16122 2004-11-15  Martin Baulig  <martin@ximian.com>
16123
16124         * class.c (mono_class_create_generic): Changed return type to void.
16125         (mono_class_create_generic_2): New public function; setup
16126         `class->method', `class->field' and `class->interfaces' here
16127         instead of in mono_class_init().
16128
16129         * class.h (mono_class_create_generic): Moved to class-internals.h.
16130
16131 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
16132
16133         * reflection.c (mono_image_create_pefile): take a file HANDLE.
16134         rather than writing to memory, write to this file. Right now,
16135         we are just writting into a buffer, and copying that. However
16136         we can avoid the buffer later.
16137
16138         (mono_dynamic_stream_reset): new function
16139
16140         * icall.c, object-internals.h: update for the above.
16141
16142 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
16143
16144         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
16145         have been using gc'd memory. First it is slower, unlikely
16146         the comment in the source code said, secondly, it increases
16147         our footprint to do it in the gc.
16148
16149         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
16150         the method so that it does not have to copy to managed code.
16151
16152 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
16153
16154         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
16155
16156 2004-11-12  Martin Baulig  <martin@localhost>
16157
16158         * reflection.c (mono_image_create_token): Allow generic method
16159         definitions here, since they may appear in an `.override'; see
16160         gen-98/gen-99 for an example.
16161
16162 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
16163
16164         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
16165         #69365.
16166
16167         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
16168         descriptive.
16169
16170 2004-11-11  Martin Baulig  <martin@ximian.com>
16171
16172         * class.c (mono_class_setup_vtable): In an explicit interface
16173         implementation, the method name now includes the arity.
16174
16175 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
16176
16177         * object.c (mono_array_full_copy): Fix warning.
16178
16179 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
16180
16181         * appdomain.c: Removed look_for_method_by_name(). Use the new method
16182         mono_class_get_method_from_name() instead.
16183         
16184         * class-internals.h: Added two new types of wrappers. 
16185         Added MonoRemotingTarget enum. Added new trampoline function type, which
16186         takes an additional MonoRemotingTarget value as parameter, so it is
16187         possible to request a trampoline for a specific target.
16188         
16189         * class.c: Added new mono_class_get_method_from_name() method.
16190         
16191         * class.h: In MonoRemoteClass, we can have now to vtables, one for
16192         general remoting sinks and one specific for cross domain calls.
16193         
16194         * debug-helpers.c: Added new wrapper names.
16195         
16196         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
16197         of a remote class.
16198         
16199         * image.c: Porperly delete value objects form the remoting invoke hashtable.
16200         
16201         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
16202         with several other methods (mono_marshal_get_xappdomain_dispatch,
16203         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
16204         and others) can generate a fast remoting wrapper for cross domain calls.
16205         More information can be found in docs/remoting.
16206         Other changes: Removed mono_find_method_by_name, and used
16207         mono_class_get_method_from_name instead.
16208         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
16209         is stored in the remoting invoke hashtable.
16210         
16211         * marshal.h: published the new method for getting the xdomain wrapper,
16212         and also added a method for getting the adequate wrapper for a given
16213         method and target.
16214         
16215         * object-internals.h, object.c: Added a couple of methods for capying and
16216         cloning arrays.
16217         Modified mono_install_remoting_trampoline, which takes the new remoting
16218         trampoline that has a remoting target as parameter.
16219         mono_class_proxy_vtable now also takes a remoting target as parameter, and
16220         will return the most suitable vtable for the target.
16221         Added mono_remote_class_vtable, which returns the vtable of a remote class
16222         (which can be the normal remoting vtable or the xdomain vtable).
16223         
16224         * threads.c: the xdomain invoke and dispatch wrappers must also be
16225         protected against interruptions.
16226
16227 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16228
16229         * icall.c: use memmove in BlockCopyInternal when the source and
16230         destination arrays are the same.
16231
16232 2004-11-09  Martin Baulig  <martin@ximian.com>
16233
16234         * class-internals.h (MonoGenericContainer): Removed `method' and
16235         `signature', replaced them with `is_method' and `is_signature'
16236         flags.  Added `context'.
16237
16238         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
16239         instead of a `MonoGenericContainer *'.
16240
16241         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
16242         for dynamic type parameters.
16243         (mono_metadata_load_generic_params): Setup `container->context'.
16244
16245         * reflection.c (mono_reflection_setup_generic_class): Setup
16246         `tb->generic_container->context'.
16247         (do_mono_reflection_bind_generic_parameters): Use
16248         mono_class_inflate_generic_type() to correctly inflate types,
16249         rather than using our own hack just for MONO_TYPE_VAR.
16250
16251 2004-11-09  Martin Baulig  <martin@ximian.com>
16252
16253         * class.c (mono_class_inflate_generic_method): Small fix; don't
16254         crash here.
16255
16256         * icall.c
16257         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
16258         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
16259         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
16260         (ves_icall_Type_BindGenericParameters): Likewise.
16261         (ves_icall_Type_get_IsGenericInstance): Likewise.
16262         (ves_icall_Type_GetGenericParameterPosition): Likewise.
16263         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
16264         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
16265         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
16266
16267 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16268
16269         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
16270         assembly versions and public key tokens. Fixes #69113.
16271
16272 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
16273
16274         * metadata.c: fix bug introduced with the type cache changes
16275         on 2004-11-06.
16276
16277 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
16278
16279         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
16280         the MonoClass pointer instead of the token in exception clauses.
16281         * reflection.c: updates for the above and make the code not depend
16282         on the structure of MonoExceptionClause.
16283
16284 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16285
16286         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
16287         Add support for dynamic assemblies. Fixes #69114.
16288
16289         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
16290
16291 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16292
16293         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
16294         since most only those methods use it. the code member of
16295         MonoMethodPInvoke was dead, so that can be removed too. Also,
16296         remove inline_count (again, not used), and move slot so that it
16297         can share bits with some other flags. This saves 8 bytes in the
16298         structure and gives us about 50 kb back for mcs helloworld.cs
16299
16300         * *.[ch]: Do naming changes for the above.
16301
16302         * loader.c (mono_method_get_header): Lazily init the header
16303         on first access.
16304         (mono_get_method_from_token): don't init the header here
16305         (mono_free_method): the header may never be allocated
16306
16307         Overall, this saves 150 kb of unmanaged allocations
16308         for mcs helloworld.cs. That accounts for 10% of the unmanaged
16309         memory at runtime.
16310         
16311         * loader.c, loader.h (mono_method_get_header): new accessor.
16312
16313         * *.[ch]: use the above method. Prepares us to lazily load
16314         the header.
16315
16316         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
16317         three warnings, which are actual bugs (see 69206).
16318
16319         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
16320         unused. Saves a cool 4 bytes / method.
16321
16322 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
16323
16324         * metadata.c (builtin_types): Add types for System.Object here.
16325         (mono_metadata_parse_type_full): Cache MonoType*'s that are
16326         for a class or valuetype from klass->this_arg or klass->byval_arg.
16327
16328         On mcs for a hello world, this gets us down from 21836 MonoType's
16329         to 14560.
16330
16331         (mono_metadata_free_type): Account for the above change.
16332
16333 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
16334
16335         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
16336         exception instead of asserting if name is null.
16337         (ves_icall_System_AppDomain_GetData): Ditto.
16338
16339 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
16340
16341         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
16342         EnumBuilder.
16343
16344         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
16345         Return NULL when the domain does not have entry_assembly set.
16346
16347         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
16348         Add a 'resource_modules' argument.
16349         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
16350
16351         * reflection.c (mono_reflection_create_runtime_class): Move setting
16352         of wastypebuilder here, so mono_get_type_object () returns a MonoType
16353         for enums too.
16354
16355         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
16356         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
16357         Throw an ArgumentNullException if 'ptr' is null.
16358
16359         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
16360         assemblies here. Fixes #69020.
16361
16362 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
16363
16364         * reflection.c (build_compressed_metadata): Fix the previous patch for
16365         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
16366         the stack.
16367
16368 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
16369
16370         * assembly.c (mono_assembly_names_equal): Allow a match if one of
16371         the cultures is false. Fixes #69090.
16372
16373         * reflection.c (build_compressed_metadata): Fix invalid memory read 
16374         detected by valgrind.
16375         
16376         * reflection.c (mono_reflection_get_type): Avoid triggering a 
16377         TypeResolve multiple times for the same type. Fixes #65577.
16378
16379 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
16380
16381         * marshal.c: Avoid using ldftn to call managed functions. It is
16382         much slower than just a call.
16383
16384         * reflection.c (mono_module_get_object): free the basename we
16385         allocate here from glib.
16386         
16387         * reflection.c (ensure_runtime_vtable): make sure to free
16388         overrides.  Also, we were allocating an array of MonoMethod not an
16389         array of MonoMethod*.
16390
16391         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
16392
16393         * image.c (mono_image_close): free image->guid here.
16394
16395 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
16396
16397         * reflection.c: Fix some spec conformance issues with the PE file
16398         structures so mcs compiled apps run on the Net 2.0 beta.
16399
16400 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
16401
16402         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
16403         Implement this. Fixes #67264.
16404
16405         * debug-helpers.h debug-helpers.c marshal.c: Move 
16406         mono_find_method_by_name to debug-helpers.c.
16407
16408 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
16409
16410         * object.c (mono_release_type_locks): type_initialization_hash is
16411         a GHashTable.
16412
16413         * reflection.c object.c object-internals.h: Fix warnings.
16414
16415         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
16416         without accessors. Fixes #61561.
16417
16418         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
16419         application base from the root domain if not set. Fixes #65641.
16420         (mono_runtime_init): Fix warning.
16421
16422 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16423
16424         * appdomain.c: call mono_thread_pool_init.
16425         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
16426         of worker threads based on the number of CPUs and the environment
16427         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
16428         for non-windows (windows) systems.
16429
16430 2004-10-27  Chris Toshok  <toshok@ximian.com>
16431
16432         * mono-debug-debugger.c (write_class): don't call mono_class_init
16433         here, as even with the check for (!klass->init_pending), we get
16434         into a situation where we're hitting cycles in class
16435         initialization.  Fixes #68816.
16436
16437 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
16438
16439         * image.c: Avoid overwriting values in the loaded_images_hash when an
16440         assembly is loaded multiple times. Fixes #61152.
16441
16442         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
16443         so multiple satellite assemblies for the same name can be loaded.
16444         Fixes #68259.
16445
16446         * mono_domain_assembly_preload: Actually return the loaded assembly, 
16447         not NULL.
16448
16449         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
16450         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
16451
16452         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
16453         pending finalizers are not invoked after the appdomain has been 
16454         unloaded. Fixes #67862.
16455
16456 2004-10-22  Martin Baulig  <martin@ximian.com>
16457
16458         * mono-debug-debugger.c
16459         (mono_debugger_runtime_invoke): Don't box valuetypes.
16460
16461 2004-10-22  Chris Toshok  <toshok@ximian.com>
16462
16463         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
16464         don't hide private methods.
16465
16466 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
16467
16468         * icall.c: Allows the runtime to "share" (when known) the public key
16469         token of an assembly. This avoid the need to recalculate the token 
16470         (from the public key) in managed code.
16471
16472 2004-10-21  Chris Toshok  <toshok@ximian.com>
16473
16474         * debug-helpers.c (append_class_name): argh, revert last patch.
16475         
16476 2004-10-21  Chris Toshok  <toshok@ximian.com>
16477
16478         * debug-helpers.c (append_class_name): use '+' as the delimiter,
16479         not '/', so that it matches what the debugger uses to look up
16480         methods.
16481
16482 2004-10-21  Martin Baulig  <martin@ximian.com>
16483
16484         * mono-debug-debugger.c (mono_debugger_throw_exception): New
16485         public method; this is called each time an exception is thrown and
16486         allows the debugger to use exception catch points.
16487
16488 2004-10-21  Martin Baulig  <martin@ximian.com>
16489
16490         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
16491         the stack pointer and the exception object in some struct and pass
16492         that to the debugger.
16493
16494 2004-10-21  Chris Toshok  <toshok@ximian.com>
16495
16496         * mono-debug-debugger.c (do_write_class): add instance/static
16497         event support.  We don't expose "raise" or "other" yet.
16498         (event_is_static): new method.
16499
16500 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
16501
16502         * mono-debug-debugger.c
16503         (mono_debugger_handle_exception): Remove
16504         bogus return value for fussy compilers.
16505
16506 2004-10-20  Martin Baulig  <martin@ximian.com>
16507
16508         * mono-debug-debugger.c
16509         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
16510         (mono_debugger_handled_exception): Likewise.
16511
16512 2004-10-20  Martin Baulig  <martin@ximian.com>
16513
16514         * mono-debug-debugger.h (MonoDebuggerEvent): Added
16515         MONO_DEBUGGER_EVENT_EXCEPTION.
16516
16517         * mono-debug-debugger.c (mono_debugger_handle_exception): New
16518         public function to send the debugger a notification for an
16519         exception and inform it about a catch/finally clause.
16520
16521 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
16522
16523         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
16524         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
16525         fix 2.95 build. 
16526
16527         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
16528
16529 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
16530
16531         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
16532         marshalled as [In,Out]. Fixes #58325.
16533
16534 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
16535
16536         * reflection.c (mono_method_body_get_object): Implement some fields.
16537
16538 2004-10-12  Martin Baulig  <martin@ximian.com>
16539
16540         * reflection.c (mono_reflection_bind_generic_parameters): Small
16541         fix, correctly retrieve our parent from a generic instance.
16542
16543 2004-10-12  Martin Baulig  <martin@ximian.com>
16544
16545         * metadata.c (mono_metadata_generic_param_equal): We always have
16546         an owner.
16547
16548         * class.c
16549         (mono_class_from_generic_parameter): We need to have an owner.
16550         (my_mono_class_from_generic_parameter): Likewise.
16551
16552         * reflection.c (mono_reflection_setup_generic_class): Renamed to
16553         mono_reflection_create_generic_class() and added a new
16554         mono_reflection_setup_generic_class().  
16555         (mono_reflection_initialize_generic_param): If we're a nested
16556         generic type and inherited from the containing class, set our
16557         owner to the outer class.
16558
16559 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
16560
16561         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
16562
16563         * reflection.c (mono_method_body_get_object): New function to create
16564         a MethodBody object.
16565
16566         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
16567
16568 2004-10-11  Martin Baulig  <martin@ximian.com>
16569
16570         * metadata.c (_mono_metadata_type_equal): Renamed to
16571         do_mono_metadata_type_equal() and made static.
16572
16573 2004-10-11  Martin Baulig  <martin@ximian.com>
16574
16575         * appdomain.c: Bump corlib version number to 28.
16576
16577 2004-10-10  Martin Baulig  <martin@ximian.com>
16578
16579         * class-internals.h
16580         (MonoGenericInst): Added `MonoGenericContainer *container'.
16581         (MonoGenericMethod): Likewise.
16582         (MonoGenericContext): Likewise.
16583         (MonoGenericParam): Added `MonoGenericContainer *owner'.
16584
16585         * metadata.c
16586         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
16587         (do_mono_metadata_parse_generic_inst): Likewise.
16588         (mono_metadata_parse_type_full): New public method.  This is the actual
16589         mono_metadata_parse_type() implementation - with an additional
16590         `MonoGenericContainer *' argument.
16591         (mono_metadata_parse_array_full): Likewise.
16592         (mono_metadata_parse_signature_full): Likewise.
16593         (mono_metadata_parse_method_signature_full): Likewise.
16594         (mono_metadata_parse_mh_full): Likewise.
16595         (mono_type_create_from_typespec): Likewise.
16596         (mono_metadata_interfaces_from_typedef_full): New public method;
16597         this is similar to the other _full() methods, but we take a
16598         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
16599         (mono_metadata_parse_generic_param): Take an additional
16600         `MonoGenericContainer *' argument and lookup the MonoGenericParam
16601         from that container.
16602         (mono_metadata_generic_param_equal): New static method to compare
16603         two type parameters.
16604         (_mono_metadata_type_equal): New static method; takes an
16605         additional `gboolean signature_only' argument - if true, we don't
16606         compare the owners of generic parameters.
16607         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
16608         with a TRUE argument - do a signature-only comparision.
16609
16610         * loader.c: Use the new _full() methods and pass the
16611         MonoGenericContainer to them.
16612
16613         * object-internals.h (MonoReflectionTypeBuilder): Added
16614         `MonoGenericContainer *generic_container' field.
16615         (MonoReflectionMethodBuilder): Likewise.
16616
16617 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
16618
16619         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
16620         case initial images of dynamic assemblies.
16621
16622         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
16623
16624         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
16625
16626         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
16627         length of event->other array.
16628         (typebuilder_setup_events): Ditto.
16629
16630         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
16631         'assembly_by_name' and add an 'assemblies' list.
16632
16633         * assembly.h assembly.c: Add a new search hook for determining whenever
16634         an assembly is already loaded. Use this instead of searching in the
16635         loaded_assemblies list.
16636
16637         * domain.c appdomain.c: Implement the new search hook so loaded 
16638         assemblies are now scoped by appdomain. Fixes #67727.
16639
16640 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
16641
16642         * threads.c (mono_thread_attach): Initialize synch_lock field so
16643         mono_thread_detach works again.
16644
16645         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
16646         'lib' too. Fixes #63130.
16647
16648 2004-10-06  Jackson Harper  <jackson@ximian.com>
16649
16650         * culture-info-tables.h: regenerated.
16651
16652 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
16653
16654         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
16655         implemented by other interfaces in the result. Fixes #65764.
16656         
16657         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
16658         Handle unloadable modules without crashing.
16659
16660         * image.c (load_modules): Revert the previous patch since modules must
16661         have a fixed index inside the array.
16662         
16663         * image.c (load_modules): Don't include native modules in the modules
16664         array.
16665
16666 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
16667
16668         * reflection.h: Add param_defaults field.
16669
16670         * reflection.c: Add support for parameter defaults in dynamic methods.
16671         Fixes #64595.
16672
16673         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
16674         an empty string when a type has no namespace. Fixes #64230.
16675
16676 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
16677
16678         * tabledefs.h: Added "internal" security actions to support non-CAS
16679         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
16680         Note: they do not seems to be used anymore in 2.0 (new metadata format)
16681
16682 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
16683
16684         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
16685         constructor of abstract class. Fixes #61689.
16686
16687 2004-10-04  Martin Baulig  <martin@ximian.com>
16688
16689         * class-internals.h (MonoGenericContainer): New type.
16690         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
16691         `MonoGenericContainer *generic_container'.
16692         (MonoClass): Replaced `gen_params' and `num_gen_params' with
16693         `MonoGenericContainer *generic_container'.
16694
16695         * metadata.c (mono_metadata_load_generic_params): Return a
16696         `MonoGenericContainer *' instead of a `MonoGenericParam *';
16697         removed the `num' argument.
16698
16699 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
16700
16701         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
16702         for dynamic images.
16703
16704         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
16705         machine fields.
16706
16707         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
16708
16709         * reflection.c: Save pe_kind and machine values into the generated
16710         image file.
16711
16712         * appdomain.c: Bump corlib version number.
16713
16714         * object-internals.h: Reorganize layout of LocalBuilder.
16715
16716         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
16717         New helper function.
16718
16719         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
16720         created MonoType for dynamic types. Fixes #66180.
16721
16722 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
16723
16724         * threadpool.c: the ares hashtable needs a critical section around it.
16725         this prevents some nasty segfaults
16726
16727 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
16728
16729         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
16730         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
16731         bug 67324).
16732         
16733 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
16734
16735         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
16736         
16737 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
16738
16739         * image.c: Always canonicalize image file names, to avoid loading
16740         the same assembly twice when referenced using a relative path.
16741
16742 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
16743
16744         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
16745
16746         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
16747
16748         * marshal.c: Fix warnings.
16749
16750 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
16751
16752         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
16753         attempting to marshal the delegate_trampoline as the method_addr.
16754         This patch has a static hashtable of marshalled delegates so that 
16755         we can map delegate_trampoline addresses back to delegates.  This
16756         allows a delegate passed to managed code to be passed back into native
16757         code.  Fixes #67039
16758
16759 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16760
16761         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
16762
16763         * reflection.c (method_encode_code): Align method headers properly.
16764         Fixes #66025.
16765
16766 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16767
16768         * marshal.c: In the runtime invoke wrapper, reset the abort
16769         exception if it is cached. This avoids the automatic rethrowal of 
16770         the exception after the catch of the wrapper. Also check for pending
16771         interruptions before calling the managed method. This is done using
16772         the new method emit_thread_force_interrupt_checkpoint, since the
16773         normal checkpoint method is ignored when running the invoke wrapper.
16774         * object.c: If the abort exception is rethrown, set the abort_exc
16775         field of the thread, so it will be rethrown aftere every catch.
16776         * threadpool.c: Only run an interruption checkpoint if what has been
16777         requested is a stop of the thread (aborts will be ignored).
16778         * threads.c: By default, a thread will now never be interrumped while
16779         running the runtime invoke wrapper (this ensures that runtime_invoke
16780         will always return to the caller if an exception pointer is provided).
16781         There is a new special method mono_thread_force_interruption_checkpoint()
16782         to force an interruption checkpoint even if running a protected
16783         wrapper, which is used by the same runtime invoke wrapper to do a check
16784         at a safe point.
16785
16786 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
16787
16788         * object.c, object-internals.h: Implemented mono_release_type_locks,
16789         which releases the cctor locks held by a thread.
16790         * threads.c, threads.h: In thread_cleanup, release cctor locks held
16791         by a thread. Added mono_thread_exit() method to be used to safely stop
16792         a thread.
16793
16794 2004-09-28  Raja R Harinath  <rharinath@novell.com>
16795
16796         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
16797         Move null check before dereference.  Avoid indexing beyond the end
16798         of the 'modules' array.
16799
16800 2004-09-28  Raja R Harinath  <rharinath@novell.com>
16801
16802         * metadata-internals.h (MonoImage): Add module_count field.
16803         * image.c (load_modules): Set image->module_count.
16804         (mono_image_load_file_for_image): Use image->module_count.
16805         * reflection.c (mono_image_load_module): Append to image->modules array 
16806         of dynamic assembly.
16807         (mono_module_get_object): Fix loop to actually increment index.
16808         Use image->module_count.
16809         * assembly.c (mono_assembly_load_references): Use image->module_count.
16810         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
16811         Likewise.
16812
16813 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
16814
16815         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
16816         Avoid assert on generic types.
16817
16818 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
16819
16820         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
16821
16822         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
16823
16824         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
16825         function to convert a MarshalSpec structure to its managed counterpart.
16826
16827         * reflection.c: Fix warnings.
16828         
16829         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
16830         field.
16831
16832         * icall.c (mono_create_icall_signature): Fix build.
16833
16834 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
16835
16836         * icall.c: Add MakePointType icall.
16837
16838         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
16839         warnings.
16840
16841 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16842
16843         * threadpool.c: reuse allocated slots in the queue.
16844
16845 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
16846
16847         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
16848
16849         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
16850
16851         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
16852         previous change.
16853
16854         * tabledefs.h: Add constants for pinvoke attributes BestFit and
16855         ThrowOnUnmappableChar.
16856
16857         * icall.c (ves_icall_Type_GetPacking): New icall.
16858
16859 2004-09-24  Martin Baulig  <martin@ximian.com>
16860
16861         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
16862
16863 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16864
16865         * appdomain.c:
16866         (mono_domain_set): allow setting a domain that is being unloaded.
16867         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
16868         being unloaded.
16869
16870 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16871
16872         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
16873         the GetCustomAttributes icall.
16874
16875 2004-09-23  Martin Baulig  <martin@ximian.com>
16876
16877         * object-internals.h (MonoReflectionGenericParam): Replaced
16878         'has_ctor_constraint', `has_reference_type' and `has_value_type'
16879         with `guint32 attrs'.
16880
16881 2004-09-23  Martin Baulig  <martin@ximian.com>
16882
16883         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
16884
16885 2004-09-23  Martin Baulig  <martin@ximian.com>
16886
16887         * object-internals.h (GenericParameterAttributes): New enum.
16888
16889 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
16890
16891         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
16892         
16893         * class.c (init_events): Fill out event->other field.
16894
16895         * class.c: Fix warnings.
16896
16897         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
16898
16899 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
16900
16901         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
16902         walk which doesn't supply the IL offset.
16903
16904 2004-09-22  Martin Baulig  <martin@ximian.com>
16905
16906         * reflection.c (mono_reflection_setup_internal_class): If we're
16907         System.ValueType, System.Object or System.Enum, set
16908         `klass->instance_size' and create the vtable.
16909         (mono_reflection_create_internal_class): If we're an enum type,
16910         get the base class from our current corlib.
16911
16912 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
16913
16914         * reflection.h (MonoResolveTokenError): New type.
16915
16916         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
16917         icall.
16918
16919         * icall.c: Add an 'error' argument to the ResolveToken icalls.
16920
16921 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
16922
16923         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
16924         Support also calling constructors, but only for already allocated objects.
16925
16926 2004-09-17  Geoff Norton <gnorton@customerdna.com>
16927
16928         * reflection.c (type_get_qualified_name): If the klass is null
16929         return the typename to avoid a NullRefEx.
16930         (encode_cattr_value): Get the qualified name of the boxed type,
16931         not the underlying enumtype.  Fixes #62984.
16932
16933 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
16934
16935         * marshal.c: Fix problems with previous checkin.
16936
16937 2004-09-21    <vargaz@freemail.hu>
16938
16939         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
16940         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
16941
16942         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
16943
16944 2004-09-21  Geoff Norton <gnorton@customerdna.com>
16945
16946         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
16947         should only return a type for pointers, arrays, and passbyref types.
16948         Fixes bug #63841.
16949
16950 2004-09-21  Martin Baulig  <martin@ximian.com>
16951
16952         * domain.c (mono_debugger_check_runtime_version): New public
16953         function.
16954
16955         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
16956
16957 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
16958
16959         * reflection.c: Added missing sort to the declarative security 
16960         attributes table. MS implementation stops seeing the attributes if the
16961         token number regress in the table (as shown by ildasm and permview).
16962
16963 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
16964
16965         * object-internals.h (MonoReflectionModule): Add 'token' field.
16966         
16967         * reflection.c (mono_reflection_get_token): Add support for Module
16968         and Assembly.
16969         (mono_module_get_object): Set 'token' field.
16970         (mono_module_file_get_object): Set 'token' field.
16971
16972         * icall.c: Add new Assembly and Module icalls.
16973
16974         * appdomain.c: Bump corlib version.
16975
16976 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
16977
16978         * loader.h loader.c class.h class.c: Add helper functions for obtaining
16979         tokens of metadata objects.
16980
16981         * reflection.h reflection.c (mono_reflection_get_token): New function
16982         to obtain the token of a metadata object.
16983
16984         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
16985
16986 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16987
16988         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
16989         
16990         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
16991
16992 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
16993
16994         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
16995         * object-internals.h: Added 3 MonoArray* members to MonoReflection
16996         AssemblyBuilder to access the permissions set in the class lib.
16997         * reflection.c: Added security attributes encoding step in 
16998         mono_image_build_metadata.
16999         * tabledefs.h: Added new security actions defined in 2.0:
17000         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
17001
17002 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
17003
17004         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
17005         macro parameter.
17006
17007 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
17008  
17009         * locales.c: nullify the ICU_collator member of CompareInfo when it is
17010           finalized. There where random SIGSEVs at program termination, when
17011           an object being finalized was trying to do a string comparison and
17012           the current culture was already finalized.
17013  
17014 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17015
17016         * threads.c: call thread_cleanup before finishing the thread if we get
17017         there.
17018
17019 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
17020
17021         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
17022         assemblies from the parent. Fixes #65665.
17023
17024 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
17025
17026         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
17027         modifiers.
17028
17029 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
17030
17031         * reflection.h: add prototype for mono_get_dbnull_object
17032         * reflection.c: add prototypes for get_default_param_value_blobs 
17033         and mono_get_object_from_blob for fussier compilers
17034
17035 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
17036  
17037         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
17038         false deadlock checks in class initialization.
17039  
17040 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17041
17042         * image.c (mono_image_addref): Fix comment.
17043
17044         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
17045         possible.
17046
17047 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
17048
17049         * reflection.c (mono_param_get_objects): Modified to return
17050         ParameterInfo.DefaultValue object.
17051
17052         (get_default_param_value_blobs):
17053         (mono_get_object_from_blob):
17054         (mono_get_dbnull_object): New helper routines. 
17055
17056         * object.c (mono_get_constant_value_from_blob): New helper routine
17057         carved out from get_default_field_value ()
17058
17059         * object-internals.h (mono_get_constant_value_from_blob): Added
17060         function declaration.
17061
17062 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17063
17064         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
17065         referenced assemblies. Fixes #62135.
17066
17067         * exception.h exception.c (mono_get_exception_file_not_found2): New
17068         helper function.
17069
17070 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17071
17072         * class.h class.c: Add mono_type_get_underlying_type ().
17073
17074 2004-09-09  Geoff Norton <gnorton@customerndna.com>
17075
17076         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
17077         Fix GetTypes() to support dynamically created assemblies.
17078
17079 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
17080
17081         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
17082         
17083         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
17084         previous patch.
17085
17086         * reflection.h reflection.c loader.c: Allow dynamic construction of
17087         pinvoke methods. Fixes #65571.
17088         
17089         * reflection.c (mono_reflection_get_type): Revert previous change since
17090         it causes regressions.
17091
17092 2004-09-08  Martin Baulig  <martin@ximian.com>
17093
17094         * class.c (class_compute_field_layout): Don't call
17095         mono_class_layout_fields() for open generic instances.
17096
17097 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
17098         * threads.c appdomain.c: fix typo in GC macro
17099
17100 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17101
17102         * threads.c: don't call mono_thread_detach() in start_wrapper(),
17103         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
17104
17105 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
17106
17107         * image.c (mono_image_close): Applied patch from 
17108         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
17109         assembly is loaded multiple times from data.
17110         
17111         * image.c (mono_image_open): Fix warning.
17112
17113 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
17116         once. Fixes #58334.
17117         
17118         * reflection.c (mono_reflection_create_runtime_class): Initialize
17119         klass->nested_classes. Fixes #61224.
17120
17121 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17122
17123         * threads.c: sched_yield() on exit, to allow threads to quit.
17124
17125 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17126
17127         * object.c (mono_unhandled_exception): Remove leftover debug code.
17128
17129 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
17130
17131         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
17132
17133 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17134
17135         * marshal.c (emit_marshal_array): Really null terminate string arrays.
17136         
17137         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
17138
17139 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * marshal.c (emit_marshal_array): Null terminate string arrays.
17142         
17143         * marshal.c (raise_auto_layout_exception): Fix warning.
17144
17145         * reflection.c (mono_param_get_objects): Initialize the default value
17146         with DBNull.Value, not null. Fixes #62123.
17147
17148 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
17149
17150         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
17151         throw an exception with a cute explanation.
17152
17153 2004-09-06  Dick Porter  <dick@ximian.com>
17154
17155         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
17156         Close the new process's thread handle, as we don't use it.  The
17157         handle stays around forever otherwise.
17158
17159 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17160
17161         * object.c (arith_overflow): Fix warning.
17162
17163         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
17164         calling conventions in method refs. Fixes #65352.
17165
17166         * reflection.c: Fix warnings.
17167
17168 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
17169
17170         * icall.c: Add a new icall for Array.Clear
17171
17172 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
17173
17174         * object.c: When allocating an array, we have to throw
17175         an overflow exception if any of the lengths are < 0.
17176
17177 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17178
17179         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
17180         properly. Also move implementation of string array marshalling to 
17181         managed code. Fixes #42316.
17182
17183 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17184
17185         * assembly.c: provide more information when loading an assembly fails.
17186
17187 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17188
17189         * filewatcher.c: don't expect the development fam package to be
17190         installed.
17191
17192 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
17193
17194         * marshal.c: Make a copy of the signature cookie since it will be
17195         freed by the caller.
17196         
17197         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
17198
17199         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
17200
17201         * metadata.c (mono_metadata_free_marshal_spec): New function to free
17202         marshal specs.
17203
17204         * marshal.c: More refactoring.
17205         
17206         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
17207         smaller functions.
17208
17209 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
17210
17211         * object.c: In mono_message_invoke, fill the output parameter array after
17212           calling the managed method (it was done before the call). This fixes
17213           bug #59299.
17214
17215 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17216
17217         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
17218         as well.
17219
17220 2004-09-02  Martin Baulig  <martin@ximian.com>
17221
17222         * class.c (mono_class_instance_size): Don't allow generic type
17223         definitions or open generic instances.
17224         (mono_class_array_element_size): If we're a value type, call
17225         mono_class_instance_size() on the original class.
17226
17227         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
17228         handle generic instances.
17229
17230         * mono-debug-debugger.c (write_type): Handle generic instances
17231         like classes.
17232
17233 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17234
17235         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
17236         the allocation request fails. Fixes #65089.
17237
17238         * object.c (mono_runtime_free_method): Do not call mono_free_method.
17239         
17240         * object.c (mono_runtime_free_method): New function to free a dynamic
17241         method.
17242
17243         * marshal.c (mono_delegate_free_ftnptr): New function to free the
17244         delegate trampoline.
17245
17246         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
17247         with hasthis as dynamic,
17248
17249         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
17250
17251         * domain.c (mono_jit_info_table_remove): New function to remove an
17252         entry from the jit info table.
17253
17254         * class-internals.h (MonoMethod): Add 'dynamic' field.
17255
17256         * loader.c: Fix warnings.
17257
17258 2004-09-01  Martin Baulig  <martin@ximian.com>
17259
17260         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
17261         instead of mono_debugger_lock() because the latter one is a no-op
17262         unless running in the debugger.
17263
17264 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
17265
17266         * class.c (class_compute_field_layout): Classes with auto-layout or
17267         reference fields are not blittable.
17268         
17269 2004-09-01  Dick Porter  <dick@ximian.com>
17270
17271         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
17272         mono_image_get_filename() to get the assembly location.
17273
17274         * icall.c:
17275         * metadata.h: Fix compile warnings
17276
17277 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
17278
17279         * class.c (class_compute_field_layout): System.Object is blittable.
17280
17281         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
17282         as in/out. Fixes #59909.
17283
17284 2004-09-01  Martin Baulig  <martin@ximian.com>
17285
17286         * metadata.h (MONO_TYPE_ISREFERENCE): Call
17287         mono_metadata_generic_inst_is_valuetype() if we're a generic
17288         instance to check whether our underlying type is a reference type.
17289
17290 2004-09-01  Martin Baulig  <martin@ximian.com>
17291
17292         * metadata.c (mono_type_size): If we're a generic instance, call
17293         mono_class_value_size() for value types.
17294
17295 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
17296
17297         * marshal.c: Implement more custom marshalling functionality. Fixes
17298         #64915.
17299
17300 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17301
17302         * mono-debug.c, debug-mono-symfile.c: add some locking love.
17303
17304 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17305
17306         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
17307
17308         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
17309
17310         * icall.c: Fix some warnings.
17311
17312         * threads.c (abort_appdomain_thread): Fix unref errors.
17313         (mono_thread_current): Fix THREAD_DEBUG define.
17314
17315 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17316
17317         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
17318
17319         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
17320
17321 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
17322
17323         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
17324         string arrays.
17325
17326 2004-08-28  Martin Baulig  <martin@ximian.com>
17327
17328         * metadata.c
17329         (mono_metadata_generic_inst_is_valuetype): New public function.
17330
17331         * metadata.h (MONO_TYPE_ISSTRUCT): Call
17332         mono_metadata_generic_inst_is_valuetype() if we're a generic
17333         instance to check whether our underlying type is a valuetype.
17334
17335 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
17336
17337         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
17338         #63768.
17339
17340 2004-08-25  Martin Baulig  <martin@ximian.com>
17341
17342         * loader.c (mono_get_method_from_token): Abstract methods can also
17343         be generic and thus have type parameters.
17344
17345         * metadata-internals.h
17346         (MonoDynamicImage): Added `GPtrArray *gen_params'.
17347
17348         * reflection.c (mono_image_get_generic_param_info): Don't create a
17349         metadata row, just add an entry to the `gen_params' array.
17350         (build_compressed_metadata): Sort the `gen_params' array and then
17351         actually create the metadata.
17352
17353 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17354
17355         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
17356
17357 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
17358
17359         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
17360
17361 2004-08-24  Martin Baulig  <martin@ximian.com>
17362
17363         * class.cs (mono_class_is_subclass_of): Like an interface, a
17364         generic instance also derives from System.Object.
17365
17366 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
17367
17368         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
17369         custom modifiers to be in any order. Fixes #61990.
17370
17371 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
17372
17373         * object.c: Register mono_object_new_fast icall.
17374         
17375         * object.c (mono_class_get_allocation_ftn): Return to calling
17376         mono_object_new_fast, since it seems faster to compute the object 
17377         size in unmanaged code than passing it as a parameter.
17378
17379         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
17380
17381         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
17382         this function with Boehm as the oom handler, so we don't have to check
17383         the result of GC_malloc.
17384
17385         * object.c: Remove checks for oom.
17386
17387         * object.h object.c (mono_class_get_allocation_ftn): New function to
17388         return the icall which can be used to allocate an instance of a given
17389         class. 
17390
17391         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
17392
17393         * class-internals.h: Add 'enabled' field.
17394
17395 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
17396
17397         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
17398
17399 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
17400         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
17401         value 0x0010.
17402
17403 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
17404
17405         * appdomain.c: use the Tls function for appdomain too,
17406         at Zoltan's request. Actually return in mono_context_get
17407
17408         * appdomain.c, profiler.c, threads.c: use __thread
17409
17410 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
17411
17412         * appdomain.c threads.c: Call GC_CreateThread on windows.
17413
17414         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
17415         multiple libraries since this don't work on windows.
17416
17417 2004-08-18  Martin Baulig  <martin@ximian.com>
17418
17419         * class-internals.h
17420         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
17421         MonoMethodHeader.
17422
17423         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
17424         MonoMethodNormal since we also need it for abstract and interface
17425         methods.
17426
17427         * reflection.c
17428         (build_compressed_metadata): Sort the GenericParam table.
17429         (mono_image_create_token): Added `gboolean create_methodspec'
17430         argument; this is false when generating a MethodImpl token.
17431         (reflection_methodbuilder_to_mono_method): Abstract and interface
17432         methods may also have generic parameters.
17433
17434 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
17435
17436         * appdomain.c: thread local alloc
17437
17438 2004-08-17  Martin Baulig  <martin@ximian.com>
17439
17440         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
17441
17442         * icall.c
17443         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
17444         argument.
17445
17446         * class.c (mono_type_get_full_name): New public function.
17447         (mono_type_get_name): Don't include the type arguments.
17448
17449 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
17450
17451         * Makefile.am: Build static versions of libmetadata and libmonoruntime
17452         for inclusion into the mono executable.
17453
17454 2004-08-16  Martin Baulig  <martin@ximian.com>
17455
17456         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
17457         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
17458
17459 2004-08-14  Martin Baulig  <martin@ximian.com>
17460
17461         * class.c (dup_type): Also copy the `byref' field.
17462
17463 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
17464
17465         * reflection.c (create_dynamic_mono_image): Revert the last change 
17466         since it breaks bootstrap.
17467
17468 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
17469
17470         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
17471
17472         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
17473         not free them with g_free.
17474
17475 2004-08-11  Martin Baulig  <martin@ximian.com>
17476
17477         * reflection.c (mono_reflection_setup_internal_class): Also call
17478         mono_class_setup_mono_type() if we already have a `tb->type.type'.
17479
17480 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
17481
17482         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
17483         called during default (first) AppDomain creation. Keep track of
17484         Evidence when loading assemblies.
17485
17486 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17487
17488         * opcodes.c, opcodes.h: reduce runtime relocations.
17489
17490 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
17491
17492         * culture-info.h, locales.c: fixes and chages to sue the new
17493         optimized format of the locale data.
17494         * culture-info-tables.h: regenerated.
17495
17496 2004-08-06  Geoff Norton <gnorton@customerdna.com>
17497         
17498         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
17499
17500 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
17501
17502         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
17503         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
17504         * domain-internals.h: icall declaration.
17505         * icall.c: icall registration.
17506         * object-internals.h: New fields in MonoAssembly for CAS.
17507
17508 2004-08-05  Duncan Mak  <duncan@ximian.com>
17509
17510         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
17511         CEE_LDELEM_ANY.
17512
17513 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
17514
17515         * reflection.c: fix to deal with object[] arrays in custom ctors
17516         (bug #62550).
17517
17518 2004-08-05  Martin Baulig  <martin@ximian.com>
17519
17520         * class.c (mono_class_array_element_size): Added support for
17521         generic instances and correctly handle "recursive" types.
17522
17523 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
17524
17525         * assembly.c: Fix warnings.
17526
17527 2004-08-04  Martin Baulig  <martin@ximian.com>
17528
17529         * class.c
17530         (mono_type_get_name_recurse): Added `gboolean include_arity'
17531         argument specifying whether or not we should include the generic
17532         arity in the type name.
17533         (_mono_type_get_name): New static function.
17534         (mono_class_setup_vtable): If we're a generic instance, don't
17535         include the generic arity in the names of explicit method
17536         implementations.        
17537
17538 2004-08-03  Martin Baulig  <martin@ximian.com>
17539
17540         * class.c (mono_type_get_name_recurse): Enclose the generic type
17541         arguments in `<', '>'.
17542
17543 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
17544
17545         * gc.c: make GC warning messages use the trace API, they are just
17546         noise to most of the users.
17547
17548 2004-08-03  Martin Baulig  <martin@ximian.com>
17549
17550         * debug-mono-symfile.c (read_string): Correctly read the string.
17551
17552 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
17553
17554         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
17555         
17556         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
17557         icalls.
17558         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
17559
17560 2004-07-30  Martin Baulig  <martin@ximian.com>
17561
17562         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
17563         Reflect latest symbol writer changes.   
17564
17565 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
17566
17567         * object.c: always create an object if null is passed
17568         to Invoke() where a valuetype is expected.
17569
17570 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
17571
17572         * marshal.c (mono_marshal_init): make managed
17573         signatures match native ones better for 64bits.
17574
17575 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17576
17577         * appdomain.c: hack to build correctly the private bin path on windows.
17578         Fixes bug #61991.
17579
17580 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
17581
17582         * assembly.c: Load mscorlib from the correct framework directory
17583           (mono/<version>/mscorlib.dll).
17584         * appdomain.h: Added prototypes for new functions.
17585         * internals.h: Added some prototypes.
17586         * domain.c: When initializing the runtime, get from the executable and
17587           the configuration files the runtime version that the app supports.
17588           Added support methods for reading app.exe.config. Added list of versions
17589           supported by the JIT. Added two new methods: mono_init_from_assembly,
17590           which initializes the runtime and determines the required version from
17591           the provided exe file, and mono_init_version, which initializes
17592           the runtime using the provided version.
17593         * icall.c: Get machine.config from version-specific directory.
17594         * reflection.c: When generating an image, embed the version number
17595           of the current runtime.
17596
17597 2004-07-28  Dick Porter  <dick@ximian.com>
17598
17599         * socket-io.c
17600         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
17601         returned sockaddr size before creating the remote address object.
17602         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
17603         61608.
17604
17605 2004-07-28  Dick Porter  <dick@ximian.com>
17606
17607         * locales.c (string_invariant_compare_char): Fix invariant char
17608         compares between upper and lower cases.  Fixes bug 61458.
17609
17610 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
17611         
17612         * marshal.c: actually cache stelem.ref wrappers.
17613         
17614 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
17615
17616         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
17617         sections and remove the mono_cli_rva_map () function.
17618
17619 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17620
17621         * debug-mono-symfile.c: fix one more endianess issue, from a patch
17622         by Geoff Norton (<gnorton@customerdna.com>).
17623
17624 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
17625
17626         * class.c: fix class loads for pointer types (typeof(int) !=
17627         typeof(int*)).
17628
17629 2004-07-27  Martin Baulig  <martin@ximian.com>
17630
17631         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
17632         reading the debugging information from an external ".mdb" file.
17633
17634 2004-07-24  Martin Baulig  <martin@ximian.com>
17635
17636         * reflection.c (mono_image_get_type_info): Only write a class
17637         layout entry if we actually have a size or a packing size.
17638
17639 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
17640
17641         * reflection.c (type_get_fully_qualified_name): 
17642         insert cast to get type checking of ?: with non-gcc compilers
17643
17644 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
17645
17646         * rand.c: use g_getenv for both lookups of
17647         MONO_EGD_SOCKET
17648
17649 2004-07-17  Martin Baulig  <martin@ximian.com>
17650
17651         * reflection.c (mono_reflection_bind_generic_method_parameters):
17652         Set `gmethod->reflection_info'.
17653
17654 2004-07-17  Martin Baulig  <martin@ximian.com>
17655
17656         * class.c (mono_class_create_from_typedef): Insert the newly
17657         created class into the hash table before computing the interfaces
17658         since we could be called recursively.
17659
17660 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
17661
17662         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
17663         function to implement stelem.ref in managed code
17664         * class-internals.h, debug-helpers.c: a new wrapper type
17665         for the above.
17666
17667 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
17668
17669         * gc.c: allow GC handles to work even when no GC is compiled in.
17670         Fix part of bug #61134 (GetAddrOfPinnedObject).
17671
17672 2004-07-13  Peter Williams  <peter@newton.cx>
17673  
17674         * process.c (complete_path): Make sure we don't attempt to execute
17675         directories.
17676  
17677 2004-07-12  Geoff Norton <gnorton@customerdna.com>
17678
17679         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
17680           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
17681           and will add/subtract the hour if needed
17682
17683 2004-07-12  Martin Baulig  <martin@ximian.com>
17684
17685         * reflection.c (mono_field_get_object): If we have
17686         `field->generic_info', take the attributes from
17687         `field->generic_info->generic_type'.    
17688
17689 2004-07-12  Martin Baulig  <martin@ximian.com>
17690
17691         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
17692         This function must be called before initializing the runtime.
17693         (mono_debug_init_1): New function; call this after initializing
17694         the runtime, but before loading the assembly.  It tells the
17695         debugger to load corlib and the builtin types.
17696
17697         * mono-debug-debugger.c: Did some larger changes in the debugging
17698         code; support recursive class declarations, make sure we actually
17699         add all classes.
17700
17701 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17702
17703         * debug-helpers.c: undo my previous patch and fixed the real issue in
17704         ../mini/exceptions-x86.c
17705
17706 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17707
17708         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
17709         when no HOME env. variable was set and a NullRef was thrown in a .cctor
17710         called from other .cctors.
17711
17712 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
17713
17714         * loader.c: Removed the mono_loader_wine_init hack now that we are
17715         doing a managed version of Windows.Forms.
17716
17717 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
17718
17719         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
17720         threadpool.c, threads.c: remove static data from rootset.
17721
17722 2004-07-09  Dick Porter  <dick@ximian.com>
17723
17724         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
17725         Don't do any more processing if the matched length was 0.  It was
17726         increasing the size of the string before.  Fixes bug 61167.
17727
17728 2004-07-09  Dick Porter  <dick@ximian.com>
17729
17730         * socket-io.h:
17731         * socket-io.c
17732         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17733         Add support for SO_PEERCRED if its available.
17734
17735 2004-07-09  Peter Bartok <pbartok@novell.com>
17736         * loader.c: winelib.exe.so error message is now only displayed if
17737         MONO_DEBUG is set. To help us avoid questions when people are trying
17738         out the new Managed.Windows.Forms.
17739
17740 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
17741
17742         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
17743         for isinst and castclass wrappers.
17744
17745         * class-internals.h icall.c: Move registration and lookup of JIT icalls
17746         to libmetadata from the JIT, so they could be used by the marshalling
17747         code and the interpreter.
17748
17749         * marshal.c: Register marshalling related JIT icalls here instead of
17750         in mini.c. Use CEE_MONO_ICALL instead of the family of 
17751         CEE_MONO_PROC<x> opcodes to call marshalling functions.
17752
17753         * metadata.h: Remove unneeded marshalling conversions.
17754
17755         * opcodes.c: Update for new opcodes.
17756         
17757 2004-07-08  Martin Baulig  <martin@ximian.com>
17758
17759         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
17760         (mono_debug_get_domain_data): Make this function static.
17761
17762 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
17763
17764         * gc.c, object.h: add nice GC handle API for embedders.
17765
17766 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
17767
17768         * reflection.c: more changes for the new api
17769
17770         * object.c: When we reflect on a field w/ a constant value, it
17771         will not have a memory location, so we must access metadata. Also,
17772         allow easier reading of strings so that we can read them from
17773         the constant data.
17774
17775         * class.c (mono_class_layout_fields): no need for literal fields here.
17776
17777         * class-internals.h: api changes for const fields
17778
17779         * icall.c (ves_icall_get_enum_info): use new apis for const fields
17780
17781 2004-07-06  Martin Baulig  <martin@ximian.com>
17782
17783         * mono-debug.h: Increment version number to 44.
17784
17785         * mono-debug.c (mono_debug_add_wrapper): The second argument is
17786         now a gpointer, rewrote this whole method.
17787
17788         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
17789         function.  Add information about the wrapper in a new "misc table".
17790
17791         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
17792         for the new misc table.
17793
17794 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
17795
17796         * metadata-internals.h image.c: Add a cache for helper signatures.
17797
17798         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
17799
17800 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
17801
17802         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
17803         delegates from a delegate. Fixes #61033.
17804         
17805         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
17806         marshalling of stringbuilder arrays. Fixes #59900.
17807
17808 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
17809
17810         * icall.c: Add EnumBuilder:setup_enum_type icall.
17811
17812 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
17813
17814         * icall.c: Added a new icall for the property version of
17815         OffsetOfStringData.
17816
17817 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
17818
17819         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
17820         it has a constant size across platforms.
17821
17822         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
17823         stack trace.
17824
17825 2004-06-29  Martin Baulig  <martin@ximian.com>
17826
17827         * mono-debug.c (mono_debug_add_method): Protect the whole function
17828         in mono_debugger_lock(), not just parts of it.
17829
17830 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17831
17832         * reflection.c: make sure padding bytes in heaps are zeroed.
17833
17834 2004-06-24  David Waite  <mass@akuma.org>
17835
17836         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
17837         image.c, loader.c, locales.c, marshal.c, metadata.c,
17838         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
17839         string-icalls.c, threads.c: change to C90-style comments from C99 /
17840         C++ -style
17841
17842 2004-06-24  Dick Porter  <dick@ximian.com>
17843
17844         * threads.c
17845         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
17846         return createdNew.  Fixes bug 60412.
17847
17848         * threads-types.h: 
17849         * icall.c: Add createdNew parameter to CreateMutex icall
17850
17851 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17852
17853         * reflection.c, object-internals.h: save default value in params.
17854
17855 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17856
17857         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
17858         no need to build a new path combining that with the application base.
17859         Fixes bug #60442.
17860
17861 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
17862
17863         * reflection.c: fixed minor standard compliance issues.
17864
17865 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
17866
17867         * reflection.c: fixed issue with encoding some custom attributes
17868         (arrays in properties and fields, bug #60411).
17869
17870 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17871
17872         * reflection.c: fix start address when copying the public key token.
17873
17874 2004-06-23  Martin Baulig  <martin@ximian.com>
17875
17876         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
17877         the `exc' object in a static object to put it into the GC's root set.
17878
17879 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
17880
17881         * reflection.c: make mono_reflection_setup_internal_class ()
17882         callable a second time to setup a new parent class.
17883
17884 2004-06-23  Dick Porter  <dick@ximian.com>
17885
17886         * threads.c: Check for WAIT_IO_COMPLETION return values.
17887
17888 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
17889
17890         * appdomain.c: Removed the g_free on the public key token. Now copy 
17891         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
17892         * assembly.c: Added public key token string value when loading 
17893         assemblies. Fix bug #60439.
17894         * icall.c: Added missing informations (like public key) in 
17895         GetReferencedAssemblies. Fix #60519.
17896         * image.h: Changed definition for public key token from const char*
17897         public_tok_value to guchar public_key_token [17];
17898         * reflection.c: Updated for changes to public key token.
17899
17900 2004-06-22  Lluis Sanchez Gual
17901
17902         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
17903         for the field in base classes.
17904
17905 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
17906
17907         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
17908         mark headers as not supported, they are installed only for use by the
17909         debugger.
17910
17911 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
17912
17913         * *.c, *.h: avoid namespace pollution in public headers.
17914
17915 2004-06-21  Martin Baulig  <martin@ximian.com>
17916
17917         * exception.c (mono_get_exception_security): It's in
17918         "System.Security", not in "System".
17919
17920         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
17921         the exception classes.
17922
17923 2004-06-21  Martin Baulig  <martin@ximian.com>
17924
17925         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
17926         Protect the exception object from being finalized.
17927
17928 2004-06-21  Martin Baulig  <martin@ximian.com>
17929
17930         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
17931         public function.
17932
17933 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
17934
17935         * reflection.c: Load the assembly in mono_reflection_type_from_name,
17936         if it was not loaded before. Fix parts of #60439.
17937
17938 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
17939
17940         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
17941         code that was broken since Ben's change: wrappers are now
17942         dependent on the method signature only again.
17943
17944 2004-06-21  Martin Baulig  <martin@ximian.com>
17945
17946         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
17947         added interface support.
17948
17949 2004-06-21  Martin Baulig  <martin@ximian.com>
17950
17951         * class.c (mono_vtable_get_static_field_data): New public method.
17952
17953 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
17954
17955         * filewatcher.c : Windows build fix to be compliant with API changes.
17956
17957 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17958
17959         * class.h, class.c: more accessors.
17960         * metadata.h, metadata.c: prepare for hiding MonoType and
17961         MonoMethodSignature: people should use the accessors from now on
17962         outside of the tree.
17963
17964 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17965
17966         * *.c, *.h: more API cleanups.
17967
17968 2004-06-18  Jackson Harper  <jackson@ximian.com>
17969
17970         * assembly.c: Trace loading assemblies.
17971         * loader.c: Trace loading native libraries.
17972         * mono-config.c: Trace loading config files.
17973         
17974 2004-06-18  Dick Porter  <dick@ximian.com>
17975
17976         * locales.c: Tell ICU the lengths of strings, it can cope with
17977         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
17978
17979 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
17980
17981         * image.c: swapped name/filename;
17982
17983 2004-06-18  Martin Baulig  <martin@ximian.com>
17984
17985         * mono-debug-debugger.c (write_class): Write the parent class at
17986         the end of the header.
17987
17988 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
17989
17990         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
17991
17992 2004-06-17  Raja R Harinath  <rharinath@novell.com>
17993
17994         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
17995         (bundle_obj): New conditional define.
17996         (BUILT_SOURCES): Remove.
17997         ($(bundle_srcs)): Make parallel-make safe.
17998         (libmonoruntime_la_LIBADD): Make unconditional.
17999         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
18000         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
18001
18002 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
18003
18004         * culture-info-tables.h: It was inconsistent with the latest
18005           supp info files.
18006
18007 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
18008
18009         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
18010         be loaded.
18011
18012         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
18013         with gcc 2.95.
18014
18015 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18016
18017         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
18018         cleaned up public header threads.h.
18019
18020 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18021
18022         * Makefile.am, *.c, *.h: more API cleanups.
18023
18024 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18025
18026         * Makefile.am: removed monosn from compilation.
18027         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
18028         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
18029         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
18030         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
18031         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
18032         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
18033
18034 2004-06-15  Jackson Harper  <jackson@ximian.com>
18035
18036         * assembly.c: Make locales lower case when searching the GAC for
18037         assemblies. gacutil will always make locales lowercase when
18038         installing so this effectively makes them case insensitive.
18039         
18040 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
18041
18042         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
18043         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
18044           parameter which allows to choose whether the wait can be interrupted or 
18045           not. Also added the method mono_monitor_enter(), which locks the monitor
18046           using an infinite wait and without allowing interruption.
18047           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
18048           interrupted.
18049         * object.h: Added new fields in MonoThread. suspend_event holds the event
18050           used to susped/resume the thread. synch_lock is the lock object to use for
18051           modifying the thread state.
18052         * threads.c: Use the new synch_lock object for locking, instead of "this",
18053           which can generate deadlocks.
18054           Moved thread state change in Thread.Sleep and Thread.Join from managed
18055           to unmanaged code. This avoids a deadlock when the thread was suspended
18056           just after acquiring the thread lock.
18057           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
18058           Implemented Thread.Suspend using an event instead of ThreadSuspend,
18059           which is not fully implemented in the io-layer.
18060         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
18061
18062 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
18063
18064         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
18065         threads-types.h: more API cleanups.
18066
18067 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18068
18069         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
18070         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
18071         threadpool.c, threads.c: first pass at the exported API cleanup.
18072
18073 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18074
18075         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
18076
18077 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18078
18079         * icall.c: added internalGetHome.
18080
18081 2004-06-14  Dick Porter  <dick@ximian.com>
18082
18083         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
18084         possible to return successfully when '.' or '..' were the only
18085         entries in a directory, but were skipped.  The MonoIOStat was not
18086         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
18087         Fixes bug 59574.
18088
18089 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18090
18091         * reflection.c: make binaries run on .Net 1.1 by default.
18092
18093 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18094
18095         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
18096
18097 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
18098
18099         * marshal.c: keep track of struct size with explicit layout
18100         (bug #59979).
18101
18102 2004-06-12  Martin Baulig  <martin@ximian.com>
18103
18104         * mono-debug-debugger.c: Comment out a debugging g_message().
18105
18106 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
18107
18108         * reflection.c, reflection.h: do not free custom attrs that are cached.
18109         * icall.c: use braces to make code clearer.
18110
18111 2004-06-11  Martin Baulig  <martin@ximian.com>
18112
18113         * class.h (MonoInflatedField): New type.
18114         (MonoClassField): Replaced `MonoType *generic_type' with
18115         `MonoInflatedField *generic_info'.
18116
18117         * icall.c
18118         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
18119
18120 2004-06-11  Martin Baulig  <martin@ximian.com>
18121
18122         * reflection.c (mono_image_create_method_token): Correctly encode
18123         varargs methods.
18124
18125 2004-06-11  Martin Baulig  <martin@ximian.com>
18126
18127         * metadata.c (mono_metadata_parse_method_signature): When parsing
18128         a MethodDef which has VarArgs, also set sentinelpos if we don't
18129         have any parameters.
18130
18131 2004-06-11  Martin Baulig  <martin@ximian.com>
18132
18133         * verify.c (mono_method_verify): In CEE_CALL, use
18134         mono_method_get_signature() to get the method's signature, unless
18135         we're a PInvoke method.
18136
18137 2004-06-10  Jackson Harper  <jackson@ximian.com>
18138
18139         * assembly.c: Use <path>/lib/mono/gac for the extra paths
18140         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
18141         logical name as the supplied path is just a prefix to the gac not
18142         the direct path to it.
18143         
18144 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
18145
18146         * reflection.c: make the token for a created method match
18147         the token of the MethodBuilder it was created from
18148         (IKVM requires this behaviour now).
18149
18150 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
18151
18152         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
18153         reflection.c, socket-io.c: leak fixes.
18154
18155 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18156
18157         * icall.c: handle sentinel pos in vararg methods in position different
18158         from 0.
18159
18160 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18161
18162         * culture-info-tables.h: freshly generated.
18163
18164 2004-06-09  Martin Baulig  <martin@ximian.com>
18165
18166         * loader.c (mono_get_method_constrained): Call `mono_class_init
18167         (constrained_class)'.   
18168
18169 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
18170
18171         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
18172         any methods. Fixes #59629.
18173
18174 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
18175
18176         * culture-info-tables.h: reflecting locale-builder updates.
18177
18178 2004-06-08  Dick Porter  <dick@ximian.com>
18179
18180         * object.h:
18181         * locales.c: Fixed compile warnings, including a real bug in
18182         CompareInfo_internal_compare.
18183         
18184 2004-06-08  Dick Porter  <dick@ximian.com>
18185
18186         * locales.c
18187         (ves_icall_System_Globalization_CompareInfo_internal_index):
18188         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
18189         Double-check the resuls of usearches, because ICU currently
18190         ignores most of the collator settings here.  Fixes bug 59720.
18191         
18192 2004-06-08  Dick Porter  <dick@ximian.com>
18193
18194         * locales.c
18195         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
18196         Fix memory leak and segfault-causing typo.  No idea how this one
18197         lasted so long without being noticed.
18198
18199 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
18200
18201         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
18202         any methods. Fixes #59629.
18203
18204 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18205
18206         * assembly.c:
18207         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
18208         own the critical section before). Removed dead code (that's done
18209         in the preload hook).
18210
18211         (mono_assembly_load_with_partial_name): call the preload hook.
18212
18213 2004-06-08  Martin Baulig  <martin@ximian.com>
18214
18215         * metadata.c (mono_metadata_signature_alloc): Default
18216         `sentinelpos' to -1.
18217
18218         * reflection.c (mono_image_get_array_token): Likewise.
18219
18220 2004-06-08  Martin Baulig  <martin@ximian.com>
18221
18222         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
18223
18224         * metadata.c (mono_metadata_parse_method_signature): When parsing
18225         a MethodDef which has VarArgs, set sentinelpos.
18226
18227         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
18228         `gint16' since we're using -1 for non-varargs methods.
18229
18230         * reflection.c
18231         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
18232         (method_encode_signature): Added varargs support.
18233         (method_builder_encode_signature): Likewise.
18234         (mono_image_get_varargs_method_token): New static method.
18235         (mono_image_create_method_token): New public method; this is
18236         called via an icall instead of mono_image_create_token() when
18237         calling a varargs method.       
18238
18239 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
18240
18241         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
18242
18243 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
18244
18245         * culture-info-tables.h : Reflecting the latest locale-builder that
18246           fixed empty array representation ({} to {0}).
18247
18248 2004-06-07  Jackson Harper  <jackson@ximian.com>
18249
18250         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
18251         looking up extra gac paths. This allows MONO_GAC_PATH to act
18252         exactly like a prefix.
18253         
18254 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
18255
18256         * reflection.c (mono_reflection_type_from_name): Make a copy of the
18257         type name before modifying it. Fixes #59405.
18258
18259 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
18260
18261         * culture-info.h: added fields for "all datetime patterns".
18262         * locales.c: (  ves_icall_System_Globalization_CultureInfo
18263           _construct_datetime_format ()): fill xxx_patterns fields.
18264         * object.h: added fields for "all datetime patterns" to
18265           MonoDateTimeFormatInfo.
18266         * culture-info-tables.h: reflecting locale-builder updates.
18267
18268 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
18269
18270         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
18271         the event has no add and remove methods. Fixes #59629.
18272
18273 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
18274
18275         * object.c: Fixed possible integer overflow when allocating large
18276         strings.
18277
18278 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
18279
18280         * culture-info-tables.h: reflecting locale-builder updates.
18281
18282 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
18283
18284         * culture-info-tables.h: reflecting locale-builder updates.
18285
18286 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
18287
18288         * culture-info-tables.h: reflecting locale-builder updates.
18289
18290 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
18291
18292         * threads.c: Made Thread.Sleep abortable.
18293
18294 2004-06-02  Martin Baulig  <martin@ximian.com>
18295
18296         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
18297
18298         * debug-mono-symfile.h: Bumped symbol file version number to 37.
18299
18300 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
18301
18302         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
18303
18304 2004-05-30  Jackson Harper  <jackson@ximian.com>
18305
18306         * reflection.c: Do not hardcode assembly versions or public key
18307         tokens anymore. All of this except the corlib section was dead
18308         code anyways.
18309         
18310 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18311
18312         * object.c (mono_runtime_invoke_array): Automatically create boxed
18313         objects for byref valuetypes if needed. Fixes #59300.
18314         
18315         * object.c (mono_method_return_message_restore): Handle 
18316         MONO_TYPE_OBJECT as well.
18317
18318 2004-05-28  Jackson Harper  <jackson@ximian.com>
18319
18320         * reflection.c: The modified type encoding was causing build
18321         problems. Reverted for now.
18322         
18323 2004-05-28  Jackson Harper  <jackson@ximian.com>
18324
18325         * reflection.c/h: Take an assembly ref so that we dont create
18326         fully qualified names when encoding types in the same assembly as
18327         the custom attribute being emitted.
18328         * appdomain.c: Increment version number.
18329         
18330 2004-05-26  Duncan Mak  <duncan@ximian.com>
18331
18332         * icall.c
18333         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
18334         Set the full version number (major, minor, build, revision).
18335
18336 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
18337
18338         * marshal.c (emit_struct_conv): increment src/dst after blit
18339         (mono_marshal_get_managed_wrapper,
18340         mono_marshal_get_native_wrapper): make sure we have marshalling
18341         info before marshalling params (info computation affects
18342         blittable)
18343
18344         * class.c (class_compute_field_layout): correctly deal with
18345         blittable
18346         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
18347         value types (as per what windows dows by default)
18348         (mono_class_setup_mono_type): System.ValueType is blittable
18349         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
18350         blittable
18351
18352         * marshal.c (mono_marshal_load_type_info): flag types  as
18353         non-blittable if the native layout doesn't match the managed
18354         layout
18355
18356 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18357
18358         * appdomain.c: don't add stuff in the private search path that is
18359         above the application base. If application base is not set, there's
18360         no private search path.
18361
18362 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
18363
18364         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
18365         byref struct arguments in native->managed marshalling.
18366
18367 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
18368
18369         * marshal.c (mono_marshal_get_runtime_invoke): correctly
18370         cache methods using signature (special case for methods
18371         that are value type or string class)
18372         
18373         * image.c (mono_image_close): clean up allocated GSList's
18374         in runtime_invoke_cache.
18375
18376 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18377
18378         * mono-config.c: set the correct path for mono_cfg_dir on windows when
18379         there's no MONO_CFG_DIR environment variable defined.
18380
18381 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18382
18383         * threads.c: windows version must be >= 0x0500 to include OpenThread.
18384
18385 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
18386
18387         * threadpool.c: Really wait for 500ms after the async call, even if the wait
18388           is interrumped.
18389         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
18390           before waiting for it, and call CloseHandle after the wait to unref it.
18391           This will make sure that handles are not disposed too early.
18392
18393 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18394
18395         * appdomain.c:
18396         * appdomain.h:
18397         * icall.c: removed
18398         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
18399         needed now.
18400
18401         * object.c: se the application_base only for the domain that runs
18402         Main. Fixes bug #59216,
18403
18404 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18405
18406         * appdomain.c:
18407         * object.c: only the domain in which Main is run have
18408         SetupInformation.ConfigurationFile set, so moved a few lines from
18409         appdomain.c to object.c.
18410
18411 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18412
18413         * appdomain.c: we tried to load [name].(dll|exe), but according
18414         to bug #57710, we must also try [culture]/[name].(dll|exe) and
18415         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
18416         There's a test case attached to bug #58922.
18417
18418 2004-05-27  Dick Porter  <dick@ximian.com>
18419
18420         * icall.c:
18421         * file-io.c: Implemented icalls for locking and unlocking regions
18422         in a file.
18423         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
18424         FALSE on error (fixes both compiler warning and real bug.)
18425
18426 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
18427
18428         * culture-info-tables.h: reflecting locale-builder updates.
18429
18430           (Added missing ChangeLog entry for 05/26)
18431
18432 2004-05-27  Jackson Harper  <jackson@ximian.com>
18433
18434         * locales.c: Fix some cut and paste errors.
18435         
18436 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18437
18438         * mono-config.c: set the correct path for config. directory on windows.
18439
18440 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
18441
18442         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
18443           on win32.
18444
18445 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18446
18447         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
18448         from pinvoke functions.
18449         
18450         * marshal.c (mono_ftnptr_to_delegate): Implement this.
18451
18452 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
18453
18454         * culture-info-tables.h: reflecting locale-builder updates.
18455
18456 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
18457
18458         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
18459         #59086.
18460
18461 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
18462
18463         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
18464         * icall.c: Modified icalls for RNG.
18465         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
18466         Windows (CryptoAPI).
18467
18468 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18469
18470         * locales.c: Fix build.
18471
18472 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
18473
18474         * culture-info-tables.h: reflecting locale-builder updates.
18475
18476 2004-05-25  Jackson Harper  <jackson@ximian.com>
18477
18478         * locales.c: When creating the current culture use the $LANGs
18479         specific culture. So DateTimeFormat and NumberFormat entries are created.
18480         
18481 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
18482
18483         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
18484         a char array as parameter.
18485
18486 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
18487
18488         * image.c: In mono_image_open(), always use an absolute path name to
18489           look for already loaded images.
18490
18491 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
18492
18493         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
18494         missing in the windows build (like older cygwin include files).
18495
18496 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
18497
18498         * icall.c: Fixed check for possible integer overflow in Buffer_
18499         BlockCopy icall. Replaced comments style // by /* */.
18500
18501 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
18502
18503         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
18504         
18505         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
18506         check after MONO_VTADDR. Fixes pinvoke2.exe.
18507
18508         * marshal.h marshal.c metadata.h: Add beginnings of support for
18509         ftnptr -> delegate marshalling.
18510
18511 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
18512
18513         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
18514         * threads.c: Fix warnings.
18515
18516 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
18517
18518         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
18519         * icall.c: Registered icalls for Suspend and Resume.
18520         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
18521           Thread.Abort.
18522         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
18523         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
18524         * process.c: Use WaitForSingleObjectEx.
18525         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
18526           checkpoints.
18527         * threads.c, threads.h: Make use of new Ex wait methods. Improved
18528           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
18529           for Suspend and Resume. Added new mono_thread_stop, used for stoping
18530           background threads. Added basic support for Abort in Windows.
18531           Start new threads using a managed delegate invoke wrapper. This wrapper
18532           has an interruption checkpoint that is needed since an interruption
18533           can be requested before the thread leaves the unmanaged code that starts 
18534           the thread.
18535         * marshal.c: Added interruption checkpoint after every native call, and
18536           also before managed calls for wrappers called from unmanaged code to
18537           go into managed code.
18538         * object.h: Added new field in MonoThread to keep track of interruption
18539           requests.
18540
18541 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
18542
18543         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
18544         calls.
18545
18546 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18547
18548         * appdomain.c:
18549         * assembly.c:
18550         * gc.c:
18551         * locales.c:
18552         * mono-config.c:
18553         * rand.c: getenv -> g_getenv (windows!)
18554
18555         * process.c: complete_path is also used on non-windows platforms.
18556
18557 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18558
18559         * icall.c: new signature for Process_Start.
18560
18561         * process.[ch]: new signature for Process_Start. If we're on windows
18562         and UseShellExecute is false, we have to search for the program by
18563         ourselves if we don't get a full path.
18564
18565 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
18566
18567         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
18568         marshalling and call CleanUpNativeData if needed. Fixes #58646.
18569
18570 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18571
18572         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
18573         Fixes bug #58373.
18574
18575 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18576
18577         * process.c: use double quotes to quote program name and arguments on
18578         windows. Fixes bug #58575.
18579
18580 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18581
18582         * file-io.c: don't return "." and ".." when using windows Find*File.
18583
18584 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
18585
18586         * marshal.c: Don't pass wrappers to message init because method 
18587         addressed used to lookup metadata. part of remoting[2|3] fix.
18588
18589 2004-05-15  Jackson Harper  <jackson@ximian.com>
18590
18591         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
18592         path is essentially the same as MONO_PATH except that it points to
18593         GACs instead of lib directories.
18594         * loader.h: The user gac is gone so we dont need function to
18595         enable/disable it.
18596         * mono-config.c: user gac option is now gone.
18597         
18598 2004-05-15  Jackson Harper  <jackson@ximian.com>
18599
18600         * culture-info.h: Make defines more consistent, add calendar data
18601         to the culture info table.
18602         * culture-info-tables.h: Add basic calendar data. Basically
18603         everyone gets default gregorian until all the data is
18604         updated.
18605         * locales.c: Use the new consistent defines. Set calendar data for
18606         culture info objects.
18607         * object.h: add a field for calendar data to CultureInfo
18608         
18609 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
18610
18611         * image.c: image->runtime_invoke_cache is keyed on signatures now.
18612         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
18613         a signature.
18614         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
18615         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
18616         an extra param that is the pointer of the method to invoke. The IL for
18617         the invoke method is no longer specific to the method, but to the
18618         signature of the method. Thus, we can share the same code for multiple
18619         methods. This reduces the number of methods that have to be compiled.
18620
18621 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
18622
18623         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
18624
18625         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18626
18627         * icall.c: Optimize Buffer.BlockCopy.
18628
18629 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18630
18631         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
18632         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
18633         quote). Changed them to "MMMM yyyy".
18634
18635 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
18636
18637         * rand.c
18638         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
18639
18640 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
18641
18642         * reflection.h: Updated after changes to managed structures.
18643
18644         * appdomain.c: Bump corlib version.
18645
18646 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18647
18648         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
18649         windows.
18650
18651 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18652
18653         * Makefile.am: link to ../os/libmonoos.la on windows.
18654
18655         * assembly.c:
18656                 -If MONO_DEBUG, warn about non-existing directories in
18657                 MONO_PATH.
18658                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
18659                 compile time variable.
18660                 -Removed init_default_path and call mono_set_rootdir from
18661                 libmonoos.a instead (windows only).
18662
18663         * assembly.h: declare mono_assembly_getrootdir().
18664
18665         * domain.c:
18666         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
18667
18668         * loader.c: s/getenv/g_getenv/
18669
18670 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
18671
18672         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
18673
18674         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
18675
18676         * metadata.h: Add new marshalling conversions.
18677
18678         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
18679         function.
18680
18681         * reflection.c (mono_reflection_get_type): Lookup the type in all
18682         modules of a multi-module assembly. Fixes #58291.
18683
18684 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
18685
18686         * threads.c: Before aborting a background, set the StopRequested
18687         state.  This avoids throwing the Abort exception.
18688         In mono_thread_manage, don't continue with the shutdown until all
18689         aborted threads have actually stopped.
18690
18691 2004-05-10  Jackson Harper  <jackson@ximian.com>
18692
18693         * locales.c: Remove the modifier from culture names.
18694         
18695 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18696
18697         * Makefile.am: monosn is not installed any more. It has been deprecated
18698         in favor of sn.
18699
18700 2004-05-07  Jackson Harper  <jackson@ximian.com>
18701
18702         * locales.c
18703         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
18704         Fix array construction, add bailout if the length is 0.
18705
18706 2004-05-07  Dick Porter  <dick@ximian.com>
18707
18708         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
18709         machine doesn't have a DNS entry.  Patch by Urs Muff
18710         (umuff@quark.com), fixes bug 57928.
18711
18712 2004-05-06  Jackson Harper  <jackson@ximian.com>
18713
18714         * reflection.c: Handle null PublicTokens properly. alloc mem for
18715         assembly names culture so we dont crash when freeing it.
18716         
18717 2004-05-06  Jackson Harper  <jackson@ximian.com>
18718
18719         * assembly.c: Check the usergac when loading with partial names.
18720         
18721 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
18722
18723         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
18724         does nothing for now (not required for Linux/Windows) but the class
18725         library can call it (and a newer or modified runtime could need it).
18726         * icall.c: Registred icall.
18727
18728 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18729
18730         * loader.c: prints a message on module loading error we set MONO_DEBUG
18731         environment variable.
18732
18733 2004-05-05  Jackson Harper  <jackson@ximian.com>
18734
18735         * appdomain.c: Handle PublicKeyToken=null properly.
18736         
18737 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
18738
18739         * environment.c|h: Added icall ves_icall_System_Environment_
18740         GetOSVersionString to get the current OS version as a string.
18741         * icall.c: Registred icall.
18742
18743 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
18744
18745         * object.c: in mono_object_get_virtual_method(), take into account that
18746         non-virtual methods don't have a slot in the vtable. Check needed when
18747         the object is a proxy.
18748
18749 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
18750
18751         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
18752         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
18753
18754         * object.c (mono_class_compute_gc_descriptor): Fix warning.
18755
18756         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
18757         passed when a valuetype is expected.
18758
18759         * object.c (mono_unhandled_exception): Only set the exit code if the
18760         exception happens in the main thread. Fixes thread5.exe.
18761
18762         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
18763         invalid names. Fixes #58047.
18764
18765 2004-05-03  Jackson Harper  <jackson@ximian.com>
18766
18767         * assembly.c: This line was committed accidently and is unneeded.
18768         
18769 2004-05-03  Jackson Harper  <jackson@ximian.com>
18770
18771         * icall.c: Add new icall for Assembly::LoadWithPartialName
18772         * assembly.c/.h: new function that probes the GAC to load partial
18773         assembly names by Paolo Molaro.
18774         
18775 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18776
18777         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
18778         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
18779         (type_get_fully_qualified_name): Added PublicKeyToken when building a
18780         full type name.
18781
18782 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18783
18784         * appdomain.c: fixed check for 'neutral' culture and removed warning.
18785         * reflection.c: fix bug when parsing a full type name and Version is not
18786         the last thing in the string.
18787
18788 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
18789
18790         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
18791         crashes when it is freed.
18792
18793 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18794
18795         * assembly.c: print the compat warning to stderr.
18796
18797 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
18798
18799         * assembly.c (mono_assembly_load_references): Add a compatibility
18800         hack to run old applications that might be still referencing the
18801         3300-based assemblies, only do this for System.xxx.
18802
18803 2004-05-01  Jackson Harper  <jackson@ximian.com>
18804
18805         * appdomain.c: If the culture is neutral we set it to "".
18806         
18807 2004-04-29  Jackson Harper  <jackson@ximian.com>
18808
18809         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
18810
18811 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
18812  
18813         * string-icalls.c: added low overhead function for copying chars
18814         * icall.c: added needed icall for the above function
18815  
18816 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18817
18818         * icall.c: fix return value of get_global_assembly_cache.  Implemented
18819         Environment.GetLogicalDrives.
18820
18821 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
18822
18823         * rand.c: try and talk to egd or prngd
18824         for random bytes if opening devices fail.
18825
18826 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
18827
18828         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
18829         alignment for the type using the native alignment of its members 
18830         instead of using klass->min_align.
18831
18832         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
18833
18834 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18835
18836         * file-io.c:
18837         * socket-io.c: added check for sys/aio.h.
18838
18839 2004-04-28  Dick Porter  <dick@ximian.com>
18840
18841         * threads.c: Don't abort a thread thats already aborting, when
18842         terminating everything.
18843
18844 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18845
18846         * icall.c: added 2 new async calls for Socket.
18847
18848         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
18849         IO on *nix systems.
18850
18851         * threadpool.c: removed unused variable.
18852
18853 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
18854
18855         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
18856
18857 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
18858
18859         * locales.c: put back string_invariant_tolower () and
18860         string_invariant_toupper ().
18861
18862 2004-04-26 David Waite <mass@akuma.org>
18863
18864         * file-io.h:
18865         * socket-io.h:
18866         * threads.h:
18867         * unicode.h: remove comma from end of enumeration declarations
18868
18869 2004-04-26 David Waite <mass@akuma.org>
18870
18871         * debug-mono-symfile.h:
18872         * decimal.c:
18873         * mono_debug.h:
18874         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
18875
18876
18877 2004-04-26  Jackson Harper  <jackson@ximian.com>
18878
18879         * appdomain.c: Increment version number.
18880         
18881 2004-04-26  Jackson Harper  <jackson@ximian.com>
18882
18883         * appdomain.c: Set assembly references public token value when
18884         PublicKeyToken is specified, not the hash_value. Free public token
18885         values when free assembly name data. Previously the public key
18886         token was hex decoded, however we are using hex encoded public key
18887         tokens, so this is not neccasary.
18888         * assembly.c: Lookup assemblies in the gac if their public token
18889         value is set. Add function to allow enabling user gac
18890         lookups. Specify whether or not the assembly was loaded from the
18891         GAC. Compare full assembly names when checking the cache for
18892         assemblies (Temporarily disabled see comment in code). Remove
18893         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
18894         specifies trace-loader they get extra info to stdout on the
18895         loading of assemblies.
18896         * image.h: Add a field for an assembly references public token
18897         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
18898         whether an assembly has been loaded from the GAC.
18899         * image.c: Remove a corlib -> mscorlib name mapping.
18900         * loader.h: Add function to enable/disable the user gac.
18901         * mono-config.c: Check if the usergac is enabled in the config
18902         file.
18903         * icall.c: New icall to determine whether or not an assembly has
18904         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
18905         * tabldefs.h: Add constant for assemblyref flag that specifies a
18906         full public key is used instead of a public token.
18907         * reflection.c: Remove mscorlib -> corlib mappings. Set
18908         PublicTokenValue instead of hash value. This value is a hex
18909         string so it does not need to be expanded.
18910
18911 2004-04-26  Martin Baulig  <martin@ximian.com>
18912
18913         * mono-debug-debugger.c (mono_debugger_initialize): Set
18914         `mono_debugger_initialized' before calling mono_debug_lock().
18915
18916 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
18917
18918         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
18919           InternalToUpper/InternalToLower.
18920         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
18921           removed invariant culture shortcut.  This is now done in managed code.
18922         * locales.c: (string_invariant_toupper/tolower) removed.
18923
18924 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18925
18926         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
18927         Added Poll internal call.
18928
18929         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
18930         call for Poll. Select was too heavy for polling a single socket.
18931
18932         * threadpool.[ch]: added mono_threadpool_cleanup.
18933         * threads.c: use it. Don't use Thread_Abort on windows.
18934
18935 2004-04-23  Martin Baulig  <martin@ximian.com>
18936
18937         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
18938
18939 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
18940
18941         * icall.c: Registred new icalls for key pair protection and added an
18942         icall for Environment.GetFolderPath on Windows.
18943         * security.c|h: Added new icalls for key pair protection.
18944
18945 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18946
18947         * socket-io.c: don't display the non-supported family warning for known
18948         families. Now this is not displayed on windows when checking support
18949         for IPv4/IPv6.
18950
18951 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18952
18953         * class.c: don't display the layout warning for static fields.
18954
18955 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
18956
18957         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
18958         * locales.c, locales.h: Added new icalls for culture-specific
18959         Char.ToLower and Char.ToUpper.
18960
18961 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18962
18963         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
18964         by David Waite.
18965
18966 2004-04-20  Martin Baulig  <martin@ximian.com>
18967
18968         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
18969         of the type name before passing it to mono_reflection_type_from_name().
18970
18971 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18972
18973         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
18974         encodings here. Fixes #56965.
18975
18976 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
18977
18978         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
18979         fix test on strstr result not that I can see anything that
18980         relies on the result.
18981
18982 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18983
18984         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
18985         Fixes #57081.
18986
18987         * marshal.c (mono_marshal_get_string_encoding): New helper function.
18988
18989         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
18990         function to determine which marshalling to use for strings. Fixes
18991         #56965.
18992
18993         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
18994
18995         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
18996
18997 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
18998
18999         * icall.c: #include mono-config.h
19000
19001 2004-04-15  Jackson Harper  <jackson@ximian.com>
19002
19003         * culture-info-tables.h: Fix date formats for en-US culture.
19004         
19005 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
19006
19007         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
19008         ThreadPool.SetMinThreads.
19009         * threadpool.c: Implemented ThreadPool.GetMinThreads and
19010         ThreadPool.SetMinThreads.
19011
19012 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19013
19014         * mono-config.c: also load the .config file in the directory
19015         where the assembly was found.
19016
19017 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
19018
19019         * assembly.c: load per-assembly config files.
19020         * icall.c: decrapified code to get the config dir and moved to
19021         mono-config.c.
19022         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
19023         per-assembly config files. When doing a dll map lookup give precedence
19024         to the per-assembly data.
19025
19026 2004-04-14  Martin Baulig  <martin@ximian.com>
19027
19028         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
19029         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
19030         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
19031
19032         * mono-debugger-debugger.c: While the debugger is locked, remember
19033         whether the symbol tables have changes and send one single
19034         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
19035
19036 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
19039
19040         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
19041         function.
19042
19043         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
19044         account when marshalling string arrays. Fixes #56965.
19045
19046 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
19047
19048         * icall.c: Add new icalls mapping for security.
19049         * security.c|h: Add internal calls for WindowsIdentity,
19050         WindowsImpersonationContext and WindowsPrincipal.
19051
19052 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
19053
19054         * class.c: Added comment to ensure the System.MonoDummy class
19055         is removed when no longer necessary
19056
19057 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19058
19059         * appdomain.c: Pass arguments to the bootstraping exceptions to
19060         minimize JITed methods at boot
19061
19062         * metadata.c (mono_exception_from_name_two_strings): Allow for the
19063         second string to be null.
19064
19065         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
19066         Change the protocol to minimize the JIT methods at startup.  Now
19067         it Returns the internal codepage, if the value of "int_code_page"
19068         is 1 at entry, and we can not compute a suitable code page
19069         number, returns the code page as a string.
19070
19071 2004-04-13  Jackson Harper  <jackson@ximian.com>
19072
19073         * culture-info-tables.h: Fix number of decimal digits for all
19074         english locales.
19075
19076 2004-04-13  Jackson Harper  <jackson@ximian.com>
19077
19078         * icall.c: Clairfy out of sync error message. It is not always
19079         your corlib that is out of sync.
19080
19081 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
19082
19083         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
19084         properties when only the set accessor is overriden. Fixes #55874.
19085
19086 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
19087
19088         * assembly.c (mono_assembly_load_references): Make this thread safe.
19089         Fixes #56327.
19090
19091 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
19092
19093         * monosn.c: Add missing initialization calls.
19094
19095 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
19096
19097         * locales.c:
19098         ves_icall_System_Globalization_CultureInfo_construct_number_format
19099         Fix g_assert so it compiles on fussier compilers re int/ptr
19100         mismatch
19101
19102 2004-04-08  Dick Porter  <dick@ximian.com>
19103
19104         * socket-io.h:
19105         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
19106         53992.  Also rearrange the code so that the internal calls return
19107         an error value and exceptions are thrown from managed code.
19108
19109         * icall.c: Add type info to the socket icalls.
19110
19111 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19112
19113         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
19114         owes me a beer.
19115
19116 2004-04-07  Martin Baulig  <martin@ximian.com>
19117
19118         * class.c (mono_class_from_generic_parameter): Don't default
19119         `klass->parent' to `mono_defaults.object_type'.
19120
19121 2004-04-07  Martin Baulig  <martin@ximian.com>
19122
19123         * reflection.c (mono_reflection_initialize_generic_parameter): Set
19124         `param->pklass->reflection_info'.       
19125
19126 2004-04-07  Jackson Harper  <jackson@ximian.com>
19127
19128         * culture-info-tables.h: Fix date separator symbol.
19129         
19130 2004-04-07  Martin Baulig  <martin@ximian.com>
19131
19132         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
19133         from System.Type to System.MonoType.
19134
19135 2004-04-07  Martin Baulig  <martin@ximian.com>
19136
19137         * reflection.h
19138         (MonoReflectionGenericParam): Added `has_reference_type' and
19139         `has_value_type' fields.
19140
19141         * reflection.c (mono_image_get_generic_param_info): Encode the
19142         correct flags if we have the `class' or `struct' constraint.
19143
19144 2004-04-07  Martin Baulig  <martin@ximian.com>
19145
19146         * reflection.h
19147         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
19148
19149 2004-04-07  Jackson Harper  <jackson@ximian.com>
19150
19151         * appdomain.c: Revert extra patches, just wanted to bump the
19152         version number.
19153         
19154 2004-04-07  Jackson Harper  <jackson@ximian.com>
19155
19156         * Makefile.am: Add culture-info private headers.
19157         * icall.c: Add new icalls for contructing locales.
19158         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
19159         * locales.h: Declare new culture info construction methods.
19160         * object.h: Add new fields used to avoid the CultureMap to
19161         MonoCultureInfo.
19162         * culture-info.h: Definition of structs used in the culture info
19163         tables.
19164         * culture-info-tables.h: Autogenerated tables that contain culture
19165         info data. This file was generated with the locale-builder tool.
19166         * appdomain.c: Incement corlib version number.
19167         
19168 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
19169
19170         * appdomain.c: (mono_runtime_init) move mono_thread_init
19171         to before mono_object_new calls so critical sections
19172         are initialized before use.
19173
19174 2004-04-07  Martin Baulig  <martin@ximian.com>
19175
19176         * icall.c
19177         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
19178         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
19179         (ves_icall_MonoGenericParam_initialize): Removed.
19180         (monogenericparam_icalls): Removed.
19181         (generictypeparambuilder_icalls): Added new table for
19182         System.Reflection.Emit.GenericTypeParameterBuilder.
19183
19184         * reflection.c
19185         (mono_reflection_define_generic_parameter): Removed.
19186         (mono_reflection_initialize_generic_parameter): This is now called
19187         from GenericTypeParameterBuilder's .ctor.
19188
19189 2004-04-06  Martin Baulig  <martin@ximian.com>
19190
19191         * class.c (mono_class_init): Don't inflate nested classes in a
19192         generic instance.
19193         (mono_type_get_name_recurse): Include the generic arguments for
19194         generic instances and generic type declarations.
19195         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
19196         (_mono_class_get_instantiation_name): Removed.
19197         (mono_class_create_generic): Always use `gklass->name' as our name.
19198
19199         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
19200
19201         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
19202         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
19203         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
19204         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
19205         closed generic methods here.
19206
19207         * reflection.c
19208         (mono_reflection_generic_inst_get_nested_types): Removed.
19209         (inflate_mono_method): Copy the generic parameters from the
19210         MonoMethodHeader into out MonoGenericMethod.
19211
19212 2004-04-06  Martin Baulig  <martin@ximian.com>
19213
19214         * row-indexes.h
19215         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
19216
19217         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
19218
19219         * reflection.c (build_compressed_metadata): If we have any entries
19220         in the GenericParam, MethodSpec or GenericParamConstraint tables,
19221         set the header version to 1.1.
19222
19223 2004-04-06  Martin Baulig  <martin@ximian.com>
19224
19225         * class.c (mono_class_init): If we're a generic instance,
19226         initialize our nested classes, too.
19227         (_mono_class_get_instantiation_name): Deal with the new `!%d'
19228         suffix. 
19229
19230 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19231
19232         * process.c: quote the argument passed to the shell on windows.
19233
19234 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19235
19236         * threads.c (mono_alloc_special_static_data): Allow this to be
19237         called during startup.
19238
19239 2004-04-02  Martin Baulig  <martin@ximian.com>
19240
19241         * icall.c
19242         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
19243
19244 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19245
19246         * icall.c: Fix build.
19247
19248 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
19249
19250         * Makefile.am: Added security.c|h.
19251         * icall.c: Added icall for get_UserName;
19252         * security.c: New file for security related icalls. Added function
19253         get_UserName for System.Environment (fix #56144).
19254         * security.h: New. Header file for security.c
19255
19256 2004-04-02  Dick Porter  <dick@ximian.com>
19257
19258         * icall.c: Deleted the icalls that were obsoleted some time ago
19259         by the ICU string code, and which were mixed into the icall
19260         rearranging.  Fixes bug 55969.
19261
19262         * string-icalls.h: 
19263         * string-icalls.c: Deleted the code that those icalls reference.
19264
19265 2004-04-01  Martin Baulig  <martin@ximian.com>
19266
19267         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
19268
19269         * class.c (mono_class_from_generic_parameter): Don't set 
19270         TYPE_ATTRIBUTE_INTERFACE.
19271         (my_mono_class_from_generic_parameter): Likewise.
19272
19273 2004-04-01  Martin Baulig  <martin@ximian.com>
19274
19275         * loader.c (find_method): Added an optional `MonoClass *ic'
19276         argument to search in a specific interface.
19277         (mono_get_method_constrained): New public function.
19278
19279 2004-04-01  Martin Baulig  <martin@ximian.com>
19280
19281         * reflection.c (mono_image_get_generic_field_token): Use the
19282         `handleref' cache here.
19283
19284 2004-04-01  Martin Baulig  <martin@ximian.com>
19285
19286         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
19287
19288         * reflection.c (create_generic_typespec): Use the `typespec' hash
19289         here, not the `typeref' one.    
19290
19291 2004-04-01  Martin Baulig  <martin@ximian.com>
19292
19293         * class.c (mono_class_inflate_generic_type): Moved the
19294         functionality into a new static inflate_generic_type() which
19295         returns NULL if it didn't do anything.  Only increment the
19296         `mono_stats.inflated_type_count' if we actually inflated
19297         something.
19298         (mono_class_get_full): Check the classes type to see whether we
19299         need to inflate it; also inflate MONO_TYPE_(M)VAR.
19300
19301 2004-04-01  Jackson Harper  <jackson@ximian.com>
19302
19303         * reflection.c: Set culture for assembly references.
19304         
19305 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
19306
19307         * reflection.[ch], icall.[ch], Fix support for pinning variables.
19308
19309 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19310
19311         * assembly.c:
19312         (do_mono_assembly_open): the critical section also covers
19313         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
19314
19315 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19316
19317         * threads.c:
19318         (mono_manage_threads): abort the background threads when finishing.
19319         Fixes bug #47232.
19320
19321 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19322
19323         * gc.c: only close the done_event handle if there was no timeout.
19324         C-ified comments.
19325
19326 2004-03-30  Martin Baulig  <martin@ximian.com>
19327
19328         * icall.c (icall_entries): It's called "System.Activator", not
19329         "System.Activation".    
19330
19331 2004-03-30  Martin Baulig  <martin@ximian.com>
19332
19333         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
19334         (mono_class_create_from_typespec): Likewise.
19335
19336 2004-03-30  Martin Baulig  <martin@ximian.com>
19337
19338         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
19339         `has_ctor_constraint' and `initialized'.
19340
19341 2004-03-30  Martin Baulig  <martin@ximian.com>
19342
19343         * reflection.c (encode_new_constraint): New static function to add
19344         the constructor constraint attribute to a type parameter.
19345         (encode_constraints): Call encode_new_constraint() if necessary.
19346
19347         * reflection.h
19348         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
19349
19350         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
19351         
19352 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
19353
19354         * reflection.c, icall.c: add support for pinning variables. 
19355
19356 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
19357
19358         * marshal.c (mono_marshal_get_managed_wrapper):
19359         init bool local with zero rather than null.
19360
19361 2004-03-29  Martin Baulig  <martin@ximian.com>
19362
19363         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
19364         the "official" behavior here.
19365         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
19366
19367 2004-03-29  Martin Baulig  <martin@ximian.com>
19368
19369         * icall.c: Reflect latest API changes.
19370
19371 2004-03-29  Martin Baulig  <martin@ximian.com>
19372
19373         * loader.c (mono_get_method_from_token): Also call
19374         mono_metadata_load_generic_params () for abstract and interface
19375         methods; replace the type arguments in the method signature with
19376         the ones which are loaded from the metadata.
19377
19378 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
19379
19380         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
19381         of the lock is not the current thread. MS.NET don't do it, in spite of
19382         what the documentation says. See bug #56157.
19383
19384 2004-03-28  Martin Baulig  <martin@ximian.com>
19385
19386         * class.c (mono_class_init): Don't call init_properties() and
19387         init_events() for generic instances; set `prop->parent' when
19388         inflating properties.
19389
19390         * reflection.c (mono_generic_inst_get_object): Call
19391         `mono_class_init (ginst->klass)'.
19392         (mono_type_get_object): Only create a MonoGenericInst if your
19393         generic type is a TypeBuilder.
19394         (do_mono_reflection_bind_generic_parameters): Only set
19395         `ginst->is_dynamic' if our generic type is a TypeBuilder.
19396
19397 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19398
19399         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
19400         Fixes #56091.
19401
19402 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19403
19404         * icall.c: added Kill_internal icall.
19405         * process.[ch]: added Kill_internal icall.
19406
19407 2004-03-25  Martin Baulig  <martin@ximian.com>
19408
19409         * class.h (MonoStats): Added `generic_instance_count',
19410         `inflated_method_count', `inflated_type_count' and
19411         `generics_metadata_size'.       
19412
19413 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19414
19415         * reflection.c: no warnings now.
19416
19417 2004-03-25  Martin Baulig  <martin@ximian.com>
19418
19419         * class.c (mono_class_get_full): New public function; does a
19420         mono_class_get(), but also takes a `MonoGenericContext *'.
19421
19422         * loader.c (mono_field_from_memberref): Renamed to
19423         `field_from_memberref', made static and added `MonoGenericContext *'
19424         argument.
19425         (mono_field_from_token): Added `MonoGenericInst *' argument.
19426         (method_from_memberef): Likewise.
19427         (mono_get_method_from_token): Likewise.
19428         (mono_get_method_full): New public function; does a
19429         mono_get_method(), but also takes a `MonoGenericContext *'.
19430
19431         * verify.c (mono_method_verify): Get the method's generic context
19432         and pass it to mono_field_from_token(), mono_get_method_full() and
19433         mono_class_get_full().
19434
19435 2004-03-25  Martin Baulig  <martin@ximian.com>
19436
19437         * class.c (mono_class_inflate_generic_type): Take a
19438         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
19439         `MonoGenericMethod *'.
19440
19441 2004-03-25  Martin Baulig  <martin@ximian.com>
19442
19443         * loader.h (MonoMethodInflated): Store the MonoGenericContext
19444         instead of the MonoGenericMethod here.
19445
19446 2004-03-25  Martin Baulig  <martin@ximian.com>
19447
19448         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
19449         each time we create a new MonoGenericInst, we also create a new
19450         context which points back to us.
19451
19452         * class.c (inflate_method): Use `ginst->context' instead of
19453         creating a new context.
19454
19455         * loader.c (method_from_memberref): Use
19456         `klass->generic_inst->context' instead of creating a new context.
19457
19458 2004-03-25  Martin Baulig  <martin@ximian.com>
19459
19460         * class.h (MonoGenericContext): New struct.
19461         (MonoGenericMethod): Removed `generic_inst'.
19462
19463         * class.c (mono_class_inflate_generic_method): Take a
19464         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
19465
19466 2004-03-25  Martin Baulig  <martin@ximian.com>
19467
19468         * loader.h (MonoMethodInflated): New typedef.
19469
19470         * metadata.h (MonoMethodSignature): Removed `gen_method', make
19471         `generic_param_count' consume just 30 bits, added `is_inflated'
19472         and `has_type_parameters' flags (one bit each).
19473
19474         * class.c (mono_class_inflate_generic_method): Create a
19475         MonoMethodInflated instead of a MonoMethodNormal and set
19476         `is_inflated' in the method signature.
19477
19478         * class.h (MonoGenericMethod): Removed `generic_method'.
19479
19480 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
19481
19482         * image.c: Make sure the name of a MonoImage is always an absolute path.
19483           This fixes bug #54415.
19484
19485 2004-03-24  Martin Baulig  <martin@ximian.com>
19486
19487         * class.c (mono_class_setup_vtable): If we're a generic instance,
19488         use our generic type's vtable size.
19489
19490 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
19491
19492         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
19493         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
19494         problems.
19495
19496 2004-03-23  Martin Baulig  <martin@ximian.com>
19497
19498         * class.h (MonoDynamicGenericInst): Added `int count_events' and
19499         `MonoEvent *events'.
19500
19501         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
19502         (typebuilder_icalls): Added "get_event_info"; calls
19503         mono_reflection_event_builder_get_event_info(). 
19504
19505         * reflection.c (mono_reflection_generic_inst_initialize): Added
19506         `MonoArray *events'.
19507         (mono_reflection_event_builder_get_event_info): New function.
19508
19509 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
19510
19511         * object.h: add mono_type_initialization_init
19512
19513         * object.c (mono_runtime_class_init): 
19514         implement class constructor synchronization rules
19515         to cope with threading issues.  
19516         add mono_type_initialization_init
19517
19518         * appdomain.c (mono_runtime_init): call 
19519         mono_type_initialization_init
19520
19521         * class.h: removing initializing field from MonoVTable
19522
19523 2004-03-23  Martin Baulig  <martin@ximian.com>
19524
19525         * class.c (my_mono_class_from_generic_parameter): Use
19526         `param->name' if it's not NULL. 
19527
19528 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
19529
19530         * class.c: do not insert non-virtual methods in the vtable.
19531         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
19532         that means the method is non-virtual. This never would have
19533         happened before.
19534
19535 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
19536
19537         * profiler.c: Added lock for accessing coverage_hash.
19538
19539 2004-03-22  Martin Baulig  <martin@ximian.com>
19540
19541         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
19542         `method->method->signature->generic_param_count != 0' to make it
19543         work for interface methods.
19544
19545 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19546
19547         * process.c: quote the string passed to the shell using g_shell_quote.
19548
19549 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19550
19551         * threads.c:
19552         (mono_threads_manage): don't remove the finalizer thread and self
19553         from the threads hash table so that mono_thread_manage can be called
19554         more than once.
19555
19556 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19557
19558         * process.c: quote the arguments when UseShellExecute is true. Fixes
19559         bug #55790.
19560
19561 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19562
19563         * threads.c: set mono_thread_detach as a cleanup routine for every
19564         thread. This way it's always executed upon thread termination, either
19565         aborted or finished normally. No more xsp hangs!
19566
19567 2004-03-17  Martin Baulig  <martin@ximian.com>
19568
19569         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
19570         `int count_nested' and a `MonoType **nested'.
19571
19572         * reflection.c (mono_reflection_bind_generic_parameters): Moved
19573         most of the functionality into a new static
19574         do_mono_reflection_bind_generic_parameters() and don't take a
19575         `MonoType *nested_in' argument any more.  Don't compute nested
19576         types here.
19577         (mono_reflection_generic_inst_get_nested_types): New public method
19578         to get nested types.
19579
19580         * class.c (mono_class_create_generic): Set `klass->nested_in' if
19581         we're a nested class.
19582
19583         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
19584         mono_reflection_generic_inst_get_nested_types() to compute the
19585         nested types.
19586
19587 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
19590         descriptive error message under windows.
19591         
19592 2004-03-17  Martin Baulig  <martin@ximian.com>
19593
19594         * class.c (dup_type): Added `const MonoType *original' argument;
19595         copy the attrs from the original type.
19596
19597 2004-03-17  Martin Baulig  <martin@ximian.com>
19598
19599         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
19600         `m->generic_inst_cache' here.
19601
19602 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19603
19604         * exception.h exception.c: Add stack_overflow_exception.
19605
19606 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19607
19608         * threadpool.c:
19609         (overlapped_callback): call SetEvent *after* invoking the callback.
19610         No need to call CloseHandle.
19611
19612 2004-03-16  Martin Baulig  <martin@ximian.com>
19613
19614         * reflection.c (mono_image_get_fieldref_token): Take a
19615         `MonoReflectionField *' instead of a `MonoClassField *' and a
19616         `MonoClass *'; store the `MonoReflectionField *' in the hash.
19617
19618 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19619
19620         * appdomain.c: don't add the culture to the filename we're looking for
19621         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
19622
19623 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19624
19625         * locales.c: don't ignore symbols when doing case insensitive compares.
19626         Thanks Dick! Fixes bug #54046.
19627
19628         * threads.c: surround 'threads' usage with enter/leave in
19629         mono_thread_manage.
19630
19631 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
19632
19633         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
19634         implicitly marshalled as [Out]. Fixes #55450.
19635
19636         (mono_marshal_get_runtime_invoke): Zero out the result if there is
19637         an exception.
19638
19639 2004-03-16  Martin Baulig  <martin@ximian.com>
19640
19641         * class.c (mono_class_from_generic_parameter): Use the actual
19642         parameter name. 
19643
19644 2004-03-16  Martin Baulig  <martin@ximian.com>
19645
19646         * reflection.c (type_get_signature_size): New static function.
19647         Compues the size of the type in a method signature.
19648         (method_get_signature_size): New static function; calls
19649         type_get_signature_size() to compute the actual size of the
19650         method's signature.
19651         (method_encode_signature): Use method_get_signature_size() to get
19652         the signature's size rather than using `nparams * 10'.
19653
19654 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19655
19656         * file-io.h: define here WapiOverlapped on windows. I don't want the
19657         regular OVERLAPPED one.
19658
19659         * file-io.c:
19660         * threadpool.c: somehow, BindIoCompletionCallback is not found.
19661         Disabling AIO on windows.
19662
19663 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19664
19665         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
19666         bug #55385.
19667
19668 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19669
19670         * appdomain.c: upgraded corlib version.
19671
19672         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
19673         and BeginWrite. Allow opening files for asynchrnous operations.
19674
19675         * file-io.h: new struct that maps FileStreamAsyncResult.
19676         * icall.c: added new icalls.
19677         * process.[ch]: support setting child process environment variables
19678         and use the SHELL or COMSPEC when UseShellExecute is true.
19679
19680         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
19681         callback for async. IO is here and also BindHandle.
19682
19683         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
19684         from here.
19685
19686 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
19687
19688         * reflection.c (create_custom_attr): Allow len == 0.
19689
19690         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
19691         computation on big-endian machines.
19692
19693 2004-03-13  Martin Baulig  <martin@ximian.com>
19694
19695         * class.h (MonoGenericInst): Added `int count_ifaces'.
19696
19697         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
19698         `ginst->count_ifaces' instead `klass->interface_count' since we
19699         may get called before the vtable is created.
19700
19701         * loader.c (mono_method_get_param_names): If we're a generic
19702         instance, return and don't initialize the class.
19703
19704         * reflection.c (mono_reflection_setup_generic_class): Don't call
19705         ensure_runtime_vtable().
19706         (mono_reflection_bind_generic_parameters): Set
19707         `ginst->count_ifaces'.
19708
19709 2004-03-11  Jackson Harper <jackson@ximian.com>
19710
19711         * icall.c:
19712         * unicode.c:
19713         * unicode.h: Remove unused System.Char icalls.
19714         
19715 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
19716
19717         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
19718         code when we P/Invoke the first library in Windows.Forms, instead
19719         of when we first open the assembly.
19720
19721         * assembly.c: Drop the lookup from here.
19722
19723 2004-03-10  Martin Baulig  <martin@ximian.com>
19724
19725         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
19726         class for properties, fields and events.  Finally fixes #54945.
19727
19728 2004-03-10  Martin Baulig  <martin@ximian.com>
19729
19730         * metadata.c (mono_metadata_class_equal): New static function;
19731         checks whether two generic instances or two generic parameters are
19732         equal.
19733         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
19734         compare classes.        
19735
19736 2004-03-10  Martin Baulig  <martin@ximian.com>
19737
19738         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
19739
19740         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
19741         argument and write it into the `reflection_info' field.
19742
19743         * icall.c
19744         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
19745         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
19746
19747 2004-03-09  Jackson Harper  <jackson@ximian.com>
19748
19749         * char-conversions.h: use 8 bits for numeric data its all we need
19750         * icall.c: numeric data is only 8 bits now.
19751
19752 2004-03-09  Martin Baulig  <martin@ximian.com>
19753
19754         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
19755
19756         * class.c (init_properties, init_events): Initialize the new
19757         `parent' field.
19758
19759         * reflection.c (typebuilder_setup_properties): Likewise.
19760         (typebuilder_setup_events): Likewise.
19761
19762         * reflection.h (MonoEventInfo): Replaced `parent with
19763         `declaring_type' and `reflected_type'.
19764
19765         * icall.c (ves_icall_get_property_info): Distinguish between
19766         declaring and reflected type.
19767         (ves_icall_get_event_info): Likewise.
19768
19769 2004-03-09  Martin Baulig  <martin@ximian.com>
19770
19771         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
19772         (ves_icall_Type_GetField): Correctly set field->klass.
19773
19774 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
19775
19776         * loader.h: Fix warning.
19777
19778 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
19779
19780         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
19781         library routine if present.  Notice that it will still continue
19782         executing even if its missing, for those working on the Gtk#
19783         edition of Windows.Forms.
19784
19785         * assembly.c (do_mono_assembly_open): If loading the
19786         System.Windows.Forms call mono_loader_wini_init.
19787
19788 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
19789
19790         * class.h: Added MonoRemoteClass struct.
19791         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
19792         function for MonoStrings.
19793         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
19794         Added internal call for getting the proxy type.
19795         * marshal.c: Get the type of transparent proxies from its remote_class.
19796         Added methods that generate the IL for type checks and casts:
19797         mono_marshal_get_isinst, mono_marshal_get_castclass, 
19798         mono_marshal_get_proxy_cancast.
19799         * marshal.h: Declaration of the previous new methods.
19800         * object.c: Added new moethods for creating and updating MonoRemoteClass
19801         instances: mono_remote_class, mono_upgrade_remote_class, 
19802         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
19803         * verify.c: FIx transparent_proxy_fields layout.
19804         * appdomain.c: Bump corlib version.
19805
19806 2004-03-04  Jackson Harper  <jackson@ximian.com>
19807
19808         * icall.c: Add icall to access char conversion tables.
19809         * char-conversions.h: Character conversion tables.
19810         * Makefile.am: Add char-conversions.h private header file.
19811         
19812 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
19813
19814         * appdomain.c (unload_thread_main): Increase unloading timeout to
19815         10 sec as a temporary workaround for Nant problems.
19816
19817 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
19818
19819         * gc.c: Add checks for GC_enable and GC_disable.
19820
19821         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
19822         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
19823         (bug #54988).
19824         
19825 2004-02-27  Martin Baulig  <martin@ximian.com>
19826
19827         * reflection.c (mono_reflection_bind_generic_parameters): Take a
19828         `MonoReflectionType *' instead of a `MonoType *'.
19829
19830 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
19831
19832         * gc.c (run_finalize): Avoid finalizing the object representing the
19833         finalizer thread.
19834         (finalizer_thread): Fix warning.
19835
19836 2004-02-25  Martin Baulig  <martin@ximian.com>
19837
19838         * class.c (_mono_class_get_instantiation_name): Added `int offset'
19839         argument for nested types.
19840         (mono_class_create_generic): Added support for nested generictypes.
19841
19842         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
19843         `GList *nested'.
19844
19845         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
19846
19847         * reflection.c (method_encode_signature): Increase the minimum
19848         value of `size' from 10 to 11.
19849         (mono_reflection_bind_generic_parameters): Take `int type_argc'
19850         and `MonoType **types' arguments instead of the `MonoArray
19851         *types'; added `MonoType *nested_in'.  Recursively instantiate
19852         nested classes. 
19853
19854 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
19855
19856         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
19857         stack_overflow_ex members which are used by exception handling.
19858
19859         * appdomain.c (mono_runtime_init): Initialize the new members.
19860
19861         * gc.c (mono_gc_enable): New helper function.
19862         * gc.c (mono_gc_disable): New helper function.
19863
19864 2004-02-23  Martin Baulig  <martin@ximian.com>
19865
19866         * icall.c: I must have been really stupid - make it actually work
19867         this time ;-)
19868
19869 2004-02-23  Martin Baulig  <martin@ximian.com>
19870
19871         * loader.c (method_from_memberref): Only inflate the method if
19872         it's in another klass.
19873
19874 2004-02-23  Martin Baulig  <martin@ximian.com>
19875
19876         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
19877         (mono_class_init): If we're a generic instance and an interface,
19878         compute `class->interface_id'; also create `class->interfaces'
19879         here and inflate them.
19880
19881         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
19882         `ginst->is_open'.
19883         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
19884
19885         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
19886
19887 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
19888
19889         * reflection.c (method_encode_code): Improved the error message
19890         generated by the exception.
19891
19892 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19893
19894         * icall.c: Martin did not do what he said in the ChangeLog for
19895         2004-02-18, but put back the changes for properties and events.
19896         Commenting those changes out again and adding comment to bug #54518.
19897         
19898         * process.c: removed warning.
19899
19900 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
19901
19902         * marshal.c (emit_struct_conv): Print an error message instead of
19903         asserting when a type does not have the StructLayout attribute.
19904
19905 2004-02-20  Martin Baulig  <martin@ximian.com>
19906
19907         * reflection.c (mono_type_get_object): Also use the cache for
19908         generic instances.
19909         (mono_reflection_bind_generic_parameters): Always compute
19910         `ginst->ifaces'.        
19911
19912 2004-02-20  Martin Baulig  <martin@ximian.com>
19913
19914         * class.h (MonoGenericMethod): Removed `klass'.
19915
19916         * class.c (mono_class_inflate_generic_method): Added `MonoClass
19917         *klass' argument.
19918
19919 2004-02-20  Martin Baulig  <martin@ximian.com>
19920
19921         * reflection.c (method_encode_methodspec): Actually use the
19922         uninflated signature for the memberref.
19923
19924 2004-02-20  Martin Baulig  <martin@ximian.com>
19925
19926         * class.h (MonoGenericMethod): Removed `declaring'.
19927
19928         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
19929         is NULL, compute it here.
19930
19931 2004-02-20  Martin Baulig  <martin@ximian.com>
19932
19933         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
19934
19935         * metadata.c (mono_metadata_generic_inst_hash): New method.
19936         (mono_metadata_generic_inst_equal): New method.
19937
19938         * reflection.c (mono_reflection_bind_generic_parameters): Use the
19939         `klass->image->generic_inst_cache' cache to avoid creating
19940         duplicate MonoGenericInst's.
19941
19942         * class.c (mono_class_inflate_generic_type): Use the cache.
19943
19944 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
19945
19946         * object.c: fixed gc descriptor calculation for embedded valuetypes.
19947
19948 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19949
19950         * icall.c: added Socket.WSAIoctl icall.
19951
19952         * socket-io.[ch]: implemented
19953         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
19954
19955 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
19956
19957         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
19958
19959 2004-02-18  Urs C Muff  <umuff@quark.com>
19960
19961         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
19962         this work on PPC and other big-endian architectures.
19963
19964         * debug-mono-symfile.h: Prepended the names of all the `guint32'
19965         fields with an underscore to make sure they're only accessed by
19966         the read32() macro.
19967
19968 2004-02-18  Martin Baulig  <martin@ximian.com>
19969
19970         * icall.c: Put the klass->refclass changes back for methods and
19971         fields, but not for properties and events.  We're currently not
19972         distinguishing between DeclaringType and ReflectedType for
19973         properties and events, that's what caused the regressions.
19974
19975 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19976
19977         * object.c:
19978         (mono_async_result_new): the handle can be NULL.
19979
19980         * threadpool.c: Use an event instead of a semaphore, don't initialize
19981         it until needed. This saves quite a few semaphores from being created
19982         when using the threadpool.
19983
19984 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
19985
19986         * object.c (mono_string_is_interned_lookup): Fix interning of long
19987         strings. Fixes #54473.
19988
19989         * domain.c (ldstr_equal): Optimize if the two strings are equal.
19990
19991         * icall.c: Revert the klass->refclass changes since they introduce
19992         regressions (bug #54518).
19993
19994 2004-02-18  Martin Baulig  <martin@ximian.com>
19995
19996         * class.c (mono_class_init): If we're a generic instance and don't
19997         come from a TypeBuilder, inflate our members here.
19998         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
19999         (mono_class_create_generic): New public method.
20000         (mono_class_initialize_generic): Removed.
20001         (get_instantiation_name): Renamed to
20002         _mono_class_get_instantiation_name() and made it public.
20003
20004 2004-02-18  Martin Baulig  <martin@ximian.com>
20005
20006         * class.c (mono_class_inflate_generic_type): Clear the new
20007         instance's `nginst->klass' when inflating a generic instance.
20008         (mono_class_is_subclass_of): Added (basic) support for generic
20009         instances.
20010
20011 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
20012
20013         * appdomain.h, domain.c: use a MonoCodeManager instead of a
20014         MonoMempool to hold compiled native code.
20015
20016 2004-02-17  Martin Baulig  <martin@ximian.com>
20017
20018         * class.h (MonoDynamicGenericInst): Added `count_properties' and
20019         `properties'.
20020
20021         * reflection.c (mono_reflection_generic_inst_initialize): Added
20022         `MonoArray *properties' argument.
20023
20024         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
20025
20026 2004-02-17  Martin Baulig  <martin@ximian.com>
20027
20028         * icall.c (ves_icall_Type_GetFields): Renamed to
20029         ves_icall_Type_GetFields_internal() and added a
20030         `MonoReflectionType *rtype' argument; pass it to
20031         mono_field_get_object() to set the field's "reflected" type.
20032         (ves_icall_Type_GetConstructors): Likewise.
20033         (ves_icall_Type_GetEvents): Likewise.
20034         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
20035         argument; pass it to mono_method_get_object() to set the method's
20036         "reflected" type.       
20037
20038 2004-02-17  Martin Baulig  <martin@ximian.com>
20039
20040         * class.h (MonoDynamicGenericInst): New type.
20041         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
20042
20043         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
20044         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
20045         (ves_icall_MonoGenericInst_GetFields): New interncall.
20046
20047         * class.c (mono_class_from_generic): Don't call
20048         mono_class_initialize_generic() if this is a dynamic instance;
20049         ie. it's being created from a TypeBuilder.
20050         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
20051         `class->byval_arg.type'.
20052
20053         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
20054         to `inflate_method' and made static.
20055         (mono_reflection_inflate_field): Removed.
20056         (mono_reflection_generic_inst_initialize): New public method.
20057
20058         * reflection.h (MonoReflectionGenericInst): Removed `methods',
20059         `ctors' and `fields'; added `initialized'.
20060
20061 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20062
20063         * debug-helpers.c (mono_method_full_name): Fix output for empty
20064         namespaces.
20065
20066 2004-02-12  Martin Baulig  <martin@ximian.com>
20067
20068         * class.h (MonoClassField): Added `MonoType *generic_type'.
20069
20070         * reflection.c (mono_image_get_fieldref_token): Added support for
20071         instantiated generic types.
20072         (field_encode_inflated_field): Removed.
20073         (mono_image_get_inflated_field_token): Removed.
20074         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
20075
20076         * reflection.h (MonoReflectionInflatedField): Removed.
20077
20078 2004-02-12  Martin Baulig  <martin@ximian.com>
20079
20080         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
20081         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
20082
20083         * reflection.c (mono_image_get_methodspec_token): Take a
20084         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
20085         (mono_image_create_token): Check whether we have a
20086         `method->signature->gen_method' and call
20087         mono_image_get_methodspec_token() if appropriate.
20088         (inflated_method_get_object): Removed.
20089         (mono_reflection_bind_generic_method_parameters): Return a
20090         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
20091         (mono_reflection_inflate_method_or_ctor): Likewise.
20092
20093         * reflection.h (MonoReflectionInflatedMethod): Removed.
20094
20095 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
20096
20097         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
20098         for custom valuetype marshalling.
20099
20100         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
20101
20102 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20103
20104         * icall.c: fixed WSAGetLastError_internal name.
20105
20106 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * threads.c (mono_thread_attach): Allow this to be called multiple
20109         times for a thread.
20110         
20111         * threads.c (build_wait_tids): Do not wait for ourselves.
20112
20113         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
20114         appdomain list is empty.
20115
20116         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
20117         memory returned by mono_string_builder_to_utf16, since it points into
20118         managed memory. Thanks to Bernie Solomon for noticing this.
20119
20120         * icall.c: Add AppDomainSetup icalls.
20121
20122         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
20123
20124         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
20125         types.
20126
20127         * reflection.c (reflection_methodbuilder_to_mono_method): Save
20128         custom attributes to the method_aux struct. Also fix array indexes etc.
20129
20130         * loader.c (mono_method_get_param_names): Make dynamic case work again.
20131         
20132 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
20133
20134         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
20135         (both static and runtime) and reduce startup time.
20136
20137 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
20140         AsAny marshalling conversion instead of crashing.
20141
20142         * marshal.c: Fix warnings.
20143
20144 2004-02-09  Martin Baulig  <martin@ximian.com>
20145
20146         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
20147
20148         * reflection.h (MonoReflectionInflatedMethod): Removed the
20149         `declaring' field, it's now in the unmanaged MonoGenericMethod.
20150
20151         * reflection.c (method_encode_methodspec): Removed the `method'
20152         argument; we get it from `gmethod->declaring'.
20153         (inflated_method_get_object): Removed the `declaring' argument.
20154
20155 2004-02-09  Martin Baulig  <martin@ximian.com>
20156
20157         * class.h (MonoGenericMethod): New type.
20158         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
20159         `generic_method'.
20160
20161         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
20162         a `MonoGenericMethod *gen_method' one.
20163
20164         * class.c (mono_class_inflate_generic_type): Take an additional
20165         `MonoGenericMethod * argument.  This is only non-NULL if we're
20166         inflating types for a generic method.   
20167         (mono_class_inflate_generic_signature): Renamed to
20168         inflate_generic_signature() and made static; take a
20169         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
20170         (inflate_generic_header): Take a `MonoGenericMethod *' argument
20171         instead of a `MonoGenericInst *' one.
20172         (mono_class_inflate_generic_method): Likewise.
20173
20174         * reflection.c (encode_generic_method_sig): Take a
20175         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
20176         (method_encode_methodspec): Likewise.
20177         (inflated_method_get_object): Likewise. 
20178
20179         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
20180         field with a `MonoGenericMethod *gmethod' one.  
20181
20182 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
20183
20184         * class.h (mono_class_has_parent): add parens to expansion
20185         so you can ! this.
20186
20187 2004-02-08  Martin Baulig  <martin@ximian.com>
20188
20189         * image.h (MonoImage): Removed `generics_cache'.
20190
20191         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
20192         instead of a `MonoType *' argument; removed the `inflate_methods'
20193         argument.  Don't inflate methods here.
20194
20195         * loader.c (find_method): If it's a generic instance, call
20196         mono_class_init() on the `sclass->generic_inst->generic_type'.
20197
20198         * metadata.c (mono_type_size): Make this work on uninitialized
20199         generic instances; call it on the `ginst->generic_type's class.
20200
20201         * reflection.c (mono_reflection_bind_generic_parameters): Call
20202         mono_class_from_generic() to create the `ginst->klass'.
20203
20204 2004-02-08  Martin Baulig  <martin@ximian.com>
20205
20206         * class.h (MonoClass): Changed type of `generic_inst' from
20207         `MonoType *' to `MonoGenericInst *'.
20208
20209 2004-02-08  Martin Baulig  <martin@ximian.com>
20210
20211         * icall.c (ves_icall_Type_BindGenericParameters): Just call
20212         mono_type_get_object(), this is now creating a `MonoGenericInst'
20213         for MONO_TYPE_GENERICINST.
20214         (ves_icall_MonoGenericInst_GetParentType): Likewise.
20215         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
20216
20217         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
20218         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
20219         (inflated_method_get_object): Added `MonoClass *refclass' argument.
20220         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
20221         and reflected type.
20222
20223         * reflection.h (MonoReflectionInflatedMethod): Removed
20224         `declaring_type' and `reflected_type'.
20225
20226 2004-02-08  Martin Baulig  <martin@ximian.com>
20227
20228         * class.h (MonoGenericInst): Added `MonoType *parent' and
20229         `MonoType **ifaces'.
20230
20231         * reflection.h (MonoReflectionGenericInst): Removed `klass',
20232         `parent' and `interfaces'.
20233
20234         * reflection.c (mono_reflection_bind_generic_parameters): Take a
20235         `MonoType *' argument and return a `MonoType *'.
20236
20237         * icall.c
20238         (ves_icall_MonoGenericInst_GetParentType): New interncall.
20239         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
20240
20241 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
20242
20243         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
20244         valuetype marshalling.
20245
20246 2004-02-06  Martin Baulig  <martin@ximian.com>
20247
20248         * class.c
20249         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
20250         (my_mono_class_from_generic_parameter): Likewise.
20251
20252 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
20253
20254         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
20255         contents of the symbol files lazily.
20256
20257         * object.h (MonoThread): Add 'name' and 'name_len' fields.
20258
20259         * threads.h threads.c icall.c: New icalls for getting and setting the
20260         threads name.
20261
20262 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
20263
20264         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
20265         Raise an exception when the domain is not found.
20266
20267 2004-02-03  Martin Baulig  <martin@ximian.com>
20268
20269         * reflection.c (mono_image_get_methodspec_token): Use the
20270         uninflated signature; fixes gen-33.
20271
20272 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20273
20274         * gc.c threads.c: Make the finalizer thread a normal managed thread so
20275         the finalizer code can use thread functionality.
20276
20277         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
20278         the finalizer thread.
20279
20280         * threads.c: Make some functions more robust.
20281
20282         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
20283
20284         * metadata.h: Add new marshalling conventions.
20285
20286         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
20287         stringbuilder marshalling. Fixes #53700.
20288
20289         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
20290
20291         * reflection.c (mono_image_get_type_info): Save declarative security
20292         info.
20293
20294         * reflection.c (mono_image_get_field_info): Handle uninitialized 
20295         unmanaged fields as well.
20296
20297         * appdomain.c: Bump corlib version.
20298
20299 2004-02-01  Martin Baulig  <martin@ximian.com>
20300
20301         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
20302         method type arguments.  
20303
20304 2004-01-30  Duncan Mak  <duncan@ximian.com>
20305
20306         * marshal.h: Add prototype for
20307         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
20308         and
20309         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
20310         fix the build.
20311
20312 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
20313
20314         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
20315         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
20316
20317 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
20318
20319         * marshal.c (mono_marshal_get_native_wrapper): Add support for
20320         custom marshalling of valuetypes.
20321
20322         * marshal.c: Fix some warnings.
20323
20324 2004-01-29  Martin Baulig  <martin@ximian.com>
20325
20326         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
20327         for generic method parameters.
20328
20329         * reflection.c (method_encode_methodspec): Write the uninflated
20330         signature into the methodspec table.
20331         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
20332         is always the uninflated method.
20333         (reflection_methodbuilder_to_mono_method): Copy the generic
20334         parameters from the MethodBuilder into `header->gen_params'.
20335
20336 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
20337
20338         * class.c (mono_class_from_generic_parameter): Fix warning.
20339
20340 2004-01-27  Martin Baulig  <martin@ximian.com>
20341
20342         * class.c (mono_class_from_generic_parameter): Don't create
20343         `klass->methods' here.  
20344
20345 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
20346
20347         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
20348         extension since it does not work with libraries named lib<FOO>.dll.so.
20349
20350 2004-01-25  Martin Baulig  <martin@ximian.com>
20351
20352         * class.c (mono_class_inflate_generic_type): Added support for
20353         MONO_TYPE_GENERICINST.
20354
20355         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
20356         inflate methods on open constructed types.      
20357
20358 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20359
20360         * object.c: fire ProcessExit event in the root AppDomain after running
20361         Main. Fixes bug #53299.
20362
20363 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20364
20365         * socket-io.c: include the new socket-wrappers.h header.
20366         Use the wrappers instead of the unix socket functions to make the code
20367         more clear.
20368
20369 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
20370
20371         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
20372
20373         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
20374         Fixes #22532.
20375
20376 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
20377
20378         * reflection.c (mono_image_create_pefile): Handle the case when the
20379         entry point is not a MethodBuilder.
20380
20381         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
20382         field to ReflectionMethod since it is not allways a builder.
20383
20384         * reflection.c (type_get_fully_qualified_name): New helper function to
20385         return the fully qualified name of a type.
20386
20387         * reflection.c (encode_marshal_blob): Always emit the fully qualified
20388         type name for custom marshallers.
20389
20390         * reflection.c (mono_marshal_spec_from_builder): Ditto.
20391
20392         * class.c (mono_class_setup_vtable): If a parent class already 
20393         implements an interface, use the implementing methods from that class.
20394         Fixes #53148.
20395
20396 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20397
20398         * threadpool.c: just return instead of ExitThread to allow for thread
20399         clean up earlier.
20400
20401 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
20402
20403         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
20404         when closing resource modules.
20405
20406         * reflection.c (mono_image_create_pefile): Handle the case when the
20407         entry point is not a MethodBuilder.
20408
20409         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
20410         field to ReflectionMethod since it is not allways a builder.
20411
20412 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
20413
20414         * marshal.c (mono_marshal_get_managed_wrapper): 
20415         mono_marshal_alloc takes native int so CONV_I
20416         the arg for 64bits.
20417
20418 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
20419
20420         * reflection.c (fixup_cattrs): New function to fixup the methoddef
20421         tokens in the cattr table. Fixes #53108.
20422
20423 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20424
20425         * loader.c: don't trim ".dll" before looking up in the config file.
20426         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
20427
20428 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
20429
20430         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
20431         Return the module which contains the resource as well.
20432         (ves_icall_System_Reflection_Module_Close): New icall.
20433
20434         * appdomain.c: Bump corlib version number.
20435
20436         * image.c (mono_image_addref): New public function.
20437
20438         * assembly.c: Call mono_image_addref.
20439
20440         * reflection.c (mono_module_get_object): Increase reference count of 
20441         the image.
20442
20443         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
20444         Fixes #22532.
20445
20446         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
20447         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
20448         proper exceptions on DllImport problems.
20449
20450 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
20451
20452         * class.c, metadata.c: eliminate CSIZE macro.
20453
20454 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
20455
20456         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
20457         * object.h: Added async_callback field in MonoAsyncResult.
20458         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
20459         * verify.c: Added async_callback in MonoAsyncResult layout.
20460
20461 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * reflection.c (mono_reflection_get_custom_attrs): Add support
20464         for Modules.
20465
20466 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
20467
20468         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
20469         marshalling.
20470         (mono_marshal_method_from_wrapper): Add null pointer check.
20471
20472 2004-01-16  Martin Baulig  <martin@ximian.com>
20473
20474         * debug-mono-symfile.h: Set version number to 36 and reflect
20475         latest symbol writer changes.
20476
20477 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
20478
20479         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
20480         multi-dimensional arrays.
20481         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
20482         (mono_class_from_mono_type): Use bounded_array_class_get.
20483         
20484         * class.c (mono_bounded_array_class_get): New function which takes
20485         a 'bounded' bool argument to distinguish vectors from one dimensional
20486         arrays.
20487
20488         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
20489         bounded_array_class_get if the array has bounds.
20490
20491         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
20492         Search modules loaded using AssemblyBuilder:AddModule as well.
20493
20494 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20495
20496         * appdomain.c: increased corlib version.
20497         * filewatcher.c: removed g_print.
20498         * icall.c:
20499         (get_property_info): only allocate what is actually requested.
20500         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
20501
20502 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20503
20504         * Makefile.am: added filewatcher.[ch]
20505         * filewatcher.[ch]: FileSystemWatcher runtime support.
20506         * icall.c: added new FSW icalls.
20507
20508 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20509
20510         * string-icalls.c: fix stringbuilder regression as suggested by
20511         Iain McCoy <iain@mccoy.id.au>.
20512
20513 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
20514
20515         * process.c (process_read_stringtable_block): Recognize '007f' as
20516         a language neutral stringtable block.
20517
20518 2004-01-12  Patrik Torstensson
20519
20520         * object.h (MonoStringBuilder) : Changed layout to support our
20521         new stringbuilder class.
20522         * marshal.c: Change marshalling to support the new layout of 
20523         string builder.
20524         * appdomain.c: increased version number because new layout of
20525         string builder.
20526
20527 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
20528
20529         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
20530         assembly name as an string instead of an AssemblyName, since it is
20531         easier to extract info from it.
20532
20533         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
20534         the culture subdirectories too. Fixes #52231.
20535
20536 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20537
20538         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
20539         It takes 2 new parameters with an optional name for the method to look
20540         for and case ignoring info.
20541
20542         * threadpool.c: removed unused variable.
20543
20544 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20545
20546         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
20547         It takes 2 new parameters with an optional name for the property to look
20548         for and case ignoring info.
20549         Fixes bug #52753.
20550
20551 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
20552
20553         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
20554         Fix #52451.
20555
20556 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20557
20558         * appdomain.c:
20559         * assembly.c: escape the uri before passing it to g_filename_from_uri.
20560         Fixes bug #52630.
20561
20562 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
20563
20564         * reflection.c: Add support for more than one unmanaged resource.
20565
20566         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
20567         in field->def_value, as done in all other cases.
20568
20569         * reflection.c (mono_reflection_get_custom_attrs): Add support for
20570         TypeBuilders.
20571
20572         * reflection.c (mono_reflection_create_runtime_class): Remove 
20573         errorneous assignment to klass->element_class, since it is already
20574         done in mono_reflection_setup_internal_class.
20575
20576 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20577
20578         * gc.c: added missing LeaveCriticalSection.
20579         * icall.c: indented a couple of lines.
20580         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
20581         if we call EndInvoke inside a callback. Fixes bug #52601.
20582
20583 2004-01-07  Martin Baulig  <martin@ximian.com>
20584
20585         * mono-debug-debugger.h
20586         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
20587
20588 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
20589
20590         * appdomain.c: Use messages in NotImplementedException.
20591
20592         * exception.c (mono_get_exception_not_implemented): Now this takes
20593         a message argument.
20594
20595         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
20596         exception instead of g_asserting an aborting when something is not
20597         implemented.
20598
20599         Add some inline docs.
20600
20601 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
20602
20603         * reflection.h: Update after changes to object layout.
20604
20605         * reflection.c: Implement saving of unmanaged aka win32 resources.
20606
20607         * appdomain.c: Bump version number.
20608
20609         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
20610         Handle missing domains gracefully.
20611
20612 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
20613
20614         * file-io.c : On Windows, there are much more invalid_path_chars.
20615
20616 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20617
20618         * class.h, object.c: prepare for GetType () speedup.
20619
20620 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
20621
20622         * profiler.c: workaround for --profile null reference exception on
20623           cygwin. Patch by Patrik Torstensson.
20624
20625 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
20626
20627         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
20628         make work for unaligned access.
20629
20630 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
20631
20632         * class.c: small cleanup (class->fields [i] -> field).
20633         * image.c: check address of metadata is valid.
20634
20635 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
20636
20637         * assembly.h assembly.c (mono_assembly_loaded): New public function to
20638         search the list of loaded assemblies.
20639
20640         * reflection.c (mono_reflection_type_from_name): Use 
20641         mono_assembly_loaded instead of mono_image_loaded.
20642
20643         * reflection.c: Fix warnings.
20644
20645 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
20646
20647         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
20648         is dynamic. This is needed since an assembly can contain both dynamic and
20649         non-dynamic images.
20650
20651         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
20652         assembly->dynamic.
20653
20654         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
20655
20656         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
20657         to store modules loaded using AddModule.
20658
20659         * reflection.c (mono_image_fill_file_table): Generalize this so it works
20660         on Modules.
20661
20662         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
20663
20664         * reflection.c (mono_image_fill_export_table_from_module): New function to
20665         fill out the EXPORTEDTYPES table from a module.
20666
20667         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
20668         into a separate function. Also handle loaded non-dynamic modules.
20669
20670         * reflection.c (mono_image_basic_init): Fix memory allocation.
20671
20672         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
20673
20674         * assembly.c (mono_assembly_load_references): Make this public.
20675
20676 2003-12-19  Martin Baulig  <martin@ximian.com>
20677
20678         * class.c (mono_class_initialize_generic): Made this static, take
20679         a `MonoGenericInst *' instead of a `MonoClass *'.
20680         (mono_class_from_generic): Call mono_class_initialize_generic()
20681         unless we're already initialized or being called from
20682         do_mono_metadata_parse_generic_inst().
20683
20684         * class.h (MonoGenericInst): Added `initialized' and
20685         `init_pending' flags.
20686
20687         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
20688         `mono_class_init (gklass)' or mono_class_initialize_generic()
20689         here; set `generic_inst->init_pending' while parsing the
20690         `type_argv'.
20691
20692 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
20693
20694         * locales.c: include string.h for memxxx prototypes
20695
20696 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
20697
20698         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
20699         constructor when accessing literal fields.
20700
20701 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
20702
20703         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
20704
20705         * reflection.c (assembly_add_resource_manifest): New function to fill
20706         the MANIFESTRESOURCE table.
20707
20708         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
20709
20710         * reflection.h: Update to changes in class layout.
20711
20712         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
20713         Reenable call to mono_runtime_is_shutting_down ().
20714
20715         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
20716         determine if the runtime is shutting down.
20717
20718 2003-12-16  Jackson Harper <jackson@ximian.com>
20719
20720         * icall.c: comment out call to mono_runtime_is_shutting_down to
20721         fix build.
20722         
20723 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
20724
20725         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
20726         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
20727
20728 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
20729
20730         * reflection.c: move definition of swap_with_size
20731         to before its first call
20732
20733 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
20734
20735         * appdomain.c (mono_runtime_is_shutting_down): New public function.
20736
20737         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
20738         icall.
20739
20740         * object.c: Fix warnings.
20741
20742         * icall.c (ves_icall_Type_Get...): Only consider inherited static
20743         members if FlattenHierarchy is set.
20744
20745         * reflection.c (mono_image_add_decl_security): New function to emit
20746         declarative security.
20747
20748         * reflection.h reflection.c: Add support for declarative security.
20749
20750         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
20751         
20752 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
20753
20754         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
20755         
20756         * appdomain.c verify.c: Moved corlib version checking into its own
20757         function in appdomain.c since it needs to create vtables etc.
20758
20759 2003-12-13  Patrik Torstensson <p@rxc.se>
20760
20761         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
20762         instead of unwrapped server.
20763
20764 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
20765
20766         * verify.c (check_corlib): Fix field index.
20767
20768 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
20769
20770         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
20771         GetGacPath icall.
20772
20773 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
20774
20775         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
20776         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
20777         cope with sizeof(size_t) != sizeof(guint32).
20778
20779 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20780
20781         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
20782         in case of failure.
20783
20784 2003-12-10  Mark Crichton <crichton@gimp.org>
20785
20786         * icall.c: removed the GetNonZeroBytes.  We now handle this case
20787         in managed code.
20788
20789         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
20790
20791 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
20792
20793         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
20794         marked as deleted.
20795
20796 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
20797
20798         * verify.c (check_corlib): Handle the case when the version field is 
20799         initialized by a static constructor.
20800
20801 2003-12-08  Patrik Torstensson  <p@rxc.se>
20802
20803     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
20804
20805 2003-12-08  Martin Baulig  <martin@ximian.com>
20806
20807         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
20808         a MonoReflectionGenericParameter, also take the parameter index
20809         and name as arguments.
20810         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
20811         (ves_icall_MonoGenericParam_initialize): New interncall.
20812         (ves_icall_Type_make_byref_type): New interncall.
20813
20814         * reflection.h (MonoReflectionGenericParam): Derive from
20815         MonoReflectionType, not just from MonoObject.  Added `refobj' and
20816         `index' fields.
20817
20818         * reflection.c (mono_reflection_define_generic_parameter): Create
20819         and return a new MonoReflectionGenericParam; don't initialize the
20820         constraints here.
20821         (mono_reflection_initialize_generic_parameter): New public method;
20822         initializes the constraints and creates the `param->pklass'.
20823
20824 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
20825
20826         * reflection.h reflection.c: Use the new fields 'num_types', 
20827         'num_fields' and 'num_methods' to track the number of types etc.
20828
20829         * verify.c (check_corlib): Check corlib version number.
20830
20831 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
20832
20833         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
20834         function works on all methods.
20835
20836 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
20837
20838         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
20839         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
20840         the custom_type_info flag of the transparent proxy.
20841         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
20842         objects that supports IRemotingTypeInfo.
20843         * object.h: Added custom_type_info field in transparent proxy.
20844
20845 2003-12-06  Martin Baulig  <martin@ximian.com>
20846
20847         * class.c (mono_class_create_from_generic): Removed.
20848         (mono_class_from_generic): Check `ginst->klass' before doing
20849         anything else.  This is important to fully support "recursive"
20850         generic types.
20851
20852         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
20853         empty `generic_inst->klass' before doing anything else.
20854
20855 2003-12-06  Dick Porter  <dick@ximian.com>
20856
20857         * verify.c: 
20858         * object.h:
20859         * icall.c:
20860         * locales.c: Use C structs to access class fields.  Don't do a
20861         conversion between MonoString and UChar because both are
20862         platform-endian UTF-16.  Compare now takes startindex and count
20863         parameters.  Add a char overload for IndexOf.  Speed up the
20864         invariant string IndexOf.
20865
20866 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
20867
20868         * Makefile.am (monosn_LDADD): Fix parallel build.
20869
20870 2003-12-04  Martin Baulig  <martin@ximian.com>
20871
20872         * icall.c
20873         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20874         (ves_icall_Type_make_array_type): New interncall.       
20875
20876 2003-12-04  Martin Baulig  <martin@ximian.com>
20877
20878         * locales.c: also change it in the !HAVE_ICU case.
20879
20880 2003-12-04  Dick Porter  <dick@ximian.com>
20881
20882         * icall.c:
20883         * locales.c: construct_compareinfo is now in CompareInfo, not
20884         CultureInfo.
20885
20886 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
20887
20888         * image.c (mono_image_load_file_for_image): Cache loaded images in the
20889         image->files array.
20890
20891         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
20892         table as well.
20893
20894         * assembly.c (mono_assembly_load_references): Only load references
20895         once.
20896
20897         * class.c (mono_class_from_name): Avoid linear search of the 
20898         EXPORTEDTYPE table.
20899
20900         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
20901
20902 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20903
20904         * image.h (MonoImage): Add 'field_cache' field.
20905
20906         * loader.c (mono_field_from_token): Cache field lookups.
20907         
20908         * reflection.c (mono_module_get_object): Fix name property.
20909
20910         * icall.c (ves_icall_get_enum_info): Update after changes to 
20911         mono_metadata_get_constant_index ().
20912
20913         * icall.c: Get rid of get_type_info icall, use a separate icall for
20914         each type property to avoid needless memory allocations. Fixes #51514.
20915
20916         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
20917         to avoid needless binary searches.
20918
20919         * class.c (class_compute_field_layout): Move the initialization of
20920         field->def_value to mono_class_vtable ().
20921
20922         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
20923         non-corlib types.
20924
20925         * object.c (mono_object_allocate): Make it inline.
20926
20927         * object.c (mono_object_allocate_spec): Make it inline.
20928         
20929 2003-12-02  Dick Porter  <dick@ximian.com>
20930
20931         * locales.c (create_NumberFormat): NumberFormatInfo construction.
20932         Patch by Mohammad DAMT (mdamt@cdl2000.com).
20933
20934 2003-12-01  Dick Porter  <dick@ximian.com>
20935
20936         * threads.c: Fix signature and call in CreateMutex and
20937         CreateEvent.
20938
20939 2003-12-01  Dick Porter  <dick@ximian.com>
20940
20941         * icall.c: 
20942         * locales.c: Implement string compares and searching
20943
20944         * object.h: Add extra Thread field
20945
20946 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
20947
20948         * reflection.c (fixup_method): Add support for MonoCMethod.
20949
20950 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
20951
20952         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
20953
20954         * reflection.c (assembly_name_to_aname): Allow extra characters in
20955         assembly names. Fixes #51468.
20956
20957 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
20958
20959         * exception.c (mono_exception_from_name_domain): New helper function.
20960
20961         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
20962         exception object in the correct domain.
20963
20964         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
20965         formatting + make a copy a the input data.
20966
20967         * loader.c (mono_get_method_from_token): Methods which contain
20968         native code do not have entries in the ImplMap.
20969
20970         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
20971         Thanks to Gonzalo for spotting this.
20972         
20973         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
20974         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
20975
20976         * assembly.h (mono_assembly_load_from): Split the second part of 
20977         assembly loading into a new public function.
20978
20979         * exception.h (mono_get_exception_bad_image_format): New function.
20980
20981 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
20982
20983         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
20984         Enumerate all modules inside a dynamic assembly. Fixes #51293.
20985         
20986         * icall.c: Add new icall for creating dynamic methods.
20987
20988         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
20989
20990         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
20991
20992         * reflection.c (mono_reflection_create_dynamic_method): New icall to
20993         create a dynamic method.
20994
20995         * reflection.c (resolve_object): New helper function.
20996
20997         * reflection.c: Generalize ReflectionMethodBuilder and the functions
20998         which manipulate it so they can also work on dynamic methods.
20999
21000         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
21001         creating the MonoReflectionMethodAux structure if it is not needed.
21002         
21003         * reflection.h verify.c: Update after changes to object layout.
21004
21005         * reflection.c (method_builder_encode_signature): Fix compilation on
21006         gcc 2.95.x.
21007
21008 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
21009
21010         * appdomain.h: Added support for context static fields. Added static_data
21011           field to MonoAppContext and renamed thread_static_fields to a more
21012           generic special_static_fields in MonoAppDomain, since it can now contain
21013           context static fields.
21014         * domain.c: Updated hashtable name.
21015         * object.c: Replaced field_is_thread_static() for a more generic
21016           field_is_special_static() which also checks for context static attribute.
21017           In mono_class_vtable(), added support for static context fields.
21018         * threads.c: Changed methods that manage thread static fields to more
21019           generic methods so they can be reused both for thread and context static
21020           data.
21021         * threads.h: Declared some new methods.
21022
21023 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
21024
21025         * reflection.h: Update after changes to the managed types.
21026
21027         * reflection.c (encode_custom_modifiers): New helper function.
21028
21029         * reflection.c (method_encode_signature): Emit custom modifiers.
21030
21031         * reflection.c (field_encode_signature): Emit custom modifiers.
21032
21033 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21034
21035         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
21036
21037         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
21038         implementation.
21039
21040         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
21041         icall.
21042
21043         * object.c (mono_field_get_value_object): New function.
21044
21045         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
21046         specific.
21047
21048 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21049
21050         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
21051         return a preallocated out-of-memory exception instance.
21052
21053         * object.c (out_of_memory): Use the new function.
21054
21055         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
21056         flag is before the custom modifiers. Fixes #49802.
21057
21058 2003-11-16  Martin Baulig  <martin@ximian.com>
21059
21060         * class.c (mono_class_is_open_constructed_type): Implemented the
21061         MONO_TYPE_GENERICINST case.
21062
21063 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21064
21065         * assembly.c (mono_assembly_fill_assembly_name): New function to
21066         fill out the MonoAssemblyName structure.
21067         (mono_assembly_open): Use the new function.
21068
21069         * icall.c (fill_reflection_assembly_name): New helper function.
21070
21071         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
21072         new function.
21073
21074         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
21075
21076 2003-11-15  Martin Baulig  <martin@ximian.com>
21077
21078         * class.c (mono_class_is_open_constructed_type): New public
21079         function; checks whether a type is an open constructed type,
21080         ie. whether it still contains type parameters.
21081         (mono_class_inflate_generic_type): If we're a type parameter and
21082         the inflated type is also a MONO_TYPE_(M)VAR, return the original
21083         type.
21084
21085         * class.h (MonoGenericInst): Added `guint32 is_open'.
21086
21087         * loader.c (method_from_methodspec): Check whether we're an open
21088         or closed constructed type and set `ginst->is_open'.
21089
21090         * reflection.c (mono_reflection_bind_generic_parameters): Check
21091         whether we're an open or closed constructed type and set
21092         `ginst->is_open'.
21093         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
21094         from open constructed types.
21095
21096 2003-11-15  Martin Baulig  <martin@ximian.com>
21097
21098         * reflection.c (mono_reflection_bind_generic_parameters): If we're
21099         a generic instance (instead of a generic type declaration) with
21100         unbound generic parameters, bind them to our actual types.
21101
21102 2003-11-14  Martin Baulig  <martin@ximian.com>
21103
21104         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
21105
21106         * reflection.c (mono_reflection_bind_generic_parameters): If we're
21107         an interface type, populate `res->interfaces' with instantiated
21108         versions of all the interfaces we inherit.
21109
21110 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
21111
21112         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
21113         when MONO_PATH is set but doesn't contain the install dir.
21114
21115 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21116
21117         * icall.c:
21118         (ves_icall_Type_GetInterfaces): don't return an interface twice when
21119         it's also implemented in base classes. Fixes bug #50927.
21120
21121 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
21122
21123         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
21124         if this method is called from a finalizer. Fixes #50913.
21125
21126 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
21127
21128         * threads.c: Implement VolatileRead/VolatileWrite
21129
21130         * icall.c: Add new icalls for VolatileRead/VolatileWrite
21131
21132 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21133
21134         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
21135         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
21136         2.95.3.
21137
21138         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
21139         from Peter Ross (pro@missioncriticalit.com).
21140         
21141 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
21142
21143         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
21144
21145 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21146
21147         * assembly.c (mono_assembly_load_references): Disable check because it
21148         triggers on older corlibs which lots of people have.
21149
21150 2003-11-12  Jackson Harper  <jackson@ximian.com>
21151
21152         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
21153         load corlib.dll if mscorlib.dll is not found.
21154         * assembly.h: Remove corlib name define.
21155         * class.c:
21156         * domain.c:
21157         * image.c: Change corlib name to mscorlib.
21158         
21159 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21160
21161         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
21162
21163 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
21164
21165         * appdomain.h: Added loader_optimization here to sync with the C#
21166         code, and add disallow_binding_redirects field.
21167
21168 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
21169
21170         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
21171
21172         * reflection.c (mono_image_build_metadata): Fix crash on modules
21173         with no types.
21174
21175         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
21176
21177         * icall.c (ves_icall_get_method_info): Return callingConvention as
21178         well.
21179
21180         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
21181         namespaces from the EXPORTEDTYPE table as well.
21182
21183         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
21184         from all modules inside the assembly.
21185         
21186 2003-11-11  Martin Baulig  <martin@ximian.com>
21187
21188         * reflection.c (mono_reflection_bind_generic_parameters): Make
21189         this work for interfaces.
21190
21191 2003-11-11  Martin Baulig  <martin@ximian.com>
21192
21193         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
21194
21195 2003-11-11  Martin Baulig  <martin@ximian.com>
21196
21197         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
21198         "MonoInflatedMethod" and "MonoInflatedCtor".
21199
21200 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
21201
21202         * reflection.c (resolution_scope_from_image): Use the assembly table
21203         from the manifest module, since other modules don't have it.
21204
21205         * debug-helpers.c (mono_type_full_name): New helper function.
21206
21207         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
21208
21209         * image.c (mono_image_load_file_for_image): New public function which
21210         is a replacement for the load_file_for_image in class.c.
21211
21212         * assembly.c (mono_assembly_load_module): A wrapper for the function
21213         above which does assembly association and reference loading too.
21214
21215         * class.c (mono_class_from_name): Call mono_assembly_load_module.
21216
21217 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21218
21219         * appdomain.c: not all of the attributes for the full assembly name
21220         are required and the order doesn't matter. Fixes bug #50787.
21221
21222 2003-11-10  Dick Porter  <dick@ximian.com>
21223
21224         * locales.c: Use platform-endian UTF16
21225
21226 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
21227
21228         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
21229         
21230 2003-11-10  Martin Baulig  <martin@ximian.com>
21231
21232         * metadata.c
21233         (mono_metadata_load_generic_params): Make this actually work.
21234
21235         * reflection.c (mono_reflection_bind_generic_parameters): If our
21236         parent is a generic instance, pass all the `types' to it, no
21237         matter whether it has the same number of type parameters or not.
21238
21239 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
21240
21241         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
21242
21243         * assembly.c (mono_assembly_load_references): Move the image<->assembly
21244         assignment code to this function so it gets called recursively for all
21245         modules.
21246
21247         * image.c (load_modules): Remove the assembly assignment since it is
21248         now done by mono_assembly_load_references.
21249         
21250         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
21251         Add 'module' argument.
21252         (mono_module_get_types): New helper function.
21253         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
21254
21255 2003-11-08  Martin Baulig  <martin@ximian.com>
21256
21257         * class.c (mono_class_inflate_generic_method): Interface method
21258         don't have a header.
21259
21260         * reflection.c (mono_image_get_methodspec_token): Take an
21261         additional `MonoGenericInst *' argument instead of reading it from
21262         the header; this is necessary to support interfaces.
21263         (mono_image_create_token): Pass the `MonoGenericInst *' from the
21264         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
21265         (inflated_method_get_object): Take an additional `MonoGenericInst *'
21266         argument.
21267
21268         * reflection.h (MonoReflectionInflatedMethod): Added
21269         `MonoGenericInst *ginst'.
21270
21271 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
21272
21273         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
21274
21275 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
21276
21277         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
21278
21279 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21280
21281         * reflection.c 
21282         (reflection_methodbuilder_from_method_builder):
21283         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
21284         initialize a ReflectionMethodBuilder structure.
21285         (mono_image_get_methodbuilder_token):
21286         (mono_image_get_ctorbuilder_token): New functions to emit memberref
21287         tokens which point to types in another module inside the same assembly.
21288
21289         * reflection.c: Use the new helper functions.
21290         
21291         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
21292
21293         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
21294         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
21295
21296         * reflection.c (resolution_scope_from_image): Emit a moduleref if
21297         neccesary.
21298
21299         * reflection.c (mono_image_build_metadata): Emit metadata only for the
21300         current module. Emit the manifest only for the main module.
21301
21302         * reflection.c (mono_image_create_token): Add assertion when a 
21303         memberref needs to be created.
21304
21305         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
21306
21307         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
21308         larger buffer for the custom attribute blob. Fixes #50637.
21309         
21310 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21311
21312         * threadpool.c: notify listener on async processing handles after
21313         invoking the async callback. Thanks to Zoltan.
21314
21315 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
21316
21317         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
21318         avoid code duplication.
21319
21320         * reflection.h (MonoDynamicImage): New type which is currently unused,
21321         but will be used through the ref.emit code in place of 
21322         MonoDynamicAssembly.
21323
21324         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
21325         object layout.
21326
21327         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
21328         a MonoDynamicImage instead of just a MonoImage.
21329         
21330         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
21331         icalls to ModuleBuilder but keep their semantics, so they will work
21332         with moduleb->assemblyb. This will change later.
21333         
21334 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
21335
21336         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
21337         object layout.
21338
21339         * reflection.c (mono_image_build_metadata): Avoid creation of a default
21340         main module, since it is now done by the managed code.
21341
21342 2003-11-03  Martin Baulig  <martin@ximian.com>
21343
21344         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
21345         `ginst->klass' here.
21346         (method_encode_methodspec): Don't use the `ginst->generic_method's
21347         klass if it's a generic instance, use `ginst->klass' in this case.
21348
21349 2003-11-03  Martin Baulig  <martin@ximian.com>
21350
21351         * reflection.c (mono_image_get_generic_method_param_info):
21352         Removed, use mono_image_get_generic_param_info() instead.
21353         (mono_image_get_type_info): Write the GenericParam table before
21354         the Method table.  This is neccessary because in the GenericParam
21355         table, type parameters of the class (ie. '!0' etc.) must come
21356         before the ones from its generic methods (ie. '!!0' etc).
21357
21358 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
21359
21360         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
21361
21362 2003-11-02  Martin Baulig  <martin@ximian.com>
21363
21364         * reflection.c (create_generic_typespec): Take a
21365         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
21366         the generic parameters from it.
21367
21368 2003-11-02  Martin Baulig  <martin@ximian.com>
21369
21370         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
21371         instead of a `MonoClassField *' since we just need the type.
21372         (create_generic_typespec): New static function.  Creates a
21373         TypeSpec token for a generic type declaration.
21374         (mono_image_get_generic_field_token): New static function.
21375         (mono_image_create_token): If we're a FieldBuilder in a generic
21376         type declaration, call mono_image_get_generic_field_token() to get
21377         the token.
21378
21379 2003-11-02  Martin Baulig  <martin@ximian.com>
21380
21381         * reflection.h
21382         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
21383         `MonoReflectionGenericInst *declaring_type' and
21384         `MonoReflectionGenericInst *reflected_type' fields.
21385
21386         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
21387         `MonoReflectionGenericInst *declaring_type' and a
21388         `MonoReflectionGenericInst *reflected_type' argument instead of a
21389         single `MonoReflectionGenericInst *type' one.  Set
21390         `res->declaring_type' and `res->reflected_type' from them.
21391         (mono_reflection_inflate_field): Likewise.      
21392
21393 2003-11-02  Martin Baulig  <martin@ximian.com>
21394
21395         * class.c (mono_class_setup_vtable): Don't store generic methods
21396         in the vtable.  
21397
21398 2003-11-02  Martin Baulig  <martin@ximian.com>
21399
21400         * reflection.h (MonoReflectionGenericInst): Added
21401         `MonoReflectionType *declaring_type'.
21402
21403         * reflection.c (mono_reflection_bind_generic_parameters): Use
21404         `if (tb->parent)' instead of `klass->parent'.
21405
21406 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
21407
21408         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
21409         with an empty ASSEMBLY table.
21410
21411         * reflection.c (mono_image_build_metadata): Avoid using the same loop
21412         variable in the inner and outer loops.
21413
21414 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
21415
21416         * metadata.h (mono_metadata_make_token): Put parentheses around macro
21417         argument.
21418
21419         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
21420         
21421         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
21422         icalls. Instead, do everything in managed code. This is needed since
21423         it is hard to restore the original domain etc. in unmanaged code in the
21424         presence of undeniable exceptions.
21425
21426         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
21427         New icalls to push and pop appdomain refs.
21428
21429 2003-10-31  Martin Baulig  <martin@ximian.com>
21430
21431         * class.c (inflate_generic_type): Renamed to
21432         mono_class_inflate_generic_type() and made it public.
21433
21434         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
21435         New interncall.
21436
21437         * loader.c (mono_field_from_memberref): Also set the retklass for
21438         typespecs.
21439
21440         * fielder.c (mono_image_get_inflated_field_token): New static
21441         method; creates a metadata token for an inflated field.
21442         (mono_image_create_token, fixup_method): Added support for
21443         "MonoInflatedField".
21444         (fieldbuilder_to_mono_class_field): New static function.
21445         (mono_reflection_inflate_field): New public function.
21446
21447         * reflection.h
21448         (MonoReflectionGenericInst): Added `MonoArray *fields'.
21449         (MonoReflectionInflatedField): New typedef.     
21450
21451 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
21452
21453         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
21454         for Solaris and other platforms without s6_addr16
21455
21456 2003-10-30  Martin Baulig  <martin@ximian.com>
21457
21458         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
21459         argument instead of two.
21460         (mono_class_inflate_generic_signature): Likewise.
21461         (inflate_generic_header): Likewise.
21462         (mono_class_inflate_generic_method): Likewise.  In addition, if
21463         `ginst->klass' is set, it becomes the new `method->klass'.
21464
21465         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
21466         field.
21467
21468         * reflection.c (encode_generic_method_sig): Write a 0xa as the
21469         first byte. [FIXME]
21470         (method_encode_methodspec): If we have generic parameters, create
21471         a MethodSpec instead of a MethodRef.
21472         (fixup_method): Added support for "MonoInflatedMethod" and
21473         "MonoInflatedCtor".
21474         (mono_image_create_token): Added support for "MonoInflatedMethod"
21475         and "MonoInflatedCtor".
21476         (inflated_method_get_object): New static function; returns a
21477         managed "System.Reflection.MonoInflatedMethod" object.
21478         (mono_reflection_bind_generic_method_parameters): Return a
21479         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
21480         (mono_reflection_inflate_method_or_ctor): Likewise.
21481         (mono_image_get_generic_method_param_info): Initialize unused
21482         fields to zero.
21483         (mono_image_get_generic_param_info): Likewise.
21484
21485         * reflection.h (MonoReflectionInflatedMethod): New public
21486         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
21487         "S.R.MonoInflatedCtor" classes.
21488
21489         * loader.c (method_from_memberref): If we're a TypeSpec and it
21490         resolves to a generic instance, inflate the method.
21491
21492 2003-10-28  Dick Porter  <dick@ximian.com>
21493
21494         * object.c (mono_runtime_run_main): Convert command-line arguments
21495         into utf8, falling back to the user's locale encoding to do so.
21496
21497 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
21498
21499         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
21500         at this time.
21501
21502         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
21503
21504         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
21505         up icalls at method definition time. Partially fixes #33569.
21506
21507 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
21508
21509         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
21510         marshalling of arrays. Fixes #50116.
21511
21512         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
21513
21514         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
21515         points to a vtable in the dying appdomain.
21516
21517         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
21518         listeners into unmanaged code inside the lock.
21519
21520         * object.c (mono_class_vtable): Turn off typed allocation in non-root
21521         domains and add some comments.
21522
21523 2003-10-25  Martin Baulig  <martin@ximian.com>
21524
21525         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
21526
21527         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
21528
21529         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
21530         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
21531         currently parsing.  Create the generic class and store it in
21532         `generic_inst->klass' before parsing the type arguments.  This is
21533         required to support "recursive" definitions; see mcs/tests/gen-23.cs
21534         for an example.
21535         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
21536         to support recursive typespec entries.
21537
21538         * class.c (mono_class_setup_parent): If our parent is a generic
21539         instance, we may get called before it has its name set.
21540         (mono_class_from_generic): Splitted into
21541         mono_class_create_from_generic() and mono_class_initialize_generic().
21542
21543 2003-10-25  Martin Baulig  <martin@ximian.com>
21544
21545         * icall.c (ves_icall_Type_BindGenericParameters): Return a
21546         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
21547         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
21548         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
21549
21550         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
21551         (create_typespec): Likewise.
21552         (mono_reflection_bind_generic_parameters): Return a
21553         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
21554         (mono_reflection_inflate_method_or_ctor): New public function.
21555
21556         * reflection.h (MonoReflectionGenericInst): New typedef.        
21557
21558 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
21559
21560         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
21561         inside the domain lock. Fixes #49993.
21562         
21563         * object.c (mono_class_vtable): When typed allocation is used, 
21564         allocate vtables in the GC heap instead of in the mempool, since the
21565         vtables contain GC descriptors which are used by the collector even
21566         after the domain owning the mempool is unloaded.
21567
21568         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
21569
21570         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
21571         reflect what it does. Also invalidate mempools instead of freeing
21572         them if a define is set.
21573
21574         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
21575         of the appdomain.
21576         
21577         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
21578         hold the finalizable objects in this domain.
21579
21580         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
21581         appdomain.
21582
21583         * appdomain.c (mono_domain_set): New function to set the current
21584         appdomain, but only if it is not being unloaded.
21585
21586         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
21587         appdomain which is being unloaded.
21588         
21589         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
21590         unloading of the root appdomain.
21591
21592         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
21593         icall to execute a method in another appdomain. Intended as a 
21594         replacement for InternalSetDomain, which can confuse the code 
21595         generation in the JIT.
21596
21597         * appdomain.c (mono_domain_is_unloading): New function to determine
21598         whenever an appdomain is unloading.
21599
21600         * appdomain.c (mono_domain_unload): New function to correctly unload
21601         an appdomain.
21602
21603         * assembly.c (mono_assembly_load_references): Check that an assembly
21604         does not references itself.
21605
21606         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
21607         domain manually, it asks the finalizer thread to do it, then waits for
21608         the result. Also added a timeout.
21609
21610         * icall.c: Register the new icalls.
21611
21612         * threads.h threads.c: Export the mono_gc_stop_world and 
21613         mono_gc_start_world functions.
21614         
21615         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
21616         function to fill out the mempool with 0x2a.
21617
21618 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
21619
21620         * reflection.h (MonoReflectionMethodAux): New structure to store
21621         information which is rarely used, thus is not in the MonoMethod
21622         structure.
21623
21624         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
21625         store the aux info.
21626
21627         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
21628         and marshalling info into the aux structure.
21629
21630         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
21631         from the aux structure.
21632
21633         * loader.c (mono_method_get_param_names): Retrieve the param names from
21634         the aux structure.
21635         
21636 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
21637
21638         * exception.h exception.c: Add AppDomainUnloadedException && fix 
21639         warning.
21640
21641 2003-10-21  Dick Porter  <dick@ximian.com>
21642
21643         * socket-io.c
21644         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
21645         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
21646
21647 2003-10-21  Martin Baulig  <martin@ximian.com>
21648
21649         * reflection.c (mono_reflection_bind_generic_parameters):
21650         `klass->parent' is NULL for interfaces.
21651
21652 2003-10-21  Martin Baulig  <martin@ximian.com>
21653
21654         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
21655
21656 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
21657
21658         * exception.c (mono_exception_from_name_msg): New helper function for
21659         creating exceptions and initializing their message field.
21660
21661         * exception.c: Simplify functions using the new helper.
21662
21663         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
21664         New function.
21665
21666         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
21667         mono_raise_exception, since otherwise gcc doesn't generate the function
21668         epilog for raise_exception, confusing the stack unwinding in the JIT.
21669         Fixes #45043.
21670
21671         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
21672         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
21673         Fixes #49499.
21674
21675 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21676
21677         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
21678         utf8.
21679
21680 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
21681
21682         * icall.c: Removed GetUninitializedObject method because
21683           AllocateUninitializedClassInstance does the same.
21684
21685 2003-10-18  Martin Baulig  <martin@ximian.com>
21686
21687         * class.c (inflate_generic_signature): Renamed to
21688         mono_class_inflate_generic_signature() and made it public.
21689         (my_mono_class_from_generic_parameter): New static function; if we
21690         don't already have the generic parameter's MonoClass, create a
21691         very simple one which is just used internally in the runtime and
21692         not passed back to managed code.
21693
21694         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
21695
21696         * metadata.h (MonoMethodSignature): Moved the
21697         `MonoGenericParam *gen_params' to the MonoMethodHeader.
21698         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
21699
21700         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
21701         ves_icall_MonoMethod_GetGenericArguments(); this is now an
21702         interncall on the MonoMethod class, not on MethodInfo.
21703         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
21704         calling mono_reflection_bind_generic_method_parameters() directly.
21705
21706         * loader.c (mono_method_get_signature): If this is a MethodSpec;
21707         return the already computed `method->signature'.
21708         (method_from_methodspec): New static function to load a method
21709         from a MethodSpec entry.
21710         (mono_get_method_from_token): Call the new method_from_methodspec()
21711         for MethodSpec tokens.  
21712         (mono_get_method_from_token): If we're a generic method, load the
21713         type parameters.
21714
21715         * reflection.c (mono_image_get_memberref_token): Allow
21716         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
21717         table.
21718         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
21719         (mono_image_create_token): First check whether it's a generic
21720         method (so we'd need to create a MethodSpec), then do the other
21721         two alternatives.
21722         (mono_reflection_bind_generic_method_parameters): Return a
21723         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
21724         called directly from the interncall.
21725
21726 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
21727
21728         * reflection.c (load_public_key): Move loading of the public key
21729         into managed code.
21730
21731         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
21732
21733         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
21734         fields.
21735
21736         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
21737         culture, hash_alg and public_key. Fixes #49555.
21738
21739 2003-10-17  Martin Baulig  <martin@ximian.com>
21740
21741         * class.h (MonoGenericInst): Moved this declaration here and added
21742         `MonoMethod *generic_method'.
21743
21744         * icall.c
21745         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
21746         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
21747
21748         * metadata.c (mono_metadata_type_equal): Two types of
21749         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
21750         index; ie. don't compare the address of the `MonoGenericParam'
21751         structure.
21752         (mono_metadata_load_generic_params): Removed the `MonoMethod
21753         *method' argument.
21754
21755         * metadata.h (MonoGenericInst): Moved declaration to class.h.
21756         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
21757
21758         * reflection.c (method_encode_signature): Encode the number of
21759         generic parameters.
21760         (encode_generic_method_sig): New static function.
21761         (method_encode_methodspec): New static function; creates an entry
21762         in the MethodSpec table for a generic method.
21763         (mono_image_get_methodspec_token): New static function.
21764         (mono_image_create_token): Call mono_image_get_methodspec_token()
21765         for generic methods.
21766         (mono_reflection_bind_generic_method_parameters): New public
21767         function.  Instantiates a generic method.
21768
21769 2003-10-16  Martin Baulig  <martin@ximian.com>
21770
21771         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
21772         *gen_params' here from MonoMethodHeader.
21773
21774         * metadata.c (mono_metadata_parse_method_signature): If we have
21775         generic parameters, initialize `method->gen_params' and then set
21776         the correct `type->data.generic_param' in all the parameters.
21777
21778 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
21779
21780         * threads.c (mono_threads_get_default_stacksize): New function to 
21781         return the default stacksize.
21782
21783         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
21784         termination of the finalizer thread, since the previous method had
21785         race conditions. Fixes #49628.
21786
21787         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
21788         as for the other managed threads.
21789
21790 2003-10-16  Martin Baulig  <martin@ximian.com>
21791
21792         * class.c (inflate_generic_signature): Copy `generic_param_count'
21793         and `gen_params'.
21794
21795         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
21796         New interncall.
21797
21798         * metadata.c (mono_metadata_parse_method_signature): Actually set
21799         the `method->generic_param_count' here.
21800         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
21801
21802 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
21803
21804         * object.h: Add a new field to TypedRef to simplify the implementation
21805         of the REFANY opcodes in the JIT.
21806
21807         * icall.c: Make use of the new field.
21808
21809         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
21810         dynamically.
21811
21812 2003-10-15  Martin Baulig  <martin@ximian.com>
21813
21814         * class.c (mono_class_from_gen_param): Renamed to
21815         mono_class_from_generic_parameter() and moved most of the
21816         functionality from mono_reflection_define_generic_parameter()
21817         here; ie. we create a "real" class here.
21818         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
21819         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
21820         previously been called.
21821
21822         * class.h (MonoGenericParam): Moved the declaration of this struct
21823         here from metadata.h and added `MonoMethod *method'.
21824
21825         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
21826         interncall.
21827
21828         * loader.c (mono_get_method_from_token): If we have any generic
21829         parameters, call mono_metadata_load_generic_params() to read them
21830         from the MONO_TABLE_GENERICPAR.
21831
21832         * metadata.c (mono_metadata_load_generic_params): Added
21833         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
21834
21835         * metadata.h (MonoMethodSignature): Replaced
21836         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
21837         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
21838
21839         * reflection.c (mono_reflection_define_generic_parameter): Moved
21840         most of the functionality into the new
21841         mono_class_from_generic_parameter(); set the `method' field if
21842         we're a method parameter.       
21843
21844 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
21845
21846         * marshal.c (emit_struct_conv): if native size is 0
21847         emit no code.
21848
21849 2003-10-14  Martin Baulig  <martin@ximian.com>
21850
21851         * icall.c: The generics API has changed in the spec since it was
21852         added to System.Type; these modifications make it match the spec
21853         again.
21854         (ves_icall_Type_GetGenericParameters): Renamed to
21855         `ves_icall_Type_GetGenericArguments'.
21856         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
21857         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
21858         `ves_icall_MonoType_get_HasGenericArguments'.
21859         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
21860         `ves_icall_MonoType_get_IsGenericParameter'.
21861         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
21862         this is no interncall anymore.
21863         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
21864         `ves_icall_TypeBuilder_get_IsGenericParameter'.
21865
21866 2003-10-14  Martin Baulig  <martin@ximian.com>
21867
21868         * reflection.c (mono_reflection_bind_generic_parameters): Also
21869         inflate generic methods if we're reading the class from IL.
21870
21871 2003-10-13  Martin Baulig  <martin@ximian.com>
21872
21873         * reflection.c (mono_reflection_define_generic_parameter): This
21874         method isn't called directly from the icall anymore; take a
21875         `MonoReflectionAssemblyBuilder *' so we can use this for type and
21876         method generic parameters.
21877         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
21878         (method_builder_encode_signature): Encode generic parameters.
21879         (mono_image_get_method_info): Write generic params to the
21880         MONO_TABLE_GENERICPARAM table.
21881
21882         * reflection.h (MonoReflectionMethodBuilder): Added
21883         `MonoArray *generic_params'.
21884
21885         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
21886
21887         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
21888         wrapper for mono_reflection_define_generic_parameter().
21889         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
21890
21891 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
21892
21893         * marshal.h: Add missing function to fix build.
21894
21895         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
21896         the SetLastError pinvoke attribute.
21897
21898         * marshal.c (mono_marshal_set_last_error): New helper function called
21899         by the generated code.
21900         
21901         * marshal.c (mono_mb_emit_branch): New helper function.
21902
21903         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
21904
21905         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
21906         classes as parameters and return values of delegates. Fixes #29256. 
21907
21908 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
21909
21910         * locales.c: use gint32 in non HAVE_ICU case
21911
21912 2003-10-11  Martin Baulig  <martin@ximian.com>
21913
21914         * mono-debug.c (mono_debug_add_method): Added a workaround for
21915         bug #48591.
21916
21917 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21918
21919         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
21920         delegates passed to native code must use the STDCALL calling 
21921         convention. Fixes #35987.
21922
21923 2003-10-10  Martin Baulig  <martin@ximian.com>
21924
21925         * class.c (inflate_generic_type): If we're inflating for a generic
21926         type instance (and not for a generic method), return
21927         MONO_TYPE_MVAR unchanged.
21928
21929 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21930
21931         * string-icalls.c: Join ignores null strings in the source array.
21932         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
21933         * threads.c: GetAvailableTheads is slightly more accurate.
21934
21935 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
21936
21937         * threads.h threads.c : add mono_threads_set_default_stacksize
21938         and pass default to CreateThread calls.
21939
21940 2003-10-09  Dick Porter  <dick@ximian.com>
21941
21942         * icall.c:
21943         * locales.h:
21944         * locales.c: Internal calls for constructing CultureInfo and
21945         related objects from libicu (if its available.)
21946
21947 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21948
21949         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
21950
21951 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21952
21953         * threadpool.c: added an argument to async_invoke_thread that is the
21954         item to process, pass the MonoAsyncResult to the thread start function
21955         when creating a new thread. This way we don't need to acquire any lock
21956         when we're creating a new thread. Readded a semaphore for faster
21957         response times (instead of that Sleep i added).
21958
21959 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
21960
21961         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
21962         get daylight change dates better on Windows, fix handling
21963         of platforms without tm_gmtoff.
21964
21965 2003-10-06  Martin Baulig  <martin@ximian.com>
21966
21967         * class.c (inflate_generic_method): Renamed to
21968         mono_class_inflate_generic_method() and made public.
21969         (mono_class_init): Don't inflate the generic methods here.
21970         (mono_class_from_generic): Added `gboolean inflate_methods'
21971         argument.  Inflate the methods here.
21972
21973         * loader.c (mono_method_get_param_names): Ignore instances of
21974         generic types for the moment.
21975
21976         * reflection.c (fixup_method): Added support for inflated methods.
21977         (mono_image_create_token): Use mono_image_get_methodref_token()
21978         for inflated methods.
21979         (mono_custom_attrs_from_param): Ignore instances of generic types
21980         for the moment.
21981         (mono_reflection_bind_generic_parameters): New public function.
21982         Moved all the functionality from
21983         ves_icall_Type_BindGenericParameters() here and added support for
21984         dynamic types.
21985         (mono_reflection_define_generic_parameter): Initialize
21986         `klass->methods' here.
21987
21988         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
21989         functionality into mono_reflection_define_generic_parameter().
21990         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
21991         TypeBuilder, return that TypeBuilder.
21992
21993 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21994
21995         * appdomain.c: removed mono_delegate_semaphore.
21996
21997         * threadpool.c:
21998         (mono_thread_pool_add): moved hash table creation inside and the thread 
21999         creation outside of the critical region.
22000         (mono_thread_pool_finish): removed obsolete code.
22001         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
22002         continue or exit the thread depending on the queue.
22003
22004 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
22005
22006         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
22007         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
22008         handle more bool marshalling options
22009
22010 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
22011
22012         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
22013         arrays of structs. Also add a more descriptive error message when
22014         a structure member is marshalled as LPArray.
22015
22016 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * marshal.c (mono_marshal_get_native_wrapper): Add support for
22019         marshalling arrays of complex types. Fixes #29098. Also remove an
22020         usused and incomplete function.
22021
22022 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
22023
22024         * gc.c: report heap_size - free_bytes as total memory allocated
22025         (bug#49362).
22026
22027 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22028
22029         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
22030         fix timezone handling problems on Windows.
22031         
22032         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
22033         asserts when the year is outside the range handled by ms the functions.
22034
22035         * class.c (setup_interface_offsets): If the class is an interface,
22036         fill out its interface_offsets slot.
22037
22038 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22039
22040         * threadpool.c: mark threadpool threads as background.
22041
22042 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
22043
22044         * decimal.c - define DECINLINE to nothing if not using GCC
22045
22046 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22047
22048         * assembly.c: More refcount fixes.
22049
22050 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22051
22052         * string-icalls.c: if we're not trimming, return the same string.
22053         When not splitting, don't create a new string.
22054
22055 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22056
22057         * image.c:
22058         (mono_image_open): increment the ref_count inside the critical section.
22059
22060 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
22061
22062         * image.c (mono_image_open): Fix reference counting bug.
22063
22064 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
22065
22066         * marshal.c (mono_marshal_type_size) struct alignment changed for 
22067         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
22068         64bits. Avoid leak in mono_marshal_get_native_wrapper when
22069         mono_lookup_pinvoke_call throws.        
22070
22071 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22072
22073         * reflection.c (mono_reflection_parse_type): Fix #49114.
22074
22075         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
22076         temporary workaround for cygwin header problem.
22077
22078         * object.c (mono_object_isinst): Synchronize this with the code
22079         generated by the JIT for casts.
22080
22081 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22082
22083         * reflection.c (encode_type): Fix #38332.
22084
22085 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22086
22087         * marshal.c (mono_marshal_method_from_wrapper): New function to return
22088         the original method from the wrapper method.
22089
22090 2003-09-25  Martin Baulig  <martin@ximian.com>
22091
22092         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
22093         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
22094         (ves_icall_Type_get_IsGenericInstance): New interncall.
22095
22096 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
22097
22098         * object.c: fix cast warning in big endian code.
22099
22100 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
22101
22102         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
22103         
22104 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22105
22106         * assembly.c: don't call check_env from mono_assembly_load. It's
22107         already done once in mono_assemblies_init and may cause headaches when
22108         multiple threads are loading assemblies.
22109
22110 2003-09-19  Martin Baulig  <martin@ximian.com>
22111
22112         * reflection.c (mono_reflection_define_generic_parameter): Don't
22113         allocate `klass->methods', set `klass->flags' to
22114         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
22115
22116 2003-09-18  Martin Baulig  <martin@ximian.com>
22117
22118         * class.c (mono_class_init): Don't create `class->methods' if it's
22119         already initialized.
22120
22121         * metadata.c (mono_metadata_load_generic_params): Make this
22122         actually work.
22123
22124         * reflection.c (mono_reflection_define_generic_parameter): Set
22125         parent class and interfaces from the constraints.
22126
22127         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
22128         to keep this struct in sync with the declaration in TypeBuilder.cs.
22129
22130 2003-09-17  Martin Baulig  <martin@ximian.com>
22131
22132         * metadata.h (MonoType): Replaced the data's `int type_param'
22133         field with `MonoGenericParam *generic_param'.
22134         (MonoGenericParam): Added `MonoClass *klass'.
22135
22136         * class.c (mono_class_from_gen_param): Removed the
22137         `MonoImage *image' and `int type_num' arguments.
22138
22139         * metadata.c (mono_metadata_parse_generic_param): New static
22140         method; creates a MonoGenericParam which just contains the index.
22141         (do_mono_metadata_parse_type): Call
22142         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
22143         MONO_TYPE_MVAR.
22144
22145         * reflection.c (mono_image_typedef_or_ref): Generic type
22146         parameters may be in the same assembly, but never use a typedef
22147         for them.
22148         (mono_reflection_define_generic_parameter): We're now creating a
22149         "real" class for the type parameter; it's now safe to call
22150         mono_class_from_mono_type() on the class'es type, it'll do the
22151         right thing.
22152
22153 2003-09-16  Martin Baulig  <martin@ximian.com>
22154
22155         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
22156         `symfile->range_entry_size' and `symfile->class_entry_size' here;
22157         the `symfile' data structure must be fully initialized before it
22158         gets added to the table.
22159
22160 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22161
22162         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
22163
22164         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
22165         class init trampolines.
22166
22167 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22168
22169         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
22170         to the built-in profiler to turn off time and allocation profiling
22171         respectively.
22172
22173 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
22176         g_direct_equal.
22177
22178         * debug-helpers.c (mono_method_full_name): Print the wrapper type
22179         in human readable form.
22180
22181 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22182
22183         * reflection.c icall.c: Fixed warnings.
22184
22185         * image.c (load_class_names): Use a temporary hash table to hold the
22186         namespaces in order to avoid doing many string comparisons.
22187
22188         * image.h: Fix typo.
22189
22190         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
22191         Pass NULL instead of g_direct_equal to the GHashTable constructor 
22192         since the NULL case is short-circuited inside g_hash_table_lookup, 
22193         leading to better performance.  
22194
22195         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
22196         obtain the first custom attribute for a given index. Depends on the
22197         CustomAttribute table being sorted by the parent field.
22198
22199         * reflection.c (mono_custom_attrs_from_index): Use the new function 
22200         for better performance.
22201
22202 2003-09-07  Martin Baulig  <martin@ximian.com>
22203
22204         * class.c (mono_class_init): If we're a generic instance, inflate
22205         all our methods instead of loading them from the image.
22206         (mono_class_from_generic): Set `class->methods = gklass->methods'.
22207
22208 2003-09-07  Martin Baulig  <martin@ximian.com>
22209
22210         * mono-debug-debugger.c: Added support for constructors.
22211
22212 2003-09-06  Martin Baulig  <martin@ximian.com>
22213
22214         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
22215         New interncall.
22216
22217         * reflection.c (mono_reflection_setup_generic_class): Call
22218         ensure_runtime_vtable() to create the vtable.
22219
22220 2003-09-05  Martin Baulig  <martin@ximian.com>
22221
22222         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
22223         MONO_TYPE_MVAR.
22224
22225 2003-09-04  Martin Baulig  <martin@ximian.com>
22226
22227         * reflection.c (mono_reflection_define_generic_parameter): Generic
22228         parameters start with zero.
22229
22230 2003-09-04  Martin Baulig  <martin@ximian.com>
22231
22232         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
22233
22234         * reflection.h (MonoReflectionGenericParam): New typedef.
22235         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
22236         the generic parameters from the managed TypeBuilder.
22237
22238         * reflection.c (mono_reflection_define_generic_parameter): New function.
22239         (mono_reflection_create_runtime_class): Encode generic parameters.
22240         (mono_reflection_setup_generic_class): New function; this is
22241         called after adding adding all generic params to the TypeBuilder.
22242         (encode_type): Added MONO_TYPE_VAR.
22243
22244 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22245
22246         * class.h class.c (mono_class_needs_cctor_run): Moved this method
22247         here from the JIT.
22248
22249         * assembly.h assembly.c: Moved the AOT loading code into an assembly
22250         load hook.
22251
22252 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
22253
22254         * reflection.h reflection.c class.h class.c: Delete duplicate 
22255         definition of mono_type_get_name () from reflection.c and export the
22256         one in class.c.
22257
22258         * class.c: Class loading fixes from Bernie Solomon 
22259         (bernard@ugsolutions.com).
22260
22261         * reflection.c: Endianness fixes from Bernie Solomon 
22262         (bernard@ugsolutions.com).
22263         
22264 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22265
22266         * assembly.h assembly.c: Define a file format version for AOT
22267         libraries.
22268         
22269         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
22270
22271         * appdomain.h (MonoJitInfo): New field to determine whenever the
22272         code is domain neutral.
22273         
22274 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
22275
22276         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
22277
22278 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22279
22280         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
22281         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
22282         Avoid caching the result since strings must be domain specific. Fixes
22283         #48050.
22284
22285 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22286
22287         * marshal.c (mono_marshal_init): Make this callable multiple times
22288         since it is hard to find a correct place to call it.
22289
22290         * object.c (mono_runtime_class_init): Execute static constructors in
22291         the correct appdomain.
22292
22293         * image.c (build_guid_table): Handle the case when multiple images have
22294         the same GUID.
22295
22296 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22297
22298         * icall.c: added a couple of icalls for System.Web.
22299
22300 2003-08-28  Martin Baulig  <martin@ximian.com>
22301
22302         * icall.c (ves_icall_Type_BindGenericParameters): Use
22303         `klass->generic_inst' instead of `&klass->byval_arg' in the
22304         mono_type_get_object() call.  The returned type must be
22305         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
22306
22307 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22308
22309         * NOTES: New file.
22310
22311         * object.c (mono_class_proxy_vtable): Make it thread safe.
22312
22313         * pedump.c: Fix warning.
22314
22315         * object.c appdomain.h: Get rid of metadata_section. 
22316         It is no longer needed and it was causing deadlocks with domain->lock.
22317
22318         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
22319
22320 2003-08-26  Martin Baulig  <martin@ximian.com>
22321
22322         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
22323
22324 2003-08-26  Martin Baulig  <martin@ximian.com>
22325
22326         * pedump.c (main): Call mono_metadata_init(),
22327         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
22328         and mono_loader_init().
22329
22330 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
22331
22332         * loader.h: Add missing include to fix build.
22333
22334         * image.h: mono_image_load_references is no more.
22335
22336         * assembly.c: Reworked assembly loading to make it really thread safe.
22337         After these changes, the assembly returned by mono_assembly_open is
22338         fully initialized, i.e. all its references assemblies are loaded.
22339
22340         * assembly.c (mono_image_load_references): Renamed to 
22341         mono_assembly_load_references, and made private, since clients no
22342         longer need to call it.
22343
22344         * class.c: Removed calls to mono_assembly_load_references, since it was
22345         a source of deadlocks.
22346
22347         * loader.h loader.c class.h class.c: Protect data structures using a 
22348         new lock, the loader lock.
22349
22350         * class.c (mono_class_setup_vtable): Create temporary hash tables and
22351         GPtrArrays only when needed.
22352
22353         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
22354         into empty structures by mcs. Fixes pinvoke7.cs.
22355         
22356         * domain.c (mono_init): Call a new initialization function.
22357
22358         * appdomain.c (mono_runtime_init): Call the new initializer function
22359         of the marshal module.
22360
22361         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
22362         inserted into empty structures by mcs. Fixes pinvoke7.cs.
22363
22364         * marshal.h marshal.c: Added locks around the wrapper caches to make
22365         this module thread safe.
22366
22367         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
22368         this argument. Fixes pinvoke1.exe.
22369
22370 2003-08-25  Lluis Sanchez <lluis@ximian.com>
22371
22372         * object.h: Added call_type field to MonoMethodMessage and the corresponding
22373         enumeration of values. Removed fields to store remote call output values in
22374         MonoAsyncResult. Not needed any more.
22375         * object.c: Initialize call_type and async_result fields in mono_message_init.
22376         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
22377         dispatching the message.
22378         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
22379         async call to finish. To do it use a message with EndInvoke call type.
22380
22381 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
22382
22383         * loader.h loader.c (mono_method_hash_marhal_info): New function which
22384         determines whenever a method has marshalling info.
22385
22386 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22387
22388         * assembly.c: fix the build on windows.
22389
22390 2003-08-22 Lluis Sanchez <lluis@ximian.com>
22391
22392         * object.cs: Fixed bug #47785.
22393
22394 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
22395
22396         * string-icalls.c (StringReplace): If their are no occurances of
22397         the old string found return a reference to the supplied
22398         string. This saves some memory and matches MS behavoir.
22399         
22400 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22401
22402         * socket-io.c: fixed compilation for systems that define AF_INET6
22403         and don't define SOL_IP/SOL_IPV6.
22404
22405 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
22406
22407         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
22408         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
22409
22410         * rawbuffer.c rawbuffer.h: Make this module thread safe.
22411
22412         * domain.c: Make this module thread safe.
22413
22414         * domain.c (mono_init): Call new initialization function.
22415
22416         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
22417         reference types too. Fixes #38812.
22418
22419         * image.c (mono_image_init): Fixed warnings.
22420
22421         * class.c (mono_class_from_typeref): Handle assembly load failure
22422         correctly.
22423
22424         * appdomain.c (add_assemblies_to_domain): Handle the case when
22425         the references of an assembly are not yet loaded.
22426
22427         * metadata.c image.c assembly.c: Moved initialization of global
22428         variables to a separate function called at startup since lazy 
22429         initialization of these variables is not thread safe.
22430         
22431         * image.c assembly.c: Made this module thread safe by adding locks in 
22432         the appropriate places.
22433
22434         * domain.c (mono_init): Call the new initialization functions of the
22435         three modules.
22436
22437 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
22438
22439         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
22440           make a direct call. It is proxy's work to make the call asynchronous.
22441           mono_delegate_end_invoke(): If the targe is a proxy, just collect
22442           the return values.
22443         * object.cs: mono_method_call_message_new(): read AsyncResult and
22444           state object from parameters list, if this info is requested.
22445         * object.h: Added fields to store remote call output values in
22446           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
22447
22448 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22449
22450         * object.h: add needed fields to MonoThread.
22451         * threads.c, threads.h: allow registering a function to cleanup data
22452         allocated per thread by the JIT.
22453
22454 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22455
22456         * loader.h: portability fix by Bernie Solomon
22457         * <bernard@ugsolutions.com>.
22458
22459 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
22460
22461         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
22462         return a MonoArray. This simplifies the code and also ensures that
22463         the cache allways contains an object reference as a value.
22464
22465         * icall.c (ves_icall_get_parameter_info): Simplified using the new
22466         function.
22467
22468 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22469
22470         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
22471         fixes a problem with byte ordering when getting the address family for
22472         a socket.
22473
22474 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
22475
22476         * .cvsignore: Added monosn.
22477
22478         * reflection.h reflection.c loader.c: Added support for parameter
22479         marshalling to dynamically created types. Fixes #47295.
22480
22481 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22482
22483         * rand.c: remove useless warnings.
22484
22485 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22486
22487         * class.c: implemented ldtoken for methods and fieldrefs.
22488
22489 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22490
22491         * threadpool.c: when mono_async_invoke was called, no one took care of
22492         monitoring the queue. So if the method invoked took some time and we
22493         got new async invoke requests after 500 ms (the thread created waited
22494         that long in WaitForSingleObject), the new async invoke was not called
22495         until the previous one finished.
22496
22497         This is fixed now. Thanks to Totte for helping with it.
22498
22499 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22500
22501         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
22502
22503 2003-08-11  Martin Baulig  <martin@ximian.com>
22504
22505         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
22506
22507 2003-08-06  Martin Baulig  <martin@ximian.com>
22508
22509         * mono-debug-debugger.c: Added support for static fields,
22510         properties and methods.
22511
22512 2003-08-06  Martin Baulig  <martin@ximian.com>
22513
22514         * mono-debug-debugger.c: Don't store the MonoString's vtable to
22515         make this work for applications with multiple application domains.
22516
22517 2003-08-04  Martin Baulig  <martin@ximian.com>
22518
22519         * mono-debug-debugger.c: Completely reworked the type support; the
22520         most important thing is that we're now just using one single
22521         `MonoType' instance per type.
22522
22523 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
22524
22525         * mono-endian.h, mono-endian.c, icall.c: Added icall
22526         ves_icall_System_Double_AssertEndianity to assert double word endianity
22527         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
22528
22529 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22530
22531         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
22532         support, icalls and fixes.
22533
22534 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
22535
22536         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
22537         classes that are a punctuation character in .NET is not the same a
22538         g_unichar_ispunct.
22539
22540 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22541
22542         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
22543
22544 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
22545
22546         * icall.c: Add new MemCopy internalcall.
22547         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
22548         Simplified code; It is not necessary to handle all the cases here,
22549         as the C# code takes care of it.  Only handle the case of the name
22550         resource embedded into the assembly.
22551
22552         Changed signature to return the data pointer and the size of the
22553         data. 
22554
22555 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
22556
22557         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
22558         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
22559
22560 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
22561
22562         * socket-io.c: ignore EINTR error in select.
22563
22564 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
22565
22566         * class.h, class.c: removed unused subclasses field in MonoClass.
22567
22568 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
22569
22570         * icall.c: improve fix of get_base_definition(). If the parent class
22571           doesn't have the mehod, look at the parent of the parent.
22572         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
22573           to check if a parameter is an in or out parameter
22574           (PARAM_ATTRIBUTE_IN is not set by default).
22575           mono_method_return_message_restore(): Use mono_class_value_size to
22576           get the size of a value type. mono_type_stack_size (parameterType)
22577           does not return the correct value if parameterType is byRef.
22578           mono_load_remote_field(), mono_load_remote_field_new(),
22579           mono_store_remote_field(), mono_store_remote_field_new():
22580           raise exception if the remote call returns an exception.
22581
22582 2003-07-28  Martin Baulig  <martin@ximian.com>
22583
22584         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
22585         method.  This is a wrapper around mono_runtime_invoke() which
22586         boxes the instance object if neccessary.
22587
22588 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22589
22590         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
22591         metadata.h, row-indexes.h, verify.c: first cut of generics support.
22592
22593 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22594
22595         * icall.c: disable mcs bug workaround.
22596
22597 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22598
22599         * object.c (mono_runtime_class_init): Take the metadata_section
22600         mutex before obtaining the domain mutex.
22601
22602         * appdomain.h: Added definition of metadata_section mutex here. 
22603
22604         * object.c: define metadata_mutex here.
22605
22606 2003-07-24  Ravi Pratap  <ravi@ximian.com>
22607
22608         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
22609         fixed.
22610
22611 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
22612
22613         * reflection.c: Fix bug #46669
22614
22615 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22616
22617         * exception.c:
22618         * exception.h:
22619         * icall.c:
22620         * object.h: fill in the type name for TypeLoadException.
22621
22622 2003-07-23  Ravi Pratap  <ravi@ximian.com>
22623
22624         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
22625         relationship between TypeBuilders while compiling corlib) and bug
22626         45993 (Array types returned from the runtime while compiling
22627         corlib were from the loaded corlib).
22628
22629 2003-07-22  Martin Baulig  <martin@ximian.com>
22630
22631         * mono-debug-debugger.c: Reworked the type support a bit more;
22632         distinguish between types and classes.
22633
22634 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
22635
22636         * icall.c: add IsArrayImpl icall.
22637
22638 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
22639
22640         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
22641         initializing real_size only once. Also fix bug #46602.
22642
22643 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
22644
22645         * object.c: Renamed mono_metadata_section to metadata_section.
22646
22647 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
22648
22649         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
22650           empty array if the type is an array. Fixed.
22651           ves_icall_MonoMethod_get_base_definition: if the base method
22652           is abstract, get the MethodInfo from the list of methods of
22653           the class.
22654         * reflection.c: ParameterInfo.PositionImpl should be zero-based
22655           and it was 1-based. Fixed in mono_param_get_objects.
22656
22657 2003-07-20  Martin Baulig  <martin@ximian.com>
22658
22659         * mono-debug.h: Set version number to 31.
22660         (mono_debug_init): Added `MonoDomain *' argument.
22661
22662         * mono-debug-debugger.c: Reworked the type support; explicitly
22663         tell the debugger about builtin types; pass the `klass' address to
22664         the debugger.
22665
22666 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
22667
22668         * image.c: Allow new metadata tables to be loaded without a
22669         warning. Also update the warning message to give the new constant value.
22670                 
22671 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22672
22673         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
22674         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
22675         array type representation changes.
22676
22677 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22678
22679         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
22680         on Environment.Exit () call.
22681
22682 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22683
22684         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
22685         requires a matching corlib.
22686
22687 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
22688
22689         * Changelog: My editor decided to add a CR to each line. Sorry about that.
22690           Committed again without the CRs.
22691         
22692 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
22693
22694         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
22695           getting it from the "this" socket instance. Did not work
22696           if the socket is a subclass of Socket.
22697           Also fixed bug #35371.
22698
22699 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22700
22701         * metadata.c: fixed size for TypedByRef.
22702         * loader.c: when searching for a method, consider the vararg amrker.
22703         * unicode.c, decimal.c: constify some arrays.
22704
22705 2003-07-15  Dick Porter  <dick@ximian.com>
22706
22707         * socket-io.c: Fixed compilation for gcc < 3.2.
22708
22709         Fixed compilation for machines that don't have AF_INET6 (thanks to
22710         Bernie Solomon <bernard@ugsolutions.com> for that part.)
22711
22712         Fixed compile warnings.
22713         
22714         Fixed formatting and line endings.
22715
22716 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
22717
22718         * socket-io.h:
22719         * socket-io.c: Added IPv6 support.
22720
22721 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
22722
22723         * class.c (mono_class_is_assignable_from): New function to implement
22724         the is_assignable_from logic. Used by mono_object_isinst, 
22725         Type::IsAssignableFrom () and the interpreter.
22726
22727         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
22728         Object, even interfaces.
22729         
22730         * object.c (mono_object_isinst): Implement in terms of 
22731         is_assignable_from.
22732
22733         * icall.c (ves_icall_type_is_assignable_from): New icall.
22734
22735 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
22736
22737         * domain.c (foreach_domain): fix compiler warning.
22738
22739 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
22740
22741         * image.c (load_metadata_ptrs): use g_strndup because strndup is
22742         not available on all plattforms
22743
22744 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
22745
22746         * image.h image.c: Store the metadata version string in MonoImage.
22747         * icall.c: New icall to retrieve the image version.
22748         * reflection.c (create_dynamic_image): Fill in the image version field
22749         * reflection.c (build_compressed_metadata): Use the image version
22750         from the image structure.
22751
22752 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22753
22754         * appdomain.c: modified comment.
22755         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
22756         That will be its last iteration when mono_gc_cleanup is called from
22757         mono_runtime_cleanup and before the domain is unloaded.
22758
22759         Fixes bug #45962.
22760
22761 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
22762
22763         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
22764         attributes.
22765
22766 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22767
22768         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
22769         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
22770         Bernie Solomon <bernard@ugsolutions.com>.
22771
22772 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22773
22774         * object.c, object.h: provide mono_object_new_fast() for faster
22775         allocation in some special cases.
22776
22777 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22778
22779         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
22780         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
22781
22782 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22783
22784         * threadpool.c: fix leaks.
22785
22786 2003-07-01  Dick Porter  <dick@ximian.com>
22787
22788         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
22789         using MonoGHashTables.  Fixes threadpool bug posted to list.
22790
22791 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
22792
22793         * image.h, image.c: added support to load an assembly from a byte array.
22794         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
22795         assembly bundle support.
22796
22797 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
22798
22799         * threadpool.c (mono_thread_pool_add): keep a reference to the
22800         AsyncResult to prevent GC
22801
22802 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22803
22804         * class.c: leak fix.
22805
22806 2003-06-25  Dick Porter  <dick@ximian.com>
22807
22808         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
22809         for the async object, the WaitHandle object will close the handle.
22810         Fixes bug 45321.
22811
22812 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22813
22814         * class.c: in mono_array_class_get (), lookup from the hash with the
22815         same type we insert: this works around a bug in
22816         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
22817         lluis. The real fix will have to wait for after the release.
22818
22819 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22820
22821         * icall.c: fix memory leak when getting type members.
22822
22823 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
22824
22825         * reflection.c: added more pubtoken special cases.
22826
22827 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22828
22829         * class.c: handle field offset correctly when class size
22830         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
22831
22832 2003-06-20  Martin Baulig  <martin@ximian.com>
22833
22834         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
22835         *image' field.
22836
22837 2003-06-20  Martin Baulig  <martin@ximian.com>
22838
22839         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
22840
22841 2003-06-20  Martin Baulig  <martin@ximian.com>
22842
22843         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
22844         just distinguish between variables in registers and variables at
22845         an offset relative to a register.
22846
22847 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22848
22849         * icall.c: #ifdef out latest changes until mcs is fixed.
22850
22851 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22852
22853         * icall.c: return members in metadata order.
22854
22855 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22856
22857         * icall.c: avoid infinite loop in GetTimeZoneData.
22858
22859 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22860
22861         * icall.c: added Marshal.Prelink/All icalls.
22862
22863 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
22864
22865         * object.c, object.h: fix warnings and do some overflow checking
22866         when creating arrays.
22867
22868 2003-06-17  Dick Porter  <dick@ximian.com>
22869
22870         * file-io.h:
22871         * file-io.c: File attributes need to be tweaked slightly when
22872         passed from the managed to the w32 world.
22873
22874 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22875         * profiler.h profiler-private.h profiler.c: Rework last patch
22876         based on suggestion by Paolo.
22877         
22878 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22879
22880         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
22881         instruction level coverage data collection.
22882         * profiler.h profiler.c (: Added new callback function which can be
22883         used by the profiler to limit which functions should have coverage
22884         instrumentation.
22885         * profiler.c (mono_profiler_load): Call g_module_build_path to
22886         generate the file name of the profiler library.
22887
22888 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22889
22890         * profiler.c, profiler.h, profiler-private.h: added basic block 
22891         coverage profiling API.
22892
22893 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
22894
22895         * reflection.c (mono_reflection_create_runtime_class): Add support
22896         for events in dynamically generated code.
22897
22898         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
22899         not allocated.
22900
22901 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22902
22903         * icall.c: when getting timezone info, return reasonable values if we
22904         can't get the actual data.
22905
22906 2003-06-14  Dick Porter  <dick@ximian.com>
22907
22908         * threads.c (start_wrapper): Remove the reference to the thread
22909         object in the TLS data, so the thread object can be finalized.
22910         This won't be reached if the thread threw an uncaught exception,
22911         so those thread handles will stay referenced :-( (This is due to
22912         missing support for scanning thread-specific data in the Boehm GC
22913         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
22914
22915 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
22916
22917         * reflection.c: ensure streams and tables are first allocated with
22918         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
22919
22920 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22921
22922         * icall.c: fixed GetElementType for byrefs (bug# 44792).
22923
22924 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
22925
22926         * reflection.c (mono_reflection_create_runtime_class): Add support for
22927         properties to dynamically created classes.
22928         * reflection.c: Fix a few places where non-MonoObjects were inserted
22929         into the tokens hashtable.
22930
22931 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22932
22933         * object.c: some support to handle out of memory exceptions.
22934
22935 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
22936
22937         * marshal.c (mono_marshal_get_native_wrapper): support reference
22938         return types
22939
22940 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22941
22942         * object.h, object.c: more portability stuff from Bernie Solomon.
22943         Unexport mono_object_allocate(). Added mono_object_unbox ().
22944         Set exitcode when an unhandled exception is thrown.
22945
22946 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
22947
22948         * marshal.c (mono_marshal_get_native_wrapper): use custom
22949         marshaler for return types.
22950
22951 2003-06-10  Dick Porter  <dick@ximian.com>
22952
22953         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
22954         ip_mreq is available
22955
22956 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22957
22958         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
22959         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
22960         by Bernie Solomon <bernard@ugsolutions.com>.
22961
22962 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
22963
22964         * gc.c (mono_gc_init): Avoid error message on shutdown when
22965         GC_DONT_GC=1 is used.
22966
22967         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
22968         New icall to return the GUID of a module.
22969
22970 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22971
22972         * class.c: ensure instance size always includes the parent's size
22973         even whem class size is set explicitly (fixes bug#44294).
22974
22975 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22976
22977         * profiler.h, profiler.c: made the simple profiler thread-safe,
22978         get more accurate timing info. Allow the loading of an
22979         externally-developed profiler module.
22980
22981 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
22982
22983         * marshal.c (mono_marshal_get_native_wrapper): improved
22984         class/byref arguments.
22985         (mono_marshal_get_native_wrapper): better string marshaling support.
22986
22987 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22988
22989         * class.c: ensure .pack and .size are handled correctly and
22990         simplified layout of static fields.
22991
22992 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22993
22994         * appdomain.c
22995         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
22996
22997         * loader.c (mono_lookup_pinvoke_call): look for modules in the
22998         current directory (fix bug 44008)
22999
23000 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
23001
23002         * marshal.c (mono_marshal_get_native_wrapper): started support for
23003         custom marshalers.
23004         (mono_delegate_to_ftnptr): consider marshalling specifications
23005
23006 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23007
23008         * reflection.c, reflection.h: emit custom marshal info.
23009
23010 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23011
23012         * object.c: free the GError.
23013         * icall.c: added CloseEvent_internal.
23014         * threads.[ch]:
23015         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
23016         call.
23017
23018 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
23019
23020         * loader.c (mono_method_get_signature): Add support for dynamic
23021         assemblies.
23022
23023 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23024
23025         * reflection.c: fixed bug #43905.
23026
23027 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23028
23029         * class.c, domain.c, icall.c, metadata.h, object.h: support for
23030         handling TypedReference and ArgIterator.
23031         * loader.c, loader.h: added function to get signature at call site.
23032
23033 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23034
23035         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
23036         data readonly. Buglets and warning fixes. Some MethodSpec support.
23037
23038 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23039
23040         * class.h, class.c, object.c: remove relative numbering support.
23041
23042 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
23043
23044         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
23045         free the string, until we get a chance to fix Gtk#
23046
23047 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23048
23049         * marshal.c: revert last patch.
23050
23051 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23052
23053         * icall.c: updates for new mono_class_vtable() not calling
23054         the type constructor anymore.
23055
23056 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23057
23058         * object.h, object.c: separate vtable creation from type
23059         initialization. Make running the .cctor thread safe.
23060
23061 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23062
23063         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
23064
23065 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23066
23067         * loader.c (mono_get_method): consider calling convention
23068
23069 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
23070
23071         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
23072         to return the invisible global type for a module.
23073
23074         * reflection.c (mono_image_build_metadata): Emit global fields too.
23075
23076 2003-05-20  Peter Williams  <peterw@ximian.com>
23077
23078         * loader.c (mono_lookup_internal_call): Add a few newlines.
23079
23080 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
23081
23082         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
23083         literal strings.
23084
23085         * appdomain.c (set_domain_search_path): Recalculate search path when
23086         AppDomainSetup.PrivateBinPath changes.
23087
23088         * object.c (mono_class_compute_gc_descriptor): It turns out some
23089         parts of the class libs (like System.Thread) holds pointers to
23090         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
23091         to treat native int a pointer type here.
23092         
23093 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
23094
23095         * appdomain.h, domain.c: add hashtable for jump target resolution.
23096
23097 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
23098
23099         * reflection.h reflection.c icall.c: Added new icalls 
23100         GetManifestResourceInfoInternal, GetModulesInternal and support
23101         infrastructure.
23102
23103 2003-05-16  Dick Porter  <dick@ximian.com>
23104
23105         * icall.c:
23106         * file-io.h:
23107         * file-io.c: Implement System.IO.MonoIO::GetTempPath
23108
23109 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
23110
23111         * object.c: mono_store_remote_field: little fix to previous patch.
23112
23113 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23114
23115         * class.c: add constructors to array classes.
23116         * icall.c: special case array construction for InternalInvoke (),
23117
23118 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
23119
23120         * class.h class.c reflection.c object.c: Added support for field
23121         defaults in dynamically generated classes.
23122
23123 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23124
23125         * reflection.c: properly encode charset for ddlimport.
23126
23127 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23128
23129         * threads.c: allow compiling without GC.
23130
23131 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23132
23133         * appdomain.h, object.c, object.h, threads.c, threads.h: added
23134         handling of thread static data.
23135
23136 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23137
23138         * reflection.h, reflection.c: added mono_custom_attrs_free ().
23139
23140 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23141
23142         * class.c (mono_array_class_get): always set the serializable flags
23143         (mono_array_class_get): always set the SEALED attribute for array types
23144
23145 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
23146
23147         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
23148         attributes (fix for bug 42021).
23149
23150 2003-05-12  Dick Porter  <dick@ximian.com>
23151
23152         * gc.c: Don't run finalizers when the finalizer thread is
23153         finishing up, because the default domain has already been
23154         destroyed.
23155
23156 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
23157
23158         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
23159         value is null, we should throw an exception.   This is slightly
23160         different than the other conventions used for the constructor.
23161
23162 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23163
23164         * socket-io.c: fixed windows build.
23165
23166 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23167
23168         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
23169
23170 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
23171
23172         * object.c (mono_string_new_wrapper): Compatibility fix for MS
23173         compilers.
23174
23175 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
23176
23177         * class.c (mono_class_layout_fields): Add experimental GC aware
23178         auto layout facility. Requires class library changes to work correctly.
23179
23180         (mono_class_setup_vtable): Avoid overriding explicit interface
23181         method implementations. Fixes iface3.exe test.
23182
23183         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
23184         object reference.
23185         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
23186         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
23187
23188         * metadata.h: Add new type classification macro which determines
23189         whenever the type holds an object reference.
23190
23191 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23192
23193         * marshal.c (mono_marshal_get_native_wrapper): cleanups
23194
23195 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
23196
23197         * gc.c (finalizer_thread): Work around a GC bug.
23198
23199 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
23200
23201         * marshal.c (emit_struct_conv): allow unions
23202
23203         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
23204
23205 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
23206
23207         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
23208
23209 2003-05-06  Martin Baulig  <martin@ximian.com>
23210
23211         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
23212
23213 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23214
23215         * socket-io.c:
23216         (Select_internal): allow NULLs, don't create arrays if not needed.
23217         Coupled with Socket.cs changes.
23218
23219         * threadpool.c:
23220         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
23221         register a finalizer for it that will close the semaphore handle. This
23222         fixes the leak and make Lupus' test run with > 4080 loops.
23223
23224 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23225
23226         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
23227         Jerome Laban (bug #42287)
23228
23229 2003-05-02  Martin Baulig  <martin@ximian.com>
23230
23231         * debug-mono-symfile.h
23232         (MonoSymbolFile): Moved declaration into mono-debug.h.
23233         (MonoDebugMethodJitInfo): Likewise.
23234         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
23235         argument.
23236         (_mono_debug_address_from_il_offset): Take a
23237         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
23238
23239         * mono-debug.h
23240         (MonoDebugDomainData): New struct.
23241         (mono_debug_get_domain_data): New function.
23242         (mono_debug_add_method): Take an additional `MonoDomain *'
23243         argument.
23244         (mono_debug_source_location_from_address): Likewise.
23245         (mono_debug_il_offset_from_address): Likewise.
23246         (mono_debug_address_from_il_offset): Likewise.
23247
23248 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
23249
23250         * reflection.c: one more check for null type in custom attrs.
23251
23252 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23253
23254         * reflection.c: avoid warning (comparison is always false due to limited
23255         range of data type).
23256
23257 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23258
23259         * icall.c: throw an exception in Type.GetField if the argument 'name'
23260         is NULL.
23261
23262 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
23263
23264         * reflection.c: fixed handling of enums in named arguments to custom
23265         attributes (bug #42123).
23266
23267 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23268
23269         * reflection.c: use the right array element type and handle
23270         a null for a Type argument, too.
23271
23272 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
23273
23274         * reflection.c: handle arrays as arguments to custom attributes.
23275
23276 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
23277
23278         * reflection.c: handle a string value in a custom attr
23279         ctor that takes an object.
23280
23281 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23282
23283         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
23284         (fix bug #42063)
23285
23286 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23287
23288         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
23289
23290 2003-04-27  Martin Baulig  <martin@ximian.com>
23291
23292         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
23293         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
23294         MONO_DEBUGGER_EVENT_BREAKPOINT.
23295         (mono_breakpoint_trampoline_code): Removed.
23296         (mono_debugger_event_handler): The last argument is now a
23297         `guint32'.
23298         (mono_debugger_insert_breakpoint_full): Removed the
23299         `use_trampoline' argument.
23300         (mono_debugger_method_has_breakpoint): Likewise.
23301         (mono_debugger_trampoline_breakpoint_callback): Renamed to
23302         mono_debugger_breakpoint_callback(); take the method and
23303         breakpoint number as arguments.
23304
23305 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23306
23307         * metadata.c: fix off by one when loading parameters attributes.
23308
23309 2003-04-24  Martin Baulig  <martin@ximian.com>
23310
23311         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
23312
23313 2003-04-24  Martin Baulig  <martin@ximian.com>
23314
23315         * mono-debug-debugger.c: Moved all code which interacts with the
23316         Mono Debugger here.
23317
23318         * debug-mono-symfile.c: This code now just deals with the symbol
23319         file itself, the debugger code is now in mono-debug-debugger.c.
23320
23321 2003-04-23  Martin Baulig  <martin@ximian.com>
23322
23323         * mono-debug.c (mono_debug_source_location_from_il_offset):
23324         New method; like mono_debug_source_location_from_address(), but
23325         takes an IL offset instead of a machine address.
23326
23327 2003-04-23  Martin Baulig  <martin@ximian.com>
23328
23329         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
23330         `line' field; this is now computed by the debugger.
23331
23332 2003-04-23  Martin Baulig  <martin@ximian.com>
23333
23334         * mono-debug.[ch]: New files.  This is the new debugging interface.
23335
23336         * mono-debug-debugger.[ch]: New files.  Moved all code which
23337         interacts with the Mono Debugger here.
23338
23339 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23340
23341         * domain.c (mono_init): initialize mono_defaults.monitor_class
23342
23343 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
23344
23345         * reflection.c (method_encode_code): Add a spicy exception to help
23346         future compiler authors.
23347
23348 2003-04-21  Martin Baulig  <martin@ximian.com>
23349
23350         * icall.c
23351         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
23352         Make this work with relative pathnames; g_filename_to_uri() needs
23353         an absolute filename.
23354
23355 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
23356
23357         * icall.c: Track name changes in Object and ValueType.
23358
23359 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
23360
23361         * metadata.c (mono_type_stack_size): size should be a multiple of
23362         sizeof (gpointer)
23363
23364 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23365
23366         * gc.c:
23367         (internal_domain_finalize): moved into mono_domain_finalize. No need
23368         to create another thread because the finalizers will be run in the
23369         finalizer thread.
23370         
23371         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
23372         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
23373         to be run (MS does this too).
23374
23375 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23376
23377         * object.c (mono_class_compute_gc_descriptor): Update comment.
23378
23379         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
23380
23381         * image.h: Add synchronized wrapper cache.
23382
23383         * image.c (do_mono_image_open): Initialize cache.
23384
23385         * reflection.c (create_dynamic_mono_image): Initialize cache.
23386
23387 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23388
23389         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
23390         ves_icall_System_Buffer_ByteLengthInternal.
23391
23392 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23393
23394         * reflection.c: setup klass->nested_in earlier. Allow
23395         a dash in the assembly name.
23396
23397 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
23398
23399         * metadata.c (mono_type_to_unmanaged): dont access
23400         type->data.klass for MONO_TYPE_OBJECT
23401         (mono_type_to_unmanaged): consider System.Delegate class
23402
23403 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
23404
23405         * class.c: just setup supertypes in the proper place instead of
23406         initializing the full element class for arrays.
23407
23408 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23409
23410         * class.c: ensure the element class of arrays is initialized.
23411         Setup the supertype info for array classes, too.
23412
23413 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
23414
23415         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
23416
23417 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23418
23419         * Makefile.am: re-added -m option when running cygpath. This way,
23420         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
23421         separator.
23422         * mono-config.c: same codepath for locating mono config file for WIN32
23423         and the rest.
23424         * assembly.c: if mono_assembly_setrootdir is called, don't override
23425         the value set.
23426
23427 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23428
23429         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
23430         MONO_ASSEMBLIES variable.
23431
23432 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23433
23434         * icall.c: added Assembly::GetNamespaces() icall.
23435
23436 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23437
23438         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
23439
23440 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
23441
23442         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
23443         * object.c: fixed bug in the construction of vtable for proxies
23444
23445 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23446
23447         * object.c (mono_array_new): Mark mono_array_new as an icall.
23448
23449 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23450
23451         * class.c: fixed test for public method when overriding interfaces.
23452         Closes bug #40970.
23453
23454 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23455
23456         * appdomain.h, domain.c: added mono_domain_foreach() to
23457         be able to access the currently loaded appdomains.
23458         * object.c: make string interning work across sppdomains.
23459         Mark some functions for use as icalls.
23460
23461 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
23462
23463         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
23464
23465         * reflection.h reflection.c: Allocate long living data using 
23466         GC_MALLOC_ATOMIC so the collector does not need to scan it.
23467
23468         * reflection.c: Double the allocation size in streams instead of
23469         increasing it, to prevent unneccesary copying on large assemblies.
23470         
23471         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
23472         creation if the assembly does not have the Run flag set.
23473
23474 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23475
23476         * class.h: avoid the C++ keywords in header files (Jerome Laban
23477         spotted and fixed this).
23478
23479 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23480
23481         * object.c:
23482         (mono_unhandled_exception): fill in the arguments for the
23483         UnhandledException event. Only trigger that event for the default
23484         domain (as MS does).
23485
23486 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
23487
23488         * object.c: Improve typed allocation stuff based on suggestions from
23489         Paolo. Also turn it on if the GC library supports it.
23490
23491 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
23492
23493         * object.c object.h class.h: Added experimental typed allocation
23494         facility using the interfaces in gc_gcj.h.
23495
23496         * os/gc_wrapper.h: Added new include files.
23497         
23498 2003-04-03  Martin Baulig  <martin@ximian.com>
23499
23500         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
23501         which is not yet enabled by default.
23502
23503         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
23504         functions.
23505         (mono_gc_lock, mono_gc_unlock): New static functions.
23506
23507         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
23508         functions; stop/start the world for the garbage collector.  This
23509         is using the windows API; we need to complete the SuspendThread()/
23510         ResumeThread() implementation in the io-layer to make this work on Unix.
23511         (mono_gc_push_all_stacks): New public function; tells the garbage
23512         collector about the stack pointers from all managed threads.
23513
23514 2003-04-03  Martin Baulig  <martin@ximian.com>
23515
23516         * object.h (MonoThread): Added `gpointer stack_ptr'.
23517
23518         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
23519
23520 2003-04-03  Martin Baulig  <martin@ximian.com>
23521
23522         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
23523
23524 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
23525
23526         * reflection.c (typebuilder_setup_fields): Initialize field.first and
23527         field.last.
23528
23529 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
23530
23531         * loader.c (mono_lookup_internal_call): Report the corlib that is
23532         out of sync.
23533
23534 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
23535
23536         * icall.c (ves_icall_type_GetTypeCode): fixed check for
23537         System.DBNull (it's class not valuetype).
23538
23539 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23540
23541         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
23542         if the array method was already assigned a token (fixes bug#40646).
23543
23544 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
23545
23546         * reflection.c (mono_reflection_get_type): Attempt type resolve even
23547         if no assembly is given.
23548
23549 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
23550
23551         * metadata.h: Added the new tables.
23552
23553         * row-indexes.h: Added definitions for new tables.
23554
23555         * metadata.c: Add schemas for new tables, and add support for
23556         computing the sizes of them.
23557
23558         * class.c: Update for handling the new type cases.
23559
23560 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
23561
23562         * metadata.h (MONO_TYPE_IS_VOID): new macro
23563
23564 2003-03-31  Martin Baulig  <martin@ximian.com>
23565
23566         * threads.h (MonoThreadCallbacks): Added `thread_created'.
23567
23568         * threads.c (mono_thread_new_init): Call `thread_created' in the
23569         mono_thread_callbacks.
23570
23571 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
23572
23573         * loader.h: added marshalbyrefobject_class to mono_defaults
23574         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
23575         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
23576           generation of output parameters.
23577           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
23578         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
23579           contextbound and the target object belongs to the context of the caller.
23580         * object.h: added context and unwrapped_server variables in MonoRealProxy.
23581         * object.c: Implemented support for interfaces and abstract classes
23582           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
23583           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
23584
23585 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
23586
23587         * class.h class.c (mono_class_is_subclass_of): New function.
23588         
23589         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
23590         routines for most common case (calls from ArrayList::ToArray).
23591
23592         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
23593         routine so programs which call Environment::Exit() can be profiled.
23594
23595         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
23596         Added MONO_ARCH_SAVE_REGS.
23597
23598         * icall.c (ves_icall_type_is_subtype_of): Use new function.
23599
23600 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
23601
23602         * blob.h: Add a couple of new MonoType types definitions.
23603
23604         * tabledefs.h: Add a couple of new call convs.
23605
23606 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
23607
23608         * reflection.h (MonoReflectionDynamicAssembly): track changes in
23609         the layout of the class.
23610
23611         * reflection.c (alloc_table): double the size on overflow to avoid
23612         unnecessary copying.
23613
23614         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
23615         avoid filling out metadata tables and blobs. Also set mb->ilgen to
23616         null so it can be garbage collected.
23617         
23618 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
23619
23620         * reflection.c (mono_reflection_get_type): Return the resolved type
23621         only if it is in the assembly we searched.
23622
23623         * reflection.c (ensure_runtime_vtable): Initialize method slots.
23624
23625         * class.c (mono_class_setup_vtable): Set the slot of the overriding
23626         method.
23627
23628 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23629
23630         * appdomain.c:
23631         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
23632         the right one is 'file:///blah', but MS allows it.
23633         * assembly.c:
23634         (mono_assembly_open): allow 'file://blah'
23635
23636         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
23637
23638 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
23639
23640         * socket-io.c: fixes bug #40310.
23641
23642 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
23643
23644         * reflection.c (mono_reflection_parse_type): handle deeply nested
23645         types correctly.
23646
23647         * reflection.c (mono_image_create_token): Use unique token values
23648         since they will be put into a hash table.
23649
23650         * class.c (mono_class_setup_vtable): If a method occurs in more than
23651         one place in the vtable, and it gets overriden, then change the
23652         other occurances too.
23653
23654         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
23655         object as return type.
23656
23657 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
23658
23659         * icall.c: Deleted "ToString" implementation for double and float
23660         because they are full implemented in managed code.
23661
23662 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23663
23664         * reflection.c, reflection.h: implemented and exported functions
23665         to retrieve info about custom attributes.
23666
23667 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23668
23669         * appdomain.c: moved Uri handling to assembly.c
23670         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
23671         work when using a file Uri in *nix and windows.
23672
23673         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
23674         GetReferencedAssemblies.
23675
23676 2003-03-18  Dick Porter  <dick@ximian.com>
23677
23678         * icall.c: Rename a couple of internal calls
23679
23680         * threads.c: Set the thread state to Stopped when a thread exits.
23681         Fixes bug 39377.
23682
23683 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
23684
23685         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
23686         New icall.
23687
23688         * object.c (mono_class_vtable): fix warning.
23689
23690 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
23691
23692         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
23693
23694         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
23695         memory.
23696         (method_encode_clauses): Create exception info structures in the right
23697         order.
23698         (mono_reflection_setup_internal_class): Initialize supertypes field.
23699
23700         * class.c object.c: Handle interfaces which implement other interfaces 
23701         correctly.
23702
23703         * class.h class.c: Move the supertypes array initialization code into 
23704         a separate function so it can be used for dynamic types too. Also call
23705         it earlier, in mono_class_init(), since it can be used before the
23706         type is initialized.
23707
23708 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23709
23710         * Makefile.am:
23711         * assembly.c:
23712         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
23713
23714         * appdomain.c:
23715         * appdomain.h:
23716         * marshal.c:
23717         * object.c: remove warnings.
23718
23719 2003-03-13  Martin Baulig  <martin@ximian.com>
23720
23721         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
23722         (MonoDebugLexicalBlockEntry): New types.
23723
23724         * debug-mono-symfile.c
23725         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
23726
23727 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23728
23729         * process.c: ret can be any non-zero value accroding to MS doc.
23730
23731 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
23732
23733         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
23734         fixing a warning for a miss-used prototype, would have cause
23735         random memory corruption.
23736
23737 2003-03-07  Martin Baulig  <martin@ximian.com>
23738
23739         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
23740         getting really annoying ....
23741
23742 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
23743
23744         * reflection.c (fixup_method): added support for array methods.
23745
23746 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23747
23748         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
23749         (pointed out by Michael Adams).
23750
23751 2003-03-04  Dick Porter  <dick@ximian.com>
23752
23753         * icall.c: Temporarily reverted the Double and Single ToString()
23754         change, because it broke nunit.
23755
23756 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
23757
23758         * object.h, threads.h: make include files compatible with C++
23759         (patch by Jerome Laban <jlaban@wanadoo.fr>).
23760
23761 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
23762
23763         * icall.c: Erased ToString helper functions for Double and Single.
23764         Now, that implementations ar all in managed code (Double and Single
23765         Formatters).
23766
23767 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
23768
23769         * appdomain.c: Added method for initializing the default context of
23770         a domain. Added internal call for getting the default context.
23771         * appdomain.h: Added context variable in MonoDomain struct.
23772         * domain.c: mono_domain_set also sets the default context of the domain
23773         * icall.c: Mapped internal method InternalGetDefaultContext.
23774         * object.c: mono_object_get_virtual_method returns always a remoting
23775         wrapper if the object is a transparent proxy.
23776         mono_runtime_invoke_array: when creating an object by calling the
23777         constructor, if the created object is a proxy, then the constructor should
23778         be called using the a remoting wrapper.
23779
23780 2003-03-03  Dick Porter  <dick@ximian.com>
23781
23782         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
23783         variable so it compiles on solaris.  Problem spotted by
23784         Christopher Taylor <ct@cs.clemson.edu>
23785
23786 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23787
23788         * appdomain.c:
23789         (get_info_from_assembly_name): don't leak value.
23790
23791         * icall.c:
23792         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
23793         result.
23794
23795 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23796
23797         * assembly.c: export mono_image_load_references ().
23798         * class.c: handle function pointers. mono_class_from_name() now
23799         supports nested type names directly.
23800
23801 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
23802
23803         * reflection.h reflection.c: Encode already created dynamic methods 
23804         and fields correctly as a DEF instead of a REF.
23805
23806         * reflection.c: Get rid of the force_ref argument to 
23807         mono_image_typedef_or_ref since it was wrong in the first place.
23808
23809         * string-icalls.c: add error checking to string constructors according
23810         to the MSDN docs.
23811
23812         * reflection.c: Emit types in the order their TypeBuilders were 
23813         created. Previously, a new table index was assigned to each type before
23814         the tables were emitted. This was wrong because the signature blob
23815         might already refer to a type by its original table index.
23816
23817 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
23818
23819         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
23820         change.
23821         
23822 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23823
23824         * Makefile.am: make assemblies dir have \ instead of / on windows.
23825
23826 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
23827
23828         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
23829         iterate over the NESTEDCLASS table using a linear search since the
23830         table is not guaranteed to be sorted by the secondary key.
23831
23832         * class.c (mono_class_create_from_typedef): fixed up call to
23833         mono_metadata_nesting_typedef.
23834         
23835 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
23836
23837         * marshal.c (mono_string_to_byvalstr): clear the memory as
23838         suggested by Jerome Laban <jlaban@wanadoo.fr>
23839
23840 2003-02-26  Dick Porter  <dick@ximian.com>
23841
23842         * process.c: Cope with padding in .rsrc blocks
23843
23844 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
23845
23846         * metadata.h: reverted the filter_len change, it breaks reflection
23847         
23848 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
23849
23850         * metadata.h: added a new field to store the filter_len
23851         
23852
23853 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23854
23855         * reflection.c: handle custom attributes for types and members
23856         created with Reflection.Emit (bug#38422).
23857
23858 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
23859
23860         * reflection.c: define RTSpecialName automatically for constructors for
23861         compatibility with MS.NET.
23862
23863         * reflection.c (mono_reflection_create_runtime_class): initialize
23864         nested_in field of dynamically created classes.
23865
23866 2003-02-22  Martin Baulig  <martin@ximian.com>
23867
23868         * debug-mono-symfile.h: Incremented version number.
23869
23870 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
23871
23872         * object.h icall.c process.c: fix warnings.
23873
23874 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
23875
23876         * appdomain.h appdomain.c:
23877         (mono_domain_try_type_resolve): split the 
23878         name_or_tb argument into a name and a tb argument.
23879         (mono_domain_has_type_resolve): new function to check whenever the
23880         application has registered a TypeResolve event handler.
23881         
23882         * icall.c reflection.h reflection.c: move the type resolve logic into
23883         mono_reflection_get_type () so it will be invoked when 
23884         Assembly::GetType () is called.
23885
23886         * reflection.c:
23887         (mono_reflection_get_type): renamed to get_type_internal.
23888         (mono_reflection_get_type): fixed type name generation so it works 
23889         for nested types too.
23890         (mono_reflection_get_type): call has_type_resolve () to avoid the 
23891         costly type name generation if there is no resolve event handler.
23892
23893 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23894
23895         * class.c, image.c: load exported types from file references.
23896
23897 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
23898
23899         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
23900           used to cache the managed methods used to create proxies and make 
23901           remote invocation of methods.
23902         * class.h: Added in MonoVTable a flag to indicate that a class needs 
23903           to be remotely created.
23904         * object.c: Modified the method mono_class_vtable(). It now initializes 
23905           the remote flag of the vtable. Modified mono_object_new_specific(), 
23906           so now it checks the remote flag.
23907         * icall.c: Added a couple of internal methods, one for enabling instance 
23908           creation interception for a type, and one for creating objects bypassing
23909           the remote check.
23910
23911 2003-02-18  Martin Baulig  <martin@ximian.com>
23912
23913         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
23914         New interncall to get a method's metadata token.
23915
23916         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
23917         New interncall for the debugger.
23918
23919 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
23920
23921         * class.c (mono_class_setup_vtable): allocate supertype array
23922
23923 2003-02-18  Martin Baulig  <martin@ximian.com>
23924
23925         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
23926
23927 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23928
23929         * reflection.c:
23930         (assembly_name_to_aname): jump over unknown properties (i've found
23931         something like: 'type, assembly, version=xxx, custom=null, public...',
23932         so now will ignore custom=null and still get the rest of the values).
23933
23934 2003-02-17  Dick Porter  <dick@ximian.com>
23935
23936         * threads.c: Have Thread.Start() wait for a semaphore to signal
23937         that the thread has set up all its local data.  This fixes bug
23938         34323, where Abort() raced the new thread's TLS data.
23939
23940         Also removes the handle_store() call from start_wrapper, because
23941         threads are now always created suspended and there is no longer a
23942         race between the parent and child threads to store the info.
23943
23944 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
23945
23946         * image.c: explain the #- heap issue in a message, hopefully
23947         avoiding FAQs on mono-list.
23948
23949 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23950
23951         * icall.c:
23952         (GetEntryAssembly): if the domain has not invoked
23953         AppDomain.ExecuteAssembly yet, return the assembly of the default
23954         AppDomain.
23955
23956 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
23957
23958         * class.c (mono_ldtoken): make it work in dynamic assemblies.
23959
23960 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23961
23962         * metadata.c, reflection.c: simple speedup to type hash
23963         and equals code.
23964
23965 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
23966
23967         * image.c, image.h, class.c, assembly.c: move module loading
23968         to MonoImage. When loading metadata, consider alignemnet from
23969         the start of metadata, not from the metadata address in memory.
23970
23971 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
23972
23973         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
23974         AssemblyBuilder objects. Factored out custom attribute creation into
23975         a separate function.
23976         (create_custom_attr): new function to create custom attributes.
23977
23978 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
23979
23980         * Makefile.am: Got tired of typing the full pathname to pedump.
23981         Until there is another option, am installing this.
23982
23983 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
23984
23985         * class.c (class_compute_field_layout): always set field->parent 
23986         (mono_ldtoken): use mono_defaults.fieldhandle_class;
23987
23988 2003-02-11  Dick Porter  <dick@ximian.com>
23989
23990         * threads-types.h:
23991         * monitor.c: Rewrote Monitor, making lock much faster and
23992         Pulse/Wait work as specified.  Also uses much fewer handles, and only
23993         creates them as needed.
23994
23995         * exception.c: Added SynchronizationLockException
23996
23997         * threads.c: Deleted old Monitor implementation.  The new one is
23998         in a new file.
23999
24000 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24001
24002         * class.c: handled TypedReference type code. Set the correct size for
24003         class data. Setup interface_offsets for interface classes, too.
24004
24005 2003-02-09  Martin Baulig  <martin@ximian.com>
24006
24007         * debug-mono-symfile.h: Reflect latest symbol writer changes.
24008
24009 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
24010
24011         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
24012         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
24013         * object.c: fixed mono_object_get_virtual_method () for interfaces.
24014         * verify.c: check for code that runs after the end of the method.
24015
24016 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
24017
24018         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
24019         "System.Math::Round2".
24020         * sysmath.h: Added Floor, Round and Round2 definitions.
24021         * sysmath.c: Modified certain functions that were not 100% compliant
24022         with MS.NET (math precision) and added the implementation of Floor,
24023         Round and Round2.
24024
24025 2003-02-07  Martin Baulig  <martin@ximian.com>
24026
24027         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
24028
24029 2003-02-07  Martin Baulig  <martin@ximian.com>
24030
24031         * debug-mono-symfile.c: Reflected latest symwriter changes.
24032         (mono_debug_create_mono_symbol_file): Removed.
24033         (mono_debug_open_mono_symbol_file): Take an argument which
24034         specifies whether to create a dynamic symbol file.
24035
24036 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
24037
24038         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
24039
24040 2003-02-05  Martin Baulig  <martin@ximian.com>
24041
24042         * reflection.c (mono_image_build_metadata): Make this public,
24043         protect it against being called multiple times, don't create
24044         resources and don't build the compressed metadata here.
24045         (mono_image_create_pefile): Do this here.
24046
24047         * icall.c
24048         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
24049
24050 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24051
24052         * socket-io.c: fixed bug #36322.
24053
24054 2003-02-06  Piers Haken <piersh@friskit.com>
24055
24056         * appdomain.[ch]:
24057         * class.h:
24058         * debug-mono-symfile.c:
24059         * icall.c:
24060         * loader.c:
24061         * mono-config.c:
24062         * monosn.c:
24063         * reflection.c:
24064         * socket-io.c: warning cleanups
24065
24066 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
24067
24068         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
24069         function. works like remoting invoke, but does a check for the Proxy first.
24070
24071 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
24072
24073         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
24074
24075 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
24076
24077         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
24078         array of pointers.
24079         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
24080         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
24081
24082         * object.c (mono_store_remote_field_new): used by the new jit
24083         instead of mono_store_remote_field
24084         (mono_load_remote_field_new): used by the new jit
24085         instead of mono_load_remote_field
24086
24087 2003-02-05  Patrik Torstensson
24088
24089         * appdomain.c: changed unload to take the domain id instead
24090         of domain
24091         
24092         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
24093
24094
24095 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24096
24097         * appdomain.c: don't look for assemblies in ApplicationBase if
24098         PrivateBinPathProbe is set.
24099
24100 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24101
24102         * object.c: make the first argument in main_args contain the absolute
24103         path to the assembly. Fixes bug #37511.
24104
24105 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24106
24107         * icall.c: get correct UTC offset for countries not using daylight
24108         time saving. Fixes bug #30030.
24109
24110 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24111
24112         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
24113         and 1 are the family).
24114
24115 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
24116
24117         * icall.c (ves_icall_InternalExecute): removed wrong assertion
24118
24119         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
24120
24121 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
24122
24123         * reflection.c: added support for SignatureHelper tokens, which is
24124         needed by the Calli opcode.
24125
24126         * reflection.h: track changes to SignatureHelper class.
24127
24128         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
24129
24130 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24131
24132         * appdomain.c: fixed loading assemblies from PrivateBinPath.
24133
24134 2003-02-03  Patrik Torstensson
24135         * appdomain.[c|h], domain.c : 
24136          - Added support for getting a domain via domain id
24137          - Support for setting and getting domain from System.AppDomain 
24138            (used in cross appdomain channel)
24139          - Added support for get/set for a MonoAppContext on a thread 
24140            (Context class in System.Runtime.Remoting.Contexts),
24141          - Removed hack in Get/SetData and ExecuteAssembly.
24142         
24143         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
24144         the managed world to get control when a proxy is created.
24145
24146         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
24147         
24148 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
24149
24150         * icall.c
24151         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
24152         Populate the codebase field as well.
24153
24154 2003-02-02  Martin Baulig  <martin@ximian.com>
24155
24156         * debug-mono-symfile.c
24157         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
24158         (mono_debug_symfile_add_method): Allow interncalls.
24159
24160 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24161
24162         * icall.c: throw parse exception if strtod fails or the string is empty.
24163
24164 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
24165
24166         * marshal.c: handle object type separately from defined
24167         class types.
24168
24169 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
24170
24171         * marshal.c: handle NATIVE_LPSTR for strings when it's
24172         explicitly specified.
24173
24174 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
24175
24176         * reflection.c, reflection.h, icall.c: setup the reflection
24177         handle cache for ModuleBuilders and AssemblyBuilders.
24178
24179 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
24180
24181         * reflection.c (reflection_methodbuilder_to_mono_method): set
24182         pinvoke flag
24183
24184 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24185
24186         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
24187
24188 2003-01-29  Dick Porter  <dick@ximian.com>
24189
24190         * threads.c: No need for the fake_thread kludge now that Thread
24191         doesn't run a class constructor
24192         
24193 2003-01-29  Dick Porter  <dick@ximian.com>
24194
24195         * threads.c: Use g_direct_hash instead of the rather bogus
24196         g_int_hash
24197
24198 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
24199
24200         * marshal.c (mono_marshal_get_native_wrapper): add check for null
24201         (fix pinvoke12.exe)
24202         (mono_marshal_get_struct_to_ptr): generate valid IL code
24203         (mono_marshal_get_ptr_to_struct): generate valid IL code
24204         (*): correctly set sig->pinvoke, we need to memdup the signature
24205         to do that
24206
24207 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24208
24209         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
24210         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
24211
24212 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
24213
24214         * profiler.c: provide more callers information.
24215
24216 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
24217
24218         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
24219
24220         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
24221
24222         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
24223
24224 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24225
24226         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
24227         exception instead of going into an infinite loop on dates which it 
24228         can't yet handle.
24229
24230         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
24231         out-of-range exception if needed.
24232
24233         * class.c (mono_class_setup_vtable): allow a virtual method to provide
24234         an implementation for an interface method and to override an inherited
24235         method at the same time. 
24236         Imagine a scenario when a virtual method is used to override a
24237         virtual abstract method in a parent class, and this same method 
24238         provides an implementation for an method inherited from an interface. 
24239         In this case, the interface resolution code will set im->slot, which 
24240         means that the virtual method override pass will skip this method 
24241         which means a pointer to the abstract method inherited from the parent
24242         will remain in the vtable of this non-abstract class.
24243
24244         * class.c: (mono_class_setup_vtable): continue search for a real 
24245         method if only an abstract method is found.     
24246
24247 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
24248
24249         * reflection.c: add size to encoding for ByValStr and ByValArray
24250         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
24251
24252 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24253
24254         * class.c (mono_class_setup_vtable): pass the override info as an
24255         argument.
24256
24257         * class.c (mono_class_setup_vtable): set the slot of overriding methods
24258         correctly.
24259         
24260         * reflection.c (ensure_runtime_vtable); add support for method 
24261         overrides.
24262         
24263 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24264
24265         * reflection.c (resolution_scope_from_image): Hack to work to work with
24266         dynamic assemblies.
24267
24268         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
24269         added a 'force_ref' argument to force this function to allways return 
24270         a TypeRef. This is needed by mono_image_get_memberref_token ().
24271         
24272 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24273
24274         * reflection.c (mono_image_get_type_info): interfaces really don't have
24275         a parent.
24276
24277         * reflection.c (mono_image_basic_init): fill out missing fields of
24278         image structure.
24279
24280         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
24281         dynamic assemblies. This is required so dynamic assemblies show up in
24282         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
24283         Type::GetType() etc. This is consistent with MS behaviour.
24284
24285         * image.c image.h reflection.c: add newly created classes to the name 
24286         cache so mono_class_get () will find them.      
24287
24288 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24289
24290         First part of changes to get IKVM.NET running under mono.
24291         
24292         * appdomain.h, appdomain.c: added new function 
24293         mono_domain_try_type_resolve() which will emit TypeResolve events. 
24294         This function will call AppDomain::DoTypeResolve to do the actual work.
24295
24296         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
24297         moved existing code dealing with dynamic tokens to a new function 
24298         called mono_reflection_lookup_dynamic_token (). This function will 
24299         raise TypeResolve events when appropriate. Since reflection.c is not 
24300         part of libmetadata, a new hook function called 
24301         mono_lookup_dynamic_token() is added to class.c which will call this.
24302
24303         * assembly.h assembly.c: make the invoke_load_hook function public,
24304         so it can be called for dynamic assemblies.
24305
24306         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
24307
24308         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
24309         type isn't found.
24310
24311         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
24312         MonoGHashTable, since it contains pointers to objects which the GC 
24313         needs to track.
24314
24315         * assembly.c (search_loaded): remove unused variable.
24316         
24317 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
24318
24319         * object.c: fixed issue exposed by gcc-generated IL programs
24320         that use RVA data for pointers.
24321
24322 2003-01-25  Martin Baulig  <martin@ximian.com>
24323
24324         * threads.c (start_wrapper): Moved the initialization of
24325         `start_func' above the mono_new_thread_init() call to which we
24326         pass it as argument.
24327
24328 2003-01-24  Martin Baulig  <martin@ximian.com>
24329
24330         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
24331         the MonoThread pointer.
24332
24333 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
24334
24335         * icall.c: Rename `PowImpl' to Pow.
24336
24337 2003-01-23  Dick Porter  <dick@ximian.com>
24338
24339         * threads.c (start_wrapper): Create a Thread object if needed, so
24340         the Main() thread can do the class initialisation in a subthread
24341         that has been set up to allow managed code execution.
24342
24343         Pass the thread ID instead of the MonoThread pointer to the thread
24344         start and attach callbacks.  This change is required, because the
24345         jit thread start callback must be called _before_ the Thread
24346         object can be created.
24347         
24348         (mono_thread_init): Removed much object creation code that is no
24349         longer needed.  No managed code is called from here now.
24350
24351         * object.c (mono_runtime_exec_managed_code): Create a subthread
24352         for Main, and call back to the runtime to use it.
24353         Set the exit code when Main exits.
24354
24355         * gc.c: Make sure domain finalisation happens in a subthread.
24356         Re-enable threaded GC, fixing bug 31333 (again).
24357
24358         * environment.c: System.Environment internall calls (so far just
24359         ExitCode is here, the others are still in icall.c)
24360
24361         * appdomain.c (mono_runtime_cleanup): All threads running managed
24362         code should have finished before mono_runtime_cleanup() is
24363         reached, so no need to clean up threads.
24364
24365 2003-01-22  Martin Baulig  <martin@ximian.com>
24366
24367         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
24368         `gpointer func' arguments.      
24369         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
24370         but added `MonoThread *thread' argument.
24371         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
24372
24373         * threads.c (mono_new_thread_init): Added `gpointer func' argument
24374         and pass it to the mono_thread_start_cb callback.
24375         (mono_install_thread_callbacks): New public function to install a
24376         set of callbacks which are set by the debugger.
24377         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
24378
24379 2003-01-22  Martin Baulig  <martin@ximian.com>
24380
24381         * Makefile.am: Install debug-mono-symfile.h.
24382
24383 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
24384
24385         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
24386
24387 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
24388
24389         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
24390         * class.c (mono_ptr_class_get): correctly set access levels of pointers
24391         (mono_array_class_get): correctly set access levels of arrays
24392
24393 2003-01-20      Patrik Torstensson
24394         * image.h (MonoAssemblyName): changed major, minor, build, revision
24395         from signed to unsigned.
24396
24397 2003-01-20  sean kasun <skasun@azstarnet.com>
24398
24399         * reflection.c (load_cattr_value): Now this handles
24400         MONO_TYPE_SZARRAY.  Fixes bug #35629
24401
24402 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
24403
24404         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
24405         integer value
24406
24407 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24408
24409         * decimal.c: fixed bug #26056.
24410
24411 2003-01-17  Martin Baulig  <martin@ximian.com>
24412
24413         * gc.c: Raise an ExecutionEngineException instead of using g_error().
24414
24415 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24416
24417         * exception.[ch]:
24418         (mono_get_exception_type_initialization): new function.
24419
24420         * object.c: throw a TypeInitializationException when an exception is
24421         thrown invoking the class constructor.
24422
24423 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24424
24425         * reflection.c: fixed attribute reading.
24426
24427 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24428
24429         * icall.c:
24430         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
24431         provided, look for the type in the calling assembly and then in
24432         mscorlib; if the assembly name is provided, only try that one.
24433
24434 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24435
24436         * object.c: register the vtable before there is a chance it's
24437         queried again recursively.
24438
24439 2003-01-13  Duncan Mak  <duncan@ximian.com>
24440
24441         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
24442         gc-internal.h. 
24443         
24444 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
24445
24446         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
24447
24448 2003-01-11  Martin Baulig  <martin@ximian.com>
24449
24450         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
24451         this to 20 for the release.
24452
24453 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
24454
24455         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
24456
24457         * loader.c (mono_method_get_marshal_info): bug fix
24458
24459         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
24460         structures with explicit layout
24461
24462 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24463
24464         * profiler.c: made the output more readable (and sorted). 
24465         Added caller information for the allocation profiler.
24466
24467 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
24468
24469         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
24470
24471 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24472
24473         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
24474         to get value types.
24475         
24476 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
24477
24478         * object.c, profiler.h, profiler.c, profiler-private.h:
24479         Added object allocation profiler.
24480
24481 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
24482
24483         * reflection.h, reflection.c: handle global methods.
24484         Compress blob entries.
24485
24486 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
24487
24488         * marshal.c: fix compilation.
24489
24490 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
24491
24492         * loader.c (mono_method_get_marshal_info): impl.
24493
24494         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
24495
24496 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24497
24498         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
24499         for reference types.
24500
24501 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
24502
24503         * loader.c: fixed off by one error in loaded parameter names.
24504
24505 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
24506
24507         * marshal.c (mono_marshal_get_icall_wrapper): like
24508         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
24509         instead of a MonoMethod.
24510
24511 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24512
24513         * decimal.c: fixed bug #36537.
24514
24515 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
24516
24517         * marshal.c: throw a missing method exception if a
24518         P/Invoke method is not found.
24519
24520 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24521
24522         * icall.c: allow a null this for constructors.
24523
24524 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24525
24526         * icall.c: raise the proper exceptions if the arguments to the
24527         internal Invoke are incorrect.
24528
24529 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
24530
24531         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
24532
24533 2003-01-03  Martin Baulig  <martin@ximian.com>
24534
24535         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
24536
24537 2002-12-31  Martin Baulig  <martin@ximian.com>
24538
24539         * debug-mono-symfile.c: Completely rewrote the type section.
24540         Instead of using individual malloc()ed fields, we use one big
24541         continuous memory area and offsets into this area.
24542         See the comments in the source code for details.
24543
24544 2002-12-30  Martin Baulig  <martin@ximian.com>
24545
24546         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
24547
24548 2002-12-30  Martin Baulig  <martin@ximian.com>
24549
24550         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
24551         line number table in this data blob instead of using an external
24552         pointer.
24553
24554 2002-12-28  Martin Baulig  <martin@ximian.com>
24555
24556         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
24557
24558 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
24559
24560         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
24561         as a boxed return type.
24562
24563 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
24564
24565         * appdomain.c
24566         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
24567         g_build_filename to properly get separators on the filename created.
24568
24569         * object.h: Small change, introduce MonoMarshalByRefObject to
24570         track the layout of that structure in the C# universe as we make
24571         changes there.
24572
24573 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
24574
24575         * object.c: removed assert to allow static fields on interfaces.
24576         * loader.c: a TypeSpec may be used for any type, not just arrays.
24577
24578 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
24579
24580         * class.c, class.h: added mono_class_array_element_size ().
24581         Ignore static methods in interfaces.
24582
24583 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24584
24585         * threads.c: fixed the build under cygwin.
24586
24587 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
24588
24589         * reflection.c: handle nullref constants. Allocate keys for
24590         reflection handles with the GC.
24591
24592 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
24593
24594         * threads.c, threads.h: added mono_thread_get_abort_signal()
24595         to get a suitable signal for thread abort.
24596
24597 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
24598
24599         * metadata.c: fix handling of ExportedType table.
24600
24601 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24602
24603         * icall.c: added WriteWindowsDebugString internal call.
24604
24605 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24606
24607         * reflection.h: added fields to match C# implementation.
24608
24609 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24610
24611         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
24612
24613 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
24614
24615         * gc.h, gc-internal.h: Rename header for GC internal calls to
24616         gc-internal.h from gc.h as to not clash with Boehm GC having its
24617         header installed as <gc.h> in outside include paths.
24618         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
24619         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
24620
24621 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24622
24623         * icall.c: assign minor, build and revision in FillName.
24624
24625 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
24626
24627         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
24628         Added support for running code generated by Reflection.Emit.
24629
24630 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24631
24632         * appdomain.c: check for NULL argument in LoadFrom.
24633
24634 2002-12-10  Dick Porter  <dick@ximian.com>
24635
24636         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
24637
24638 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24639
24640         * appdomain.c: fix buglet when building exe file name.  Handle full
24641         assembly name (needed after latest changes to AssemblyName).
24642         * image.c:
24643         (mono_image_close): free some hashtables.
24644
24645 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
24646
24647         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
24648         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
24649         on some systems (redhat 7.3) 
24650
24651 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
24652
24653         * threads.c: delete the critical section of a sync block,
24654         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
24655
24656 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
24657
24658         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
24659
24660 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24661
24662         * appdomain.[ch]: handle the assembly preload event to try loading the
24663         assemblies using the paths we have in the current domain.
24664
24665         * assembly.[ch]: created an assembly preload hook that is called to try
24666         loading the assembly by other means that the ones provided here.
24667
24668         * domain.c: initialize the domain search path.
24669
24670         From now on, assemblies (TODO: except corlib and System) are loaded
24671         according to these rules when using mono_assembly_load ():
24672
24673                 1. It tries to load the assembly from the ApplicationBase
24674                 of the current domain appending .dll and .exe (TODO: have to
24675                 try loading from name/name.dll and name/name.exe).
24676
24677                 2. It tries the search path specified in PrivateBinPath for the
24678                 current domain (if any).
24679
24680                 3. Previous behavior.
24681
24682 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
24683
24684         * icall.c: implemented GetInterfaceMap() related icall.
24685         * domain.c, loader.h: load MethodInfo in mono_defaults.
24686
24687 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
24688
24689         * gc.c: disable the finalizer thread for now, untill all the issues
24690         with it are resolved.
24691
24692 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24693
24694         * string-icalls.c: handle embedded nulls in string ctor when the
24695         length is specified.
24696
24697 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
24698
24699         * class.c: look for explicit interface implementation in parent
24700         classes, too.
24701
24702 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
24703
24704         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
24705
24706 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
24707
24708         * gc.c: protect handles with a critical section.
24709
24710 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24711
24712         * icall.c:
24713         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
24714         parameters. If no assembly specified, try getting the type from all
24715         the assemblies in the current domain, else, load the assembly and get
24716         the type from it.
24717
24718 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24719
24720         * marshal.c: applied patch from Aleksey Demakov that fixes
24721         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
24722
24723 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24724
24725         * icall.c: fixed get_location.
24726
24727 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
24728
24729         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
24730         declarations to make it work with older gcc. 
24731
24732         * loader.c (mono_get_method): set signature->pinvoke for native calls
24733
24734 2002-11-20  Dick Porter  <dick@ximian.com>
24735
24736         * threads.c (mono_thread_init): Set the main thread's handle
24737
24738 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
24739
24740         * gc.c: allow compilation without GC support. Changed to match the
24741         mono coding style.
24742
24743 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
24744
24745         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
24746
24747 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
24748
24749         * reflection.c: set a public key token on the core assemblies.
24750
24751 2002-11-18  Dick Porter  <dick@ximian.com>
24752
24753         * threads.c: Split out some thread initialisation so that other
24754         files can set the start callback function.
24755
24756         * gc.c: Run finalisers in a separate thread, to avoid stack
24757         overflow.  Fixes bug 31333.
24758
24759         * appdomain.c: Set up GC finalisation thread.
24760
24761         * reflection.c: 
24762         * object.c: 
24763         * domain.c: Use gc.h macros for GC_malloc
24764         
24765 2002-11-15  Dick Porter  <dick@ximian.com>
24766
24767         * threadpool.c: 
24768         * threads.c:
24769         * appdomain.c: Removed mono_runtime_init_with_attach(),
24770         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
24771         merging the extra parameter with the existing function.  Removed
24772         unneeded code in mono_thread_attach().
24773
24774 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
24775
24776         * image.c (mono_image_loaded_by_guid): a method to get loaded
24777         images by guid. 
24778         (load_metadata_ptrs): we store the guid as string.
24779
24780 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
24781
24782         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
24783
24784         * metadata.c (mono_guid_to_string): imported method form Zoltan
24785         Varga (slightly modified)
24786
24787         * assembly.c (mono_assembly_open): load precompiled code
24788
24789         * loader.h (MonoMethod): we store the method token for use in the
24790         aot compiler. 
24791
24792 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24793
24794         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
24795         the hook function called when an assembly is loaded.
24796         
24797         * domain.c: Modified file.
24798         (mono_domain_assembly_load): removed hash table insertion of assemblies.
24799
24800         Fixes bug #33196.
24801
24802 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
24803
24804         * reflection.c: Map PEFileKind to the value expected by the WinNT
24805         image loader. 
24806
24807 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24808
24809         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
24810         Read until the buffer is filled completely.
24811
24812 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24813
24814         * icall.c: implemented MonoType.InternalGetEvent ().
24815
24816 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24817
24818         * appdomain.c: implemented InitAppDomainSetup. Delayed
24819         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
24820         the entry_assembly.
24821
24822         * assembly.c: base_dir is now an absolute path ending with
24823         G_DIR_SEPARATOR.
24824
24825         * icall.c: modified get_location according to the above changes.
24826
24827         * object.c: init AppDomain.SetupInformation for the default domain after
24828         we have the entry assembly.
24829
24830         * domain.c: when unloading a domain, setup = NULL.
24831
24832 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
24833
24834         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
24835
24836 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
24837
24838         * object.h, object.c: introduced mono_object_get_virtual_method ()
24839         to lookup the method invoked on an object when a callvirt is done on
24840         a method.
24841         * icall.c: make MethodInfo::Invoke() always do a virtual call.
24842
24843 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24844
24845         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
24846         current domain when loaded an assembly and failed to load it.
24847
24848         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
24849
24850 2002-10-31  Dick Porter  <dick@ximian.com>
24851
24852         * icall.c: 
24853         * file-io.h: 
24854         * file-io.c: Return the error status in a parameter, as the
24855         GetLastError() value has long since been blown away if we try and
24856         look it up in a subsequent internal call invocation.  Delete the
24857         GetLastError() internal call, because it's useless.
24858
24859 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
24860
24861         * class.[ch]: added cast_class to fix bug 29517
24862
24863 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
24864
24865         * marshal.c: create valid IL code in the filter clause:
24866         the new JIT is less forgiving:-)
24867
24868 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24869
24870         * icall.c: removed get_property internal call.
24871
24872 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
24873
24874         * appdomain.h domain.c: Added an ID to appdomains.
24875         
24876         * threads.c threads.h icall.c: Implement icall
24877         Thread:GetDomainID(), and remove unused icall 
24878         CurrentThreadDomain_internal.
24879
24880 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24881
24882         * icall.c: Don't recurse through the base types in GetConstructor.
24883         Fixes bug #32063. 
24884
24885 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
24886
24887         * mempool.h, mempool.c: added mono_mempool_empty() and
24888         mono_mempool_stats().
24889
24890 2002-10-23  Dick Porter  <dick@ximian.com>
24891
24892         * file-io.c: 
24893         * file-io.h: 
24894         * icall.c: Added MonoIO.GetFileType internal call
24895
24896 2002-10-17  Dick Porter  <dick@ximian.com>
24897
24898         * appdomain.c (mono_runtime_cleanup): Don't signal the async
24899         delegate semaphore before waiting for all threads to finish,
24900         because new threads can also call async delegates.  Fixes bug
24901         32004.
24902
24903         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
24904         of 3 seconds, in case another async job is queued.  (This part is
24905         needed because the bug fix reintroduced the 3s exit lag.)  This
24906         makes the mono_runtime_shutdown flag superfluous.
24907
24908 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
24909
24910         * reflection.c: include ehader size in method section headers.
24911         Really check for suplicated modules entries.
24912
24913 2002-10-17  Martin Baulig  <martin@gnome.org>
24914
24915         * debug-mono-symfile.c: Added back support for locals.
24916
24917 2002-10-14  Martin Baulig  <martin@gnome.org>
24918
24919         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
24920         MONO_TYPE_VOID.
24921
24922 2002-10-14  Martin Baulig  <martin@gnome.org>
24923
24924         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
24925         mono_class_get() instead of looking in the class cache. 
24926
24927 2002-10-13  Martin Baulig  <martin@gnome.org>
24928
24929         * debug-mono-symfile.c: Set version number to 28, include the
24930         signature in method names.
24931
24932 2002-10-13  Martin Baulig  <martin@gnome.org>
24933
24934         * debug-mono-symfile.h: Set version number to 27.
24935
24936 2002-10-11  Martin Baulig  <martin@gnome.org>
24937
24938         * gc.c: Don't register/unregister NULL pointers as disappearing links.
24939
24940 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24941
24942         * metadata.c, metadata.h: added helper function to allocate signatures.
24943
24944 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24945
24946         * icall.c: added internal call to get the location of machine.config.
24947
24948 2002-10-08  Martin Baulig  <martin@gnome.org>
24949
24950         * debug-mono-symfile.c: Ignore classes with a pending init for the
24951         moment.
24952
24953 2002-10-03  Dick Porter  <dick@ximian.com>
24954
24955         * threads.c: Freebsd pthread_t is a pointer
24956
24957 2002-10-03  Dick Porter  <dick@ximian.com>
24958
24959         * socket-io.c: Implemented GetHostName_internal
24960
24961 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24962
24963         * mono-config.c:
24964         (mono_config_parse_file): don't leak the text.
24965
24966 2002-10-02  Martin Baulig  <martin@gnome.org>
24967
24968         * debug-mono-symfile.c: Added support for methods.
24969
24970 2002-10-01  Martin Baulig  <martin@gnome.org>
24971
24972         * debug-mono-symfile.c: Don't emit methods and line numbers for
24973         the dynamic symbol file, just write the type table.  We can easily
24974         have an external helper program which creates a symbol file for an
24975         IL file.        
24976
24977 2002-10-01  Dick Porter  <dick@ximian.com>
24978
24979         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
24980         Only add the handle to the cleanup array when we're about to
24981         launch the thread.  Bug 31425 deadlocked when the test was run on
24982         mono under w32.
24983
24984 2002-10-01  Martin Baulig  <martin@gnome.org>
24985
24986         * debug-mono-symfile.c: Added support for properties.
24987
24988 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24989
24990         * reflection.c: unaligned store fix from Mark Crichton
24991         <crichton@gimp.org>.
24992
24993 2002-09-27  Martin Baulig  <martin@gnome.org>
24994
24995         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
24996         New interncall.
24997
24998 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
24999
25000         * assembly.h, assembly.c: use a sane API to hook into the assembly
25001         loading process instead of a useless special-purpouse hack
25002         (ngen needs a hook, too, for example).
25003
25004 2002-09-27  Dick Porter  <dick@ximian.com>
25005
25006         * threads.c (mono_thread_init): Call GetCurrentProcess() so
25007         io-layer can set up some process handle info.  Not needed on w32,
25008         but doesn't hurt either.
25009
25010         * process.c: Pass the program name in the second parameter to
25011         CreateProcess, so the path is searched.  Include the working
25012         directory. Implemented process name, process enumeration, and some
25013         process detail internal calls.
25014         
25015         * icall.c: Added internal calls for process lookup, and some
25016         process details
25017
25018 2002-09-26  Martin Baulig  <martin@gnome.org>
25019
25020         * assembly.c (mono_install_open_assembly_hook): New global
25021         function to install a function to be invoked each time a new
25022         assembly is loaded.
25023         (mono_assembly_open): Run this callback function if set.
25024
25025         * debug-mono-symfile.c: Put back line numbers for the dynamic
25026         symbol file and also record the .il file as source file.  This
25027         allows us to install the temporary symbol file as `file.dbg' just
25028         like a compiler-generated one.
25029
25030 2002-09-26  Nick Zigarovich <nick@chemlab.org>
25031
25032         * Corrected typo in gc.c (BOHEM vs BOEHM).
25033
25034 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25035
25036         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
25037         GetProperties. Also avoid calling g_slist_length in GetProperties and
25038         GetMethods.
25039
25040 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
25041
25042         * reflection.c: avoid unaligned stores (bug spotted by
25043         Mark Crichton  <crichton@gimp.org>).
25044
25045 2002-09-25  Martin Baulig  <martin@gnome.org>
25046
25047         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
25048         instead of guint64 for addresses and added prologue/epilogue info.
25049
25050 2002-09-25  Martin Baulig  <martin@gnome.org>
25051
25052         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
25053         store line number info.  For the dynamic symbol file, we only need
25054         to provide the JIT generated dynamic line number info for the dynamic
25055         symbol file.
25056
25057 2002-09-25  Martin Baulig  <martin@gnome.org>
25058
25059         * debug-mono-symfile.h: Incremented version number.
25060
25061 2002-09-24  Martin Baulig  <martin@gnome.org>
25062
25063         * class.c (mono_debugger_class_init_func): New global function
25064         pointer variable.
25065         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
25066         call it.
25067
25068         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
25069         function.  This is called via the mono_debugger_class_init_func
25070         hook to add all types to the dynamic type table.
25071         (ves_icall_MonoDebugger_GetType): New interncall to get a class
25072         from its metadata token.
25073
25074         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
25075         New interncall for the debugger.
25076
25077 2002-09-24  Nick Drochak <ndrochak@gol.com>
25078
25079         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
25080         before using it in case it is null.
25081         
25082 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25083
25084         * metadata.c: allow custom modifiers in local var signatures
25085         (bug spotted by Zoltan Varga).
25086
25087 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25088
25089         * class.c: deal with the <Module> class that may have a NULL vtable.
25090         Eliminate warnings.
25091
25092 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
25093
25094         * image.c, image.h: more strong name helpers.
25095         * monosn.c: more work: convert pem keys to cryptoapi format.
25096
25097 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
25098
25099         * string-icalls.c: speedup IndexOf.
25100
25101 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
25102
25103         * icall.c: updates from Zoltan.2.Varga@nokia.com.
25104
25105 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
25106
25107         * icall.c: cleanup: use mono_object_domain ().
25108
25109 2002-09-23  Martin Baulig  <martin@gnome.org>
25110
25111         * debug-mono-symfile.c: Improved type support.
25112
25113 2002-09-22  Martin Baulig  <martin@gnome.org>
25114
25115         * debug-mono-symfile.c: Added support for reference types and strings.
25116
25117 2002-09-22  Martin Baulig  <martin@gnome.org>
25118
25119         * debug-mono-symfile.c: Started to work on the type table.
25120
25121 2002-09-21  Martin Baulig  <martin@gnome.org>
25122
25123         * debug-mono-symfile.c: Largely reworked the symbol table format.
25124         The symbol table is now incrementally updated each time a new
25125         method is added.  We're now also using our own magic and version
25126         so that you don't need to recompile all your classes if the
25127         dynamic table changes.
25128         (mono_debug_update_mono_symbol_file): Removed.
25129         (mono_debug_symfile_add_method): New function to add a method.
25130
25131 2002-09-21  Martin Baulig  <martin@gnome.org>
25132
25133         * icall.c
25134         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
25135         New interncall.
25136
25137         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
25138         New interncall to get a method from its metadata token.
25139
25140 2002-09-21  Martin Baulig  <martin@gnome.org>
25141
25142         * debug-mono-symfile.c: Create type table.
25143
25144 2002-09-20  Martin Baulig  <martin@gnome.org>
25145
25146         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
25147
25148 2002-09-20  Martin Baulig  <martin@gnome.org>
25149
25150         * debug-mono-symfile.c: Provide information about params and locals.
25151
25152 2002-09-20  Martin Baulig  <martin@gnome.org>
25153
25154         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
25155         New interncall.
25156
25157         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
25158         interncall to get a method from its metadata token.
25159
25160 2002-09-20  Martin Baulig  <martin@gnome.org>
25161
25162         * debug-mono-symfile.c: Added a few checks for method->header
25163         being non-NULL.  This should never happen, but for the moment
25164         let's use a g_warning() rather than a g_assert().
25165
25166 2002-09-19  Mark Crichton  <crichton@gimp.org>
25167
25168         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
25169         even if support for it isn't present.  Added an #ifdef to fix this.
25170
25171         * socket-io.c: Added checks back for Solaris support.
25172
25173 2002-09-19  Martin Baulig  <martin@gnome.org>
25174
25175         * debug-mono-symfile.c (read_string, write_string): Reflect latest
25176         changes in the symbol file format.
25177
25178 2002-09-18  Martin Baulig  <martin@gnome.org>
25179
25180         * debug-mono-symfile.c: Set version number to 21.
25181
25182 2002-09-18  Dick Porter  <dick@ximian.com>
25183
25184         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
25185         on netbsd.  Fixes bug 30051.
25186
25187 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25188
25189         * reflection.c:
25190         (set_version_from_string): little fix.
25191
25192 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
25193
25194         * monosn.c, Makefile.am: added strong name utility.
25195         * reflection.h, reflection.c: implemented delayed signing,
25196         locale, version and hash id assembly attributes.
25197
25198 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
25199
25200         * loader.c, metadata.c: load param attributes in signatures.
25201
25202 2002-09-16  Martin Baulig  <martin@gnome.org>
25203
25204         * debug-mono-symfile.c: Added string table with all method names.
25205
25206 2002-09-14  Martin Baulig  <martin@gnome.org>
25207
25208         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
25209         fast method lookup.
25210
25211 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
25212
25213         * reflection.c: record the public key token of referenced assemblies.
25214
25215 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
25216
25217         * image.c, image.h: added functions to get the strong name and the
25218         public key of an assembly.
25219         * pedump.c: use them.
25220
25221 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
25222
25223         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
25224
25225 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
25226
25227         * marshal.c (mono_marshal_get_managed_wrapper): Added
25228         MONO_TYPE_BOOLEAN 
25229
25230 2002-09-11  Martin Baulig  <martin@gnome.org>
25231
25232         * gc.c: Call GC_unregister_disappearing_link() on all links when
25233         finalizing them, this is necessary to aviod a crash in boehm's
25234         finalize handler.
25235
25236 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
25237
25238         * gc.c: handle GetTarget for finalized objects spotted and fixed by
25239         nick@chemlab.org.
25240
25241 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
25242
25243         * icall.c: implemented MonoType::Module.
25244         * reflection.c, reflection.h: mono_module_get_object () from
25245         Tomi Pakarinen <tomi.pakarinen@welho.com>.
25246
25247 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
25248
25249         * icall.c: ignore overridden methods in GetMethods ().
25250         Fix for FieldInfo::SetValue().
25251         * object.c: handle float/double in runtime invoke.
25252
25253 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25254
25255         * object.c: allow a constructor to be called again on an object.
25256
25257 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
25258
25259         * class.h, class.c: move field layout code to it's own function and
25260         export it. Get an interface id earlier. Move fields in MonoClass
25261         so they are more cache friendly and align the bitfields.
25262         * loader.c: temporary handle get_param_names() for a runtime method.
25263         * reflection.c, reflection.h: more code to handle runtime creation of
25264         types.
25265
25266 2002-09-09  Martin Baulig  <martin@gnome.org>
25267
25268         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
25269         signature with the pinvoke field being set for the actual call.
25270
25271 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
25272
25273         * icall.c: removed some unused icalls. Start of map of glib charsets
25274         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
25275
25276 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
25277
25278         * debug-helpers.c: break infinite loop (found and fixed by
25279         Holger Arnold <harnold@gmx.de>).
25280
25281 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
25282
25283         * icall.c: target may be null in create_delegate.
25284
25285 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
25286
25287         * marshal.c: handle a boolean return type.
25288
25289 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
25290
25291         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
25292
25293 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
25294
25295         * gc.c: fix weakreferences.
25296
25297 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
25298
25299         * icall.c: added icall to get default codepage.
25300
25301 2002-09-03  Dick Porter  <dick@ximian.com>
25302
25303         * threads.h: 
25304         * threads.c: Use MonoThread instead of MonoObject where
25305         apropriate.
25306
25307         Store running thread objects in a hash table, so that we have all
25308         the info to hand when waiting for them to finish
25309         (means we don't need OpenThread() any more, so mingw builds should
25310         be fully functional again.)
25311
25312         * verify.c:
25313         * object.h: Added thread ID to MonoThread
25314
25315 2002-09-03  Martin Baulig  <martin@gnome.org>
25316
25317         * icall.c (System.Reflection.Assembly::get_location): New interncall.
25318
25319 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25320
25321         * icall.c: fixed leak in get_temp_path. Thanks lupus.
25322
25323 2002-09-03  Martin Baulig  <martin@gnome.org>
25324
25325         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
25326         argument to store the end address of the disassembled instruction.
25327
25328         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
25329         here from debug-symfile.h.
25330         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
25331         JIT into this struct.
25332         (MonoSymbolFile): Added `char *image_file' field.
25333         (MonoDebugGetMethodFunc): Removed.
25334         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
25335         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
25336         (mono_debug_find_method): New method.
25337
25338         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
25339         create a full symbol file.
25340         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
25341         and static symbol files.
25342         (mono_debug_find_method): The symbol file keeps an internal method hash,
25343         call this to get a MonoDebugMethodInfo from a MonoMethod.
25344
25345         * debug-symfile.[ch]: Removed.
25346
25347 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
25348
25349         * image.c (do_mono_image_open): Remove linker version check.
25350
25351 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
25352
25353         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
25354         wrappers for instance methods.
25355         
25356 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25357
25358         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
25359
25360 2002-08-28  Dick Porter  <dick@ximian.com>
25361
25362         * Makefile.am: Export HOST_CC for w32 builds
25363
25364 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
25365
25366         * file-io.c process.c: MonoString are null terminated, no
25367         need for mono_string_to_utf16() anymore.
25368
25369 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25370
25371         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
25372
25373 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
25374
25375         * icall.c, reflection.h: speedup System.MonoType.
25376
25377 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
25378
25379         * reflection.c: allow null as the value of a string argument in
25380         custom attributes constructors.
25381
25382 2002-08-27  Martin Baulig  <martin@gnome.org>
25383
25384         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
25385         `trampoline_address' field.
25386
25387 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
25388
25389         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
25390         check (fixes bug #29486) 
25391
25392 2002-08-27  Martin Baulig  <martin@gnome.org>
25393
25394         * debug-mono-symfile.c: Changed the file format in a way that allows us
25395         open it read-only and to use a specially malloced area for all the
25396         dynamic data.  We can now also generate a symbol file on-the-fly if we're
25397         debugging IL code and there is no MCS generated symbol file for it.
25398
25399 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
25400
25401         * object.c: added a define for a good string and array
25402         creation speedup (not enabled by default because we need to deal with
25403         the synch stuff).
25404
25405 2002-08-26  Martin Baulig  <martin@gnome.org>
25406
25407         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
25408         function to create a dynamic symbol file.  This is used by the
25409         debugger to create a symbol file for IL code on-the-fly.
25410
25411 2002-08-26  Martin Baulig  <martin@gnome.org>
25412
25413         * loader.c (mono_lookup_pinvoke_call): Include the error message
25414         from g_module_error() in the error message.
25415
25416 2002-08-24  Martin Baulig  <martin@gnome.org>
25417
25418         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
25419         function to update the symbol file.  The symbol file is mmap()ed
25420         writable, but private.  This allows us to install the symbol file
25421         together with the assembly.
25422
25423 2002-08-24  Martin Baulig  <martin@gnome.org>
25424
25425         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
25426         but they can read the new symbol file format which mcs is now creating.
25427
25428         * debug-symfile.c (mono_debug_find_source_location): Moved to
25429         debug-mono-symfile.c; this is now operating on the new symbol file.
25430
25431 2002-08-23  Martin Baulig  <martin@gnome.org>
25432
25433         * debug-helpers.c (mono_method_desc_from_method): New function to get
25434         a MonoMethodDesc from a MonoMethod.
25435
25436 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
25437
25438         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
25439         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
25440
25441 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
25442
25443         * string-icalls.[ch]: make helper methods static.
25444
25445 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25446
25447         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
25448         types to it and to SetValueInternal.
25449
25450         * object.c: Moved handle_enum label to its proper place. This was the
25451         f... bug! ;-)
25452
25453         This time i compiled mcs and gtk-sharp and they both work.
25454
25455 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25456
25457         * icall.c: reverted partially my previous patch until 
25458         object.c:set_value handles enums correcly.
25459
25460 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25461
25462         * icall.c:
25463         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
25464         (ves_icall_System_Environment_get_MachineName): removed warning when
25465         compiling under cygwin.
25466
25467 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25468
25469         * object.c: fixed field_get_value() for reference types.
25470
25471 2002-08-22  Dick Porter  <dick@ximian.com>
25472
25473         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
25474         Don't free a buffer while it's still needed.  Patch from Jonathan
25475         Liger <Jonathan.liger@wanadoo.fr>
25476
25477 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
25478
25479         * icall.c (ves_icall_System_Environment_get_Platform): Add new
25480         internal call.
25481
25482 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
25483
25484         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
25485         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
25486
25487         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
25488         we call unmanaged code which throws exceptions.
25489
25490 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
25491
25492         * appdomain.h: added per-domain entry_assembly.
25493         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
25494         arguments.
25495         * icall.c: Assembly::GetEntryAssembly icall.
25496         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
25497         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
25498
25499 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
25500
25501         * appdomain.h, gc.c: added mono_domain_finalize ().
25502
25503 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25504
25505         * object.c:
25506         (mono_print_unhandled_exception): changed g_warning by g_printerr
25507         because g_log has a 1024 characters limit (yeah, i got a big stack
25508         trace). Don't print exception name, that should be in ToString 
25509         returned string.
25510
25511 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25512
25513         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
25514         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
25515
25516 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25517
25518         * object.c:
25519         (mono_print_unhandled_exception): after previous commit, i realized
25520         that MS calls ToString on the exception. I changed this function to
25521         do that. This way we get stack_trace for free.
25522
25523 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25524
25525         * object.c:
25526         (mono_print_unhandled_exception): invoke Message property instead of
25527         getting 'message' field from Exception. Don't allocate memory for
25528         'trace' and 'message' if not needed.
25529
25530 2002-08-18  Dick Porter  <dick@ximian.com>
25531
25532         * unicode.c: Fix asserts to match Encoder.cs checks
25533
25534 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
25535
25536         * marshal.c: fix unaligned store issue and a few wrong
25537         opcode argument types.
25538
25539 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25540
25541         * icall.c: added GetUninitializedObjectInternal internal call.
25542
25543 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
25544
25545         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
25546         to the right domain.
25547
25548 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
25549
25550         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
25551
25552         * class.c (class_compute_field_layout): set blittable to false for Strings
25553
25554         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
25555
25556 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25557
25558         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
25559         first chunk of code to create types at runtime. Code to
25560         handle ReflectedType/DeclaringType. Make reflection handles
25561         domain specific.
25562
25563 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
25564
25565         * class.c: set correct name in arrays.
25566
25567 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
25568
25569         * appdomain.c (mono_domain_transfer_object): make it work with
25570         valuetypes. bug fixes.
25571
25572 2002-08-12  Dick Porter  <dick@ximian.com>
25573
25574         * object.h: Rename some parameters to avoid c++ keywords (Patch
25575         from Joseph Wenninger <kde@jowenn.at>)
25576
25577 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
25578
25579         * icall.c: added icall to implement Assembly.GetFile*.
25580
25581 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
25582
25583         * reflection.h, reflection.c: code to embed managed resources.
25584
25585 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
25586
25587         * class.c: move all the type size stuff into
25588         class_compute_field_layout().
25589
25590 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
25591
25592         * class.c: ensure enums have always the correct instance size.
25593         * unicode.c: remove wrong assert.
25594
25595 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
25596
25597         * assembly.c: fix mem corruption issue.
25598         * image.h, image.c: added mono_image_get_resource () to access
25599         managed resources.
25600         * icall.c: implemented Assembly.EntryPoint property and some
25601         Managed Resources related internalcalls.
25602
25603
25604 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
25605
25606         * image.c, image.h: impemented mono_image_get_entry_point ().
25607         * appdomain.c: use mono_image_get_entry_point.
25608
25609 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
25610
25611         * reflection.c: support the object type argument when loading
25612         custom attributes.
25613
25614 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
25615
25616         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
25617         String as return type.
25618
25619 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
25620
25621         * reflection.c: fix encoding of named args for custom attrs to match
25622         the ms implementation. Read them back when instantiating custom
25623         attributes.
25624
25625 2002-08-02  Radek Doulik  <rodo@ximian.com>
25626
25627         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
25628         by Dietmar as quick fix
25629         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
25630         16 as stack size, used on more places as quick fix before Dietmar
25631         will fix it properly
25632
25633 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
25634
25635         * object.h, object.c: added accessors for fields and properties.
25636
25637 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
25638
25639         * class.c, class.h: made mono_class_get_field_from_name ()
25640         loop on parent types.
25641         Added mono_class_get_property_from_name ().
25642
25643 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
25644
25645         * class.c, class.h: move the code to setup the type vtable in its own
25646         function so that it can be reused also for types created at runtime.
25647         Eliminate the "class" identifier from the header file.
25648         * reflection.c: setup the vtable for enums so that we can create
25649         objects for use in SetConstant ().
25650
25651 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
25652
25653         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
25654         instead of the delegate itself as this pointer (bug #28383)
25655
25656 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
25657
25658         * marshal.c (mono_marshal_get_managed_wrapper): added return type
25659         conversions.
25660
25661 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25662
25663         * loader.c: don't set the pinvoke bit on icalls.
25664
25665 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
25666
25667         * debug-helpers.c (mono_method_full_name): only print a number to
25668         indicate wrapper type (so that the output is more readable in traces).
25669
25670 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
25671
25672         * class.c (mono_class_init): include method override patch from Paolo
25673
25674 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
25675
25676         * icall.c: fixed GetTypeCode().
25677
25678 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
25679
25680         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
25681         use real delegate invoke function to make it work with multicast
25682         delegates (fix bug# 28291).
25683
25684 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
25685
25686         * object.c: load constant strings.
25687
25688 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25689
25690         * reflection.c: no magic numbers.
25691         * tabledefs.h: security action enum.
25692
25693 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25694
25695         * assembly.c: fix possible memory corruption.
25696
25697 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
25698
25699         * reflection.h, reflection.c: added support for linking resources.
25700         * verify.c: check we have an updated corlib.
25701
25702 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
25703
25704         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
25705         string arrays.
25706         (mono_marshal_string_array): null terminate unmanaged string arrays.
25707         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
25708
25709 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25710
25711         * icall.c: Type.GetType () can now return also types from the
25712         calling assembly.
25713
25714 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
25715
25716         * loader.h, loader.c: stack walking support.
25717         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
25718         GetCallingAssembly.
25719
25720 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
25721
25722         * marshal.c: added optimisations for blittable types 
25723
25724         * class.c (mono_array_class_get): do not set blittable attribute on arrays
25725         (mono_class_setup_mono_type): set blittable attribute for single
25726         and double.
25727
25728         * marshal.c (mono_string_utf8_to_builder): impl.
25729         (mono_string_builder_to_utf8): impl.
25730         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
25731
25732 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
25733
25734         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
25735         (mono_marshal_get_managed_wrapper): impl. byref types
25736
25737 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25738
25739         * icall.c:
25740         (search_method): don't display debug message. 
25741
25742 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
25743
25744         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
25745
25746 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
25747
25748         * appdomain.c: set the missing filename when throwing exception.
25749
25750 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
25751
25752         * metadata.c (mono_type_size): code cleanup
25753         (mono_type_stack_size): removed some test code
25754
25755 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
25756
25757         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
25758         mono_get_exception_file_not_found now.
25759
25760         * exception.c (mono_exception_from_name_two_strings): New version
25761         that will call a constructor with two string arguments. 
25762         (mono_get_exception_file_not_found): New helper routine, used to
25763         report file-not-found errors.
25764
25765 2002-07-20  Dick Porter  <dick@ximian.com>
25766
25767         * process.h:
25768         * process.c: Pass file handles to CreateProcess
25769         
25770         * icall.c:
25771         * file-io.h:
25772         * file-io.c: Implemented CreatePipe
25773
25774 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
25775
25776         * metadata.c (mono_get_param_info): set alignment for value types
25777
25778 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25779
25780         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
25781         Constify mono_domain_assembly_open().
25782         * loader.c: handle null namespace in icalls.
25783
25784 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
25785
25786         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
25787         (emit_str_to_ptr_conv): marshal object as structs
25788
25789         * metadata.c (mono_type_to_unmanaged): marshal object as structs
25790
25791         * marshal.c (mono_marshal_get_runtime_invoke): support value types
25792
25793 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
25794
25795         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
25796         (mono_marshal_get_native_wrapper): we an now return value types
25797
25798 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25799
25800         * verify.c: more checks implemented.
25801
25802 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
25803
25804         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
25805         (fix bug #27695)
25806         (mono_marshal_get_native_wrapper): allow byref arguments
25807         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
25808         impl. PtrToStringXXX methods
25809         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
25810         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
25811         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
25812         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
25813         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
25814
25815 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
25816
25817         * reflection.c: fix buglet in parsing an assembly name.
25818
25819 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
25820
25821         * marshal.c (emit_ptr_to_str_conv): first impl.
25822
25823 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
25824
25825         * object.c, class.h: cache the vtable in the class as suggested by
25826         vargaz@freemail.hu (Zoltan Varga).
25827
25828 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
25829
25830         * class.h, loader.c: added mono_field_from_token().
25831         * verify.c: first cut of type checking code.
25832
25833 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
25834
25835         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
25836
25837 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
25838
25839         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
25840         (fix bug #27782)
25841         (mono_marshal_get_remoting_invoke): impl.
25842         (mono_delegate_begin_invoke): impl.
25843         (mono_mb_emit_save_args): impl.
25844         (mono_delegate_end_invoke): impl.
25845         (mono_marshal_get_delegate_begin_invoke):
25846         (mono_marshal_get_delegate_end_invoke):
25847         (mono_marshal_get_delegate_invoke): generate a special name for
25848         those methods (including the signature) and associate them whith
25849         the delegate class. 
25850
25851 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
25852
25853         * reflection.[ch]: 
25854         (mono_reflection_type_from_name): now it has a MonoImage parameter
25855         which is used as the default image to search the type in. If the image
25856         is NULL or getting the type from it fails, it defaults to corlib.
25857
25858         * icall.c: changed 1 call to mono_reflection_type_from_name to match
25859         new parameter.
25860
25861 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
25862
25863         * reflection.c: update the parameter table index.
25864
25865 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
25866
25867         * domain.c: don't include the mark byte in the string hash.
25868
25869 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
25870
25871         * icall.cs: icall for Type.GetTypeCode ().
25872         * verify: a couple of fixes and disabled local initialization checks.
25873
25874 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
25875
25876         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
25877
25878         * debug-helpers.c (mono_method_full_name): print the type of the
25879         runtime wrapper
25880
25881         * metadata.c (mono_signature_hash): a hash function for signatures
25882         (mono_signature_hash): better hash algorithm
25883
25884         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
25885
25886         * debug-helpers.c (mono_method_full_name): this can now generate
25887         method names with signatures
25888
25889         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
25890         method dont have this pointers.
25891
25892 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25893
25894         * reflection.c: fixup typebuilder tokens.
25895         * image.c: fix buglet.
25896         * marshal.h: remove whitespace.
25897         * metadata.h, metadata.c: reinstate code that was removed.
25898         * verify.c: handle catch directives and fix another couple of bugs.
25899
25900 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
25901
25902         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
25903         (mono_marshal_get_native_wrapper): make it comp. with the old code
25904         (mono_marshal_get_native_wrapper): support boolean
25905         (mono_marshal_get_managed_wrapper): support more types
25906
25907 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
25908
25909         * class.c (class_compute_field_layout): compute class->blittable attribute.
25910
25911 2002-07-09  Dick Porter  <dick@ximian.com>
25912
25913         * threads.c: Make the thread cleaning up cope with threads that
25914         call ExitThread()
25915
25916 2002-07-08  Radek Doulik  <rodo@ximian.com>
25917
25918         * reflection.c (method_encode_code): use non-translated values to
25919         compute finally_start, this fixes exception handling on ppc, yay!
25920
25921         * decimal.h (struct signscale): fix endianess
25922
25923 2002-07-07  Radek Doulik  <rodo@ximian.com>
25924
25925         * reflection.c: swap box_val and not val
25926
25927 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
25928
25929         * reflection.c, reflection.h: handle full assembly info in type name.
25930         Handle Type arguments when loading custom attributes.
25931         * icall.c: updated to use new mono_reflection_type_from_name () method.
25932
25933 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25934
25935         * loader.c:
25936         (method_from_memberref): also print assembly name when method not found.
25937
25938 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25939
25940         * icall.c:
25941         (ves_icall_TypeGetProperties): fixed bug #27473. 
25942
25943 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25944
25945         * reflection.c: display image name and token when cannot find the
25946         .ctor for an attribute.
25947
25948 2002-07-05  Martin Baulig  <martin@gnome.org>
25949
25950         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
25951
25952 2002-07-04  Dick Porter  <dick@ximian.com>
25953
25954         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
25955         compile on mingw.  This will cause mingw builds to not wait for
25956         subthreads to terminate after the main thread does.  I've lodged a
25957         bug with the mingw developers for them to wrap OpenThread().
25958
25959 2002-07-03  Dick Porter  <dick@ximian.com>
25960
25961         * threads.c: Store thread IDs instead of handles, because
25962         GetCurrentThread() returns a pseudohandle and therefore stores
25963         useless values.  mono_thread_cleanup() continues checking the
25964         array of threads until it is empty, to cope with subthreads
25965         spawning new threads after the main thread has finished.
25966
25967         * profiler.h:
25968         * profiler.c:
25969         * profiler-private.h: Pass the thread ID to thread profiler
25970         functions, instead of a handle
25971
25972 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25973
25974         * verify.c: fixes to make it more usable.
25975         * pedump.c: added --verify code to verify IL code in an assembly.
25976
25977 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25978
25979         * reflection.c: turn errors into warnings to allow compiling corlib.
25980
25981 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
25982
25983         * reflection.c: add special cases to compile corlib.
25984
25985 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
25986
25987         * reflection.c: handle properties with only a set method.
25988
25989 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25990
25991         * opcodes.h: add enum with opcodes in opval order.
25992
25993 2002-07-01  Dick Porter  <dick@ximian.com>
25994         
25995         * object.h:
25996         * object.c (mono_runtime_run_main): Removed unneeded argument
25997
25998 2002-06-28  Martin Baulig  <martin@gnome.org>
25999
26000         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
26001
26002 2002-06-27  Dick Porter  <dick@ximian.com>
26003
26004         * threads.c: Store the handle in both the parent thread and in the
26005         subthread, to minimise the time between starting a new thread and
26006         storing its ID.
26007
26008 2002-06-26  Dick Porter  <dick@ximian.com>
26009
26010         * appdomain.c (mono_runtime_cleanup): Close the socket library
26011         after all the threads have finished, not before
26012
26013 2002-06-26  Martin Baulig  <martin@gnome.org>
26014
26015         * debug-symfile.c (mono_debug_find_source_location): Added
26016         `guint32 *line_number' argument.  If it's not NULL, store the line number
26017         there and return the file name without the line number.
26018
26019 2002-06-25  Dick Porter  <dick@ximian.com>
26020
26021         * icall.c:
26022         * process.h:
26023         * process.c: Process forking and other support functions
26024
26025 2002-06-25  Dick Porter  <dick@ximian.com>
26026
26027         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
26028         things dont happen when the image is closed.
26029         (mono_image_lookup_resource): Walk the resource section looking
26030         for a particular entry
26031
26032         * cil-coff.h: PE resource section decoding
26033
26034 2002-06-25  Dick Porter  <dick@ximian.com>
26035         
26036         * assembly.h:
26037         * assembly.c: 
26038         (mono_assembly_foreach): Accessor functions to walk the list of
26039         loaded assemblies
26040         (mono_assembly_set_main):
26041         (mono_assembly_get_main): Process methods need to know which
26042         assembly is the "main" one
26043
26044         * object.c (mono_runtime_run_main): Record the main assembly
26045
26046         * debug-helpers.c: Fix typo
26047
26048 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
26049
26050         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
26051         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
26052
26053 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
26054
26055         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
26056
26057 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
26058
26059         * image.c (do_mono_image_open): Initialize reference count,
26060         otherwise we leak the MonoImage.
26061
26062 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
26063
26064         * reflection.c: small tweak to handle self-hosting.
26065
26066 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
26067
26068         * reflection.c: fix type name parse code.
26069
26070 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
26071
26072         * reflection.c: break out of the loop.
26073         * image.c: special case corlib.
26074
26075 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
26076
26077         * reflection.c: add all the custom attrs at the end to ensure the
26078         ctors have been properly initialized when the attributes are defined
26079         in the current assembly.
26080
26081 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
26082
26083         * reflection.c: handle correctly multiple-nested types.
26084
26085 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
26086
26087         * row-indexes.h: fix typos.
26088         * reflection.c: adjust for typos and fix method_def_or_ref
26089         encoding in MethodImpl table.
26090
26091 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
26092
26093         * reflection.c: fix entry point patching (thanks Serge!).
26094
26095 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
26096
26097         * verify.c: add check for System.Exception
26098
26099 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
26100
26101         * image.c, class.c: minifix for code just c&p'ed.
26102         * reflection.c: warning fix.
26103         * object.h, loader.h, domain.c: load also StringBuilder.
26104
26105 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
26106
26107         * marshal.h, marshal.c: some support code to handle complex marshaling.
26108
26109 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26110
26111         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
26112         Better signatures with vtable error dump.
26113
26114 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
26115
26116         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
26117
26118 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
26119
26120         * icall.c (ves_icall_Type_GetField): impl.
26121
26122 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26123
26124         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
26125         to retrieve a marshal description blob for a field or param.
26126
26127 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
26128
26129         * reflection.h, reflection.c: change order of nested type emission
26130         to avoid table corruption. The NestedTypes table is sorted.
26131         * icall.c: change order of GetConstructor results to workaround mcs bug.
26132
26133 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
26134
26135         * reflection.h, reflection.c: handle field and param marshal
26136         information.
26137
26138 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
26139
26140         * icall.c, marshal.c marshal.h: more Marshal class implementation.
26141
26142 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
26143
26144         * reflection.c: fix call convention.
26145
26146 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
26147
26148         * reflection.h, reflection.c: mono_image_get_memberref_token()
26149         takes a type instead of a class, now. Added
26150         mono_image_get_array_token() to create tokens for the special
26151         multi-dim array methods.
26152
26153 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
26154
26155         * assembly.c: handle modules (no assembly table). Split
26156         loading references in its own function.
26157         * class.c: handle moduleref resolution scope.
26158         * image.c, image.h: cache module name in image.
26159
26160 2002-06-07  Martin Baulig  <martin@gnome.org>
26161
26162         * reflection.c (mono_image_get_type_info): Only add a class layout entry
26163         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
26164
26165 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
26166
26167         * icall.c: more signature fixes that used uint instead of int.
26168
26169 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26170
26171         * reflection.c: fixed signature of field refs.
26172
26173 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
26174
26175         * class.c, reflection.c: handle typerefs of nested types
26176         (both on read and when writing files).
26177
26178 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
26179
26180         * icall.c: fix method signatures that tried to workaround the previous
26181         typo, d'oh!
26182
26183 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
26184
26185         * debug-helpers.c: fix typo.
26186
26187 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
26188
26189         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
26190         rewrote the PE/COFF writing code (our programs are understood by the
26191         ms runtime, now).
26192
26193 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
26194
26195         * gc.c, gc.h, icall.c: weakreference support.
26196
26197 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
26198
26199         * Makefile.am, mono-config.c: use $(sysconfdir).
26200
26201 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
26202
26203         * icall.c: changed default precision of Double.ToString() to 15.
26204         Fixed memory leak. Unified with Single.ToString.
26205
26206 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
26207
26208         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
26209
26210 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
26211
26212         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
26213         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
26214         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
26215         and myself.
26216
26217 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
26218
26219         * debug-symfile.c, sysmath.c: yet more compilation fixes.
26220
26221 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26222
26223         * reflection.c, socket-io.c: more compilation fixes.
26224
26225 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
26226
26227         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
26228         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
26229         unicode.c: warning and compiler compatibility fixes.
26230
26231 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
26232
26233         * class.h, metadata.c: fixed warnings/compilation errors.
26234
26235 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
26236
26237         * Makefile.am, mono-config.c, mono-config.h: configuration file
26238         support routines.
26239         * loader.c, loader.h: make Dll mapping configurable at runtime in the
26240         config file. Export methods to insert and lookup mappings.
26241
26242 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
26243
26244         * reflection.c: handle types and boxed objects in custom attr
26245         constructors.
26246
26247 2002-05-30  Martin Baulig  <martin@gnome.org>
26248
26249         * debug-symfile.c
26250         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
26251
26252 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
26253
26254         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
26255         to lookup the implmap row for a P/Invoke method.
26256         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
26257         P/Invoke method from the runtime on an as needed basis.
26258
26259 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
26260
26261         * metadata.c (mono_metadata_parse_signature): impl.
26262
26263 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
26264
26265         * class.c: handle .pack directive.
26266
26267 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
26268
26269         * object.c: initialize static fields with RVA data.
26270
26271 2002-05-25  Martin Baulig  <martin@gnome.org>
26272
26273         * debug-symfile.c
26274         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
26275
26276 2002-05-24  Martin Baulig  <martin@gnome.org>
26277
26278         * debug-symfile.c
26279         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
26280         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
26281         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
26282
26283 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
26284
26285         * object.c: special case string ctros in invoke.
26286         * gc.c: silly whitespace changes.
26287
26288 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
26289
26290         * threadpool.[ch]: impl. a threadpool that can
26291         be used by mint and mono.
26292
26293 2002-05-22  Martin Baulig  <martin@gnome.org>
26294
26295         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
26296         The first argument is now a `MonoReflectionModuleBuilder *', the return
26297         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
26298         `methods' field to get the method builder.  The `token' argument is the
26299         unfixed token.
26300
26301         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
26302         invalid characters instead of g_assert_not_reached()ing.  This seems
26303         to be the behaviour of mscorlib.
26304
26305 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
26306
26307         * object.c (mono_runtime_invoke_array): applied patch from Rachel
26308         Hestilow to fix bug #25104
26309
26310 2002-05-21  Martin Baulig  <martin@gnome.org>
26311
26312         * debug-symfile.c (mono_debug_find_source_location): New function.
26313         Looks up an IL offset in the line number table and returns the source
26314         location as a string.
26315
26316 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26317
26318         * icall.c:
26319         (mono_double_ToStringImpl): changed %f by %g until we have something
26320         better.
26321
26322 2002-05-21  Nick Drochak  <ndrochak@gol.com>
26323
26324         * icall.c : Use different name for Math.Pow's icall.  Needed to check
26325         parameters first in C#.
26326
26327 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
26328
26329         * icall.c, reflection.h: added icall to get info about an event.
26330
26331 2002-05-20  Radek Doulik  <rodo@ximian.com>
26332
26333         * object.c (mono_value_box): don't use memcpy for boxing on BIG
26334         endian
26335         (mono_value_box): don't use memcpy for small sizes on
26336         architectures with unaligned access
26337
26338 2002-05-20  Martin Baulig  <martin@gnome.org>
26339
26340         * reflection.c (mono_reflection_setup_internal_class): Don't crash
26341         if `tb->parent == NULL'.
26342         (mono_reflection_create_internal_class): New function.  This is
26343         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
26344         for enum types.
26345
26346         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
26347         New interncall.
26348
26349 2002-05-19  Martin Baulig  <martin@gnome.org>
26350
26351         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
26352         argument to get the length, don't default to the array length.
26353
26354 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
26355
26356         * assembly.c (mono_assembly_setrootdir): New function used to
26357         override the MONO_ASSEMBLIES directory.
26358
26359 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
26360
26361         * icall.c: ValueType_GetHashCode() initialize local var.
26362
26363 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
26364
26365         * reflection.c: sort custom attributes table.
26366
26367 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
26368
26369         * reflection.c: support named args in custom attributes (write support).
26370
26371 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
26372
26373         * reflection.c: fix finally position calculation.
26374
26375 2002-05-15  Radek Doulik  <rodo@ximian.com>
26376
26377         * reflection.c: fixed endianess at many places
26378
26379         * icall.c (ves_icall_InitializeArray): comment out debug msg
26380
26381 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
26382
26383         * object.c (mono_unhandled_exception): new function to handle
26384         unhandled exceptions.
26385         (mono_unhandled_exception): call the UnhandledException event.
26386         (mono_runtime_delegate_invoke): impl.
26387
26388 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
26389
26390         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
26391         returns the RVA, not the direct pointer to the data. Handle the case
26392         when the class size is fixed.
26393
26394 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
26395
26396         * reflection.c: fix some endianess issues.
26397
26398 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
26399
26400         * object.c (mono_runtime_invoke): is now able to catch exceptions.
26401
26402         * threads.c (mono_thread_init): added a callback which is invoked
26403         at thread start.
26404
26405 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
26406         
26407         * icall.c: make GetHashCode return non-negative values.
26408
26409 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
26410
26411         * object.c, icall.c, gc.c: revert to address-based hashcode.
26412
26413 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
26414
26415         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
26416
26417 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
26418
26419         * icall.c, class.c: special case <Module>.
26420
26421 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
26422
26423         * icall.c: fix bug in GetNow().
26424
26425 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
26426
26427         * object.c (mono_runtime_class_init): make sure that we call all
26428         static class constructors.
26429
26430 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
26431
26432         * reflection.c: sort methodsemantics table.
26433
26434 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
26435
26436         * reflection.h, reflection.c: honour init locals setting.
26437
26438 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
26439
26440         * icall.c: copied Double ToStringImpl for Single ToStringImpl
26441
26442 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
26443
26444         * reflection.c: support ContructorBuilders in attribute blob creation.
26445
26446 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
26447
26448         * reflection.c: some changes to build a binary that can be run
26449         directly in windows.
26450
26451 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
26452
26453         * loader.c: print a big message when an icall can't be found.
26454
26455 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26456
26457         * string-icalls.c: fix bug 24248.
26458
26459 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
26460
26461         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
26462         icall.c, reflection.h: separate assembly loading by pathname and by
26463         assembly name. Use the MONO_PATH env var to search for assemblies.
26464
26465 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
26466
26467         * assembly.c, image.h: add some support for assemblies
26468         with multiple modules.
26469         * class.c, class.h: export mono_class_from_typeref().
26470         * loader.c: remove duplicated code and use mono_class_from_typeref(),
26471         instead.
26472
26473 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
26474
26475         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
26476         documentation says (the ECMA one is correct).
26477
26478 2002-05-02  Dick Porter  <dick@ximian.com>
26479
26480         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
26481         Don't name the synchronisation mutex.
26482
26483 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
26484
26485         * rand.c
26486         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
26487         Make the prototypes match.
26488         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
26489         Same.
26490
26491         * icall.c
26492         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
26493         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
26494         all systems have tm.tm_zone, so use strftime() with %Z to print
26495         the timezone abreviation into a temp string.
26496
26497         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
26498         rather than mono_array_addr() on a MonoString on Big Endian
26499         machines.
26500
26501 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
26502
26503         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
26504         fix bug 24041
26505
26506 2002-04-30  Dick Porter  <dick@ximian.com>
26507
26508         * socket-io.c: Cope with SOCKET being an integer rather than a
26509         pointer now.
26510
26511         * threads.c: Added Thread_free_internal, to deal with thread
26512         handle cleanup.  Moved calls to handle_store() and handle_remove()
26513         to start_wrapper(), so each can only be called once.  Allocate
26514         synchronisation blocks with GC_malloc(), and use GC finalisation
26515         to close the handles.
26516
26517         * icall.c: added System.Threading.Thread::Thread_free_internal
26518
26519 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
26520
26521         * icall.c: support Environment.Exit, CommandLineArgs().
26522
26523 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
26524
26525         * object.c, object.h: added mono_runtime_run_main () and
26526         mono_runtime_get_main_args () for use in System.Environment.
26527
26528 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
26529
26530         * gc.c: fix thinko, enable actual finalization since the jit is now
26531         fixed.
26532
26533 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
26534
26535         * gc.c, object.c: take into account that an object may be offset wrt the address
26536         returned by GC_malloc().
26537
26538 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
26539
26540         * image.c: handle files without entries in the assembly table (modules).
26541
26542 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
26543
26544         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
26545         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
26546         allowed to be null when it's System.Object class setup.
26547
26548 2002-04-27  Martin Baulig  <martin@gnome.org>
26549
26550         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
26551         if `tb->parent == NULL' rather than crashing.
26552
26553 2002-04-28  Nick Drochak  <ndrochak@gol.com>
26554
26555         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
26556         calling acos() where asin() should have been called.
26557
26558 2002-04-26  Martin Baulig  <martin@gnome.org>
26559
26560         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
26561         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
26562         there's a subdirectory called `System', but we don't want to read that
26563         subdirectory as an assembly.
26564
26565 2002-04-25  Martin Baulig  <martin@gnome.org>
26566
26567         * debug-symfile.c: Reflect latest MonoString changes.
26568
26569 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
26570
26571         * rand.c, rand.h: instance method icalls need to have an explicit
26572         this pointer as first argument in the C implementation.
26573
26574 2002-04-25  Nick Drochak <ndrochak@gol.com>
26575
26576         * icall.c: Fix typo in map for GetNonZeroBytes
26577
26578 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
26579
26580         * string-icalls.c : String does now passes unit tests without any 
26581         errors, the following changes has been made:
26582         
26583         Implemented replace methods.
26584         Renaming of methods to (try) follow the standard.
26585         Fixed compare ordinal
26586         Made all memory allocated directly to function instead of via icall function.
26587         Small performance fix in is_in_array function
26588                         
26589  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
26590
26591         c (mono_string_Internal_ctor_charp_int_int):
26592         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
26593         sindex < 0, throw ArgumentOutOfRangeException instead of
26594         ArgumentNullException.
26595
26596         Added new check for length == 0, however
26597         I need to make it return String.Empty from the C code.
26598         
26599         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
26600         that calculate the length for us here.
26601         
26602         (mono_string_Internal_ctor_sbytep_int_int): Replaced
26603         mono_string_new_utf16 with mono_string_new, since value is utf8.
26604
26605 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
26606
26607         * object.c: register the object for finalization if needed.
26608         Allocate one more char in the string for the terminating 0 char.
26609
26610 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
26611
26612         * class.c, class.h, image.c: check if a type implemenst a destructor.
26613         Use the proper key for array class lookups.
26614         * icall.c: register the icalls in the System.GC class.
26615         * gc.c, gc.h: GC-related functions and icalls.
26616
26617 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26618
26619         * icall.c:
26620         * socket-io.c:
26621         * unicode.c: free some strings gotten from mono_string_to_utf8 and
26622         changed a couple of free () by g_free ().
26623
26624         * decimal.c: one-liner in the comments for decimal2string ().
26625
26626 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
26627
26628         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
26629
26630 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
26631
26632         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
26633         * object.c (mono_runtime_invoke_array) : handle null in params
26634
26635 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
26636
26637         * string-icalls.c: fixed bug in split (one off bug)
26638
26639 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
26640
26641         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
26642         * icalls.c: added String::Equals as internal method
26643
26644 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
26645
26646         * threads.c: fixed bug in the double interlocked functions
26647
26648 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
26649
26650         * threads.c: implemented all of the new interlocked icalls.
26651         * string-icalls.c: fix a bug in insert.
26652         * icalls.c: added the icalls for interlocked, removed old string functions.
26653         
26654 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
26655
26656         * loader.c: fix off-by-one error when reading argument names.
26657
26658 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
26659
26660         * profiler.c: win32 counter implementation (untested).
26661         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
26662         (the latter needs testing and more complete impl. from win32 folks).
26663
26664 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
26665
26666         * object.c: mono_array_new_full workaround mono_array_class_get
26667         problem.
26668
26669 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
26670
26671         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
26672         * object.h (mono_string_chars): Changed casting type.
26673
26674 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
26675
26676         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
26677                            method signatures to use gunichar2 instead of gint16.
26678
26679 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
26680
26681         * object.h, object.c: domain-specific versions of mono_object_new and
26682         mono_array_new.
26683
26684 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
26685
26686         * object.c: changed String layout
26687
26688         * string-icalls.c (mono_string_Internal_ctor_chara): added
26689         internal string constructors.
26690
26691 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
26692
26693         * threads.c: pass 'this' to the thread start routine.
26694
26695 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26696
26697         * string-icalls.c: fix IndexOf and LastIndexOf. Now
26698         InternalCompareStr don't call twice mono_string_cmp_char for the last
26699         character. Improved performance in mono_string_cmp_char.
26700
26701 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
26702
26703         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
26704         code into its own library: libmonoruntime.
26705
26706 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
26707
26708         * object.h, object.c: changed array format so that szarrays do not
26709         require a bounds structure.
26710         * icall.c, appdomain.c: support for new szarray format.
26711
26712 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
26713
26714         * metadata.c: compare also the retuns type when comparing signatures:
26715         we didn't do this as an optimization since really overloaded methods
26716         must differ also in the arguments, but this doesn't work with
26717         low-level IL code (or when using explicit conversion operators: see
26718         bug#23498 for an example).
26719
26720 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
26721
26722         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
26723
26724 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
26725
26726         * icall.c: make MonoType::GetElementType its own icall.
26727
26728 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
26729
26730         * icall.c: remove MonoMethod_get_Name().
26731         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
26732         object.
26733
26734 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
26735
26736         * string-icalls.c: optimized a few methods.
26737
26738 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
26739
26740         * icall.c: added all new string internal calls
26741         * string-icalls.c: added, new string internal call implementation.
26742         * object.c: added mono_string_new_size for allocating a string a size
26743
26744 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
26745
26746         * object.c (mono_object_isinst): use the same code as in the
26747         optimized x86 version.
26748
26749 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
26750
26751         * profiler.c: TSC-based timer code (faster and more accurate).
26752         Not hooked up in configure, yet (set USE_X86TSC to 1).
26753
26754 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
26755
26756         * profiler.c, profiler.h: track time spent compiling methods.
26757         * threads.c: track thread creation/destruction.
26758
26759 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
26760
26761         * profiler.c, profiler.h, profiler-private.h: profiling interface
26762         and sample implementation. Moved here so that it can be used also by
26763         the jit.
26764
26765 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
26766
26767         * reflection.c, reflection.h: keep types and other handles separate in
26768         the hash tables for referred tokens. Add guid for modules.
26769
26770 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
26771
26772         * assembly.c: fix bugs found with valgrind.
26773         * metadata.h, metadata.c: added mono_metadata_guid_heap().
26774
26775 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
26776
26777         * threads: added icall support for getting current domain for
26778                    the thread.
26779  
26780 2002-04-13  Martin Baulig  <martin@gnome.org>
26781
26782         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
26783         (MonoDebugVarInfo): Added `index' field for register based addresses.
26784         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
26785         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
26786         `MonoDebugVarInfo *params' and `guint32 this_offset' with
26787         `MonoDebugVarInfo *this_var'.
26788
26789         * debug-symfile.c (relocate_variable): New static function to write
26790         a location description for a local variable or method parameter.
26791
26792 2002-04-12  Martin Baulig  <martin@gnome.org>
26793
26794         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
26795         stack offset and begin/end scope address of a local variable.
26796         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
26797         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
26798         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
26799
26800         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
26801         Added new relocation types for start/end scope of a local variable.
26802
26803 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
26804
26805         * object.h: add mono_object_domain() macro.
26806         * reflection.c: handle typespecs.
26807         * icall.c: MonoMethod::get_Name() implementation.
26808
26809 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
26810
26811         * icall.c: String::GetHashCode() icall implementation.
26812
26813 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26814
26815         * icall.c: String::IndexOfAny icall.
26816         * object.c, object.h: make array->max_length more useful.
26817         Intrduced mono_object_class() and mono_string_length() macros.
26818
26819 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26820
26821         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
26822         instead of g_unichar_isdigit.
26823
26824 2002-04-11  Nick Drochak  <ndrochak@gol.com>
26825
26826         * icall.c: Implement a simple Double.ToString().
26827
26828 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
26829
26830         * appdomain.h: only io-layer.h is supposed to be included.
26831         * icall.c: explicitly import environ. Fix warning.
26832
26833 2002-04-10  Nick Drochak  <ndrochak@gol.com>
26834
26835         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
26836                 return true even if it's not Daylight Savings time.
26837                 Only return false for the case where the function isn't
26838                 implemented for a plaform (read Windows).
26839
26840 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26841
26842         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
26843         data with a mutex.
26844
26845 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
26846
26847         * mempool.c (mono_mempool_alloc): only use g_malloc when
26848         absolutely necessary.
26849
26850 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
26851
26852         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
26853
26854         * class.c (mono_class_vtable): use domain mempool to allocate vtable
26855         (mono_class_proxy_vtable): use domain mempool
26856
26857 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
26858
26859         * appdomain.h, appdomain.c: split initialization that requires the
26860         execution engine support into mono_runtime_init().
26861
26862 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
26863
26864         * class.c (mono_class_init): don't include vtable inside MonoClass
26865         to save some memory, gather some statistics.
26866         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
26867
26868 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
26869
26870         * icall.c: internalcall implementation for ValueType.Equals().
26871
26872 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
26873
26874         * object.c (mono_message_init): moved 
26875         (mono_runtime_exec_main): new arch. independent impl.
26876         (mono_runtime_invoke_array): new method - like
26877         mono_runtime_invoke, but you can pass an array of objects.
26878         (mono_remoting_invoke): new arch. independent impl.
26879         (mono_message_invoke): new arch. independent impl.
26880         (mono_runtime_class_init): new arch. independent impl.
26881         (mono_runtime_object_init): new arch. independent impl.
26882
26883 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
26884
26885         * metadata.c, object.c, reflection.c: documented the exported
26886         functions.
26887
26888 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
26889
26890         * icall.c: simpler code to pass the assembly builder data to corlib.
26891         Implement GetNestedTypes() internalcall.
26892
26893 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
26894
26895         * class.c: warn if a type can't be loaded.
26896
26897 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
26898
26899         * image.h: typedef MonoImageOpenStatus
26900         * types.h: removed unused file
26901         
26902 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
26903
26904         * icall.c: Enum_ToObject accepts enum value arguments.
26905
26906 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
26907
26908         * class.c: move initialization of properties, events and nested
26909         classes, so that they happen for interfaces, too.
26910
26911 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
26912
26913         * icall.c: cleanup some ugly casts in Array_SetValue*.
26914
26915 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
26916
26917         * icall.c: the values array fro enums is of the correct type, now.
26918         Implement (correctly) getFullName instead of assQualifiedName for
26919         MonoType.
26920         * reflection.h, reflection.c: added mono_type_get_name ().
26921
26922 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
26923
26924         * assembly.c, image.h: for each MonoImage, record from wich assembly
26925         it was loaded.
26926         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
26927         Make Type.Assembly work.
26928
26929 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
26930
26931         * debug-symfile.h: use char* instead of gpointer to avoid
26932         unnecessary casts.
26933
26934         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
26935
26936         * icall.c (ves_icall_InternalExecute): impl. FielSetter
26937         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
26938
26939 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
26940
26941         * icall.c (mono_message_init): impl. (code cleanup)
26942         (ves_icall_InternalExecute): impl. FieldGetter
26943
26944         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
26945         defined we call all (non-static)methods through the vtable. 
26946
26947 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
26948
26949         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
26950         finalizer even though the memory is still referenced (and the chunk of
26951         memory is not freed).
26952
26953 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
26954
26955         * assembly.c: fix brokeness.
26956
26957 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
26958
26959         * class.c: kill some warnings. Check explicit interface method
26960         implementation also without considering the namespace.
26961         Load also literal strings in static class data.
26962
26963 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
26964
26965         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
26966         (default_assembly_name_resolver): Make the resolver take the
26967         "base" directory where the assembly was originally defined, so we
26968         can load DLLs that are in the same directory as the assembly that
26969         is being referenced.
26970
26971 2002-03-28  Dick Porter  <dick@ximian.com>
26972
26973         * file-io.h: 
26974         * file-io.c:
26975         * socket-io.c: 
26976         * unicode.h: 
26977         * unicode.c: Warning cleanups
26978
26979 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
26980
26981         * object.h, reflection.h: use the correct type instead of MonoObject.
26982
26983 2002-03-28  Martin Baulig  <martin@gnome.org>
26984
26985         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
26986         (mono_debug_update_symbol_file): Initialize classes if necessary.
26987
26988 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
26989
26990         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
26991         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
26992
26993 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
26994
26995         * assembly.h: fix function prototype.
26996         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
26997         * mono-endian.h: use const cast.
26998
26999 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
27000
27001         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
27002
27003 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
27004
27005         * loader.c: don't assert when a typeref can't be loaded, give
27006         a chance to the runtime to trow an exception instead.
27007         * loader.h: fix warning.
27008
27009 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
27010
27011         * class.c (mono_class_proxy_vtable): added proxy support
27012
27013 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
27014
27015         * icall.c: removed last of PAL calls, added System.Environment
27016         * file-io.h, file-io.c: MonoIO implementation
27017         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
27018
27019 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
27020
27021         * appdomain.c: do not use the byte marker in ldstr table lookup.
27022         * debug-helpers.c: allow two ':' to separate class and method name.
27023         * object.c: allocate arrays bounds with the GC, too.
27024         * verify: add a few more checks.
27025
27026 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
27027
27028         * reflection.c: output also literal strings. Allocate parameter data
27029         with GC_malloc() (thanks, Martin, for catching this!).
27030
27031 2002-03-26  Martin Baulig  <martin@gnome.org>
27032
27033         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
27034         include the `this' offset in the `param_offsets'.
27035
27036 2002-03-25  Martin Baulig  <martin@gnome.org>
27037
27038         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
27039         mono_debug_get_class() function to get the classes. Added new
27040         relocation types for arrays and strings.
27041         (mono_debug_get_class): New static function to search in all
27042         referenced assemblies for a metadata token.
27043
27044         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
27045
27046 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27047
27048         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
27049         hold gc-allocated objects. Make the string heap a stream like the
27050         others. Removed duplicated code when writing stream info.
27051         Added asserts to catch possible buffer overflows. Set the sorted map
27052         for tables that need sorting. Added some documentation.
27053
27054 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
27055
27056         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
27057         for interned strings and vtables.
27058
27059 2002-03-24  Martin Baulig  <martin@gnome.org>
27060
27061         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
27062         it in the array since it was created with g_slist_prepend().
27063
27064 2002-03-24  Martin Baulig  <martin@gnome.org>
27065
27066         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
27067         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
27068         (mono_debug_method_from_token): Renamed to
27069         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
27070         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
27071
27072         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
27073         relocation types.
27074
27075         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
27076
27077 2002-03-24  Martin Baulig  <martin@gnome.org>
27078
27079         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
27080         (mono_debug_method_from_token): New func.
27081
27082         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
27083         New interncall, calls mono_debug_local_type_from_signature().
27084         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
27085         calls mono_debug_method_from_token().
27086
27087 2002-03-23  Martin Baulig  <martin@gnome.org>
27088
27089         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
27090         specifies the number of bytes to be converted, not the array size.
27091         Return the number of chars, not the number of bytes.
27092         (ves_icall_iconv_get_chars): The `byteCount' argument
27093         specifies the number of bytes to be converted, not the array size.
27094
27095 2002-03-23  Martin Baulig  <martin@gnome.org>
27096
27097         * reflection.h (MonoReflectionSigHelper): New type.
27098
27099         * reflection.c (mono_reflection_sighelper_get_signature_local),
27100         (mono_reflection_sighelper_get_signature_local): New functions.
27101
27102         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
27103         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
27104         interncalls.
27105
27106 2002-03-23  Martin Baulig  <martin@gnome.org>
27107
27108         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
27109         is_writeable is set.
27110         (mono_raw_buffer_update): New function to write the modified map
27111         back to disk.
27112
27113         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
27114
27115         * debug-symfile.c (mono_debug_update_symbol_file): Call
27116         mono_raw_buffer_update() when done writing.
27117
27118 2002-03-23  Martin Baulig  <martin@gnome.org>
27119
27120         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
27121
27122         * debug-symfile.c: Added support for arguments and local variables.
27123
27124 2002-03-23  Dick Porter  <dick@ximian.com>
27125
27126         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
27127         protected by ifdefs, hence breaking the w32 build.
27128
27129 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27130
27131         * object.c: implement is_interned() the right way.
27132
27133 2002-03-21  Martin Baulig  <martin@gnome.org>
27134
27135         * debug-symfile.[ch]: New files to handle debugging information
27136         files. There's also support to dynamically update these symbol
27137         files to include machine dependent information.
27138
27139 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
27140
27141         * threads.c (mono_thread_create): new function to create thread
27142         from C
27143
27144 2002-03-20  Martin Baulig  <martin@gnome.org>
27145
27146         * icall.c (ves_icall_InternalInvoke): Create a new object if the
27147         method is a constructor.
27148         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
27149         points to ves_icall_InternalInvoke().
27150
27151 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
27152
27153         * file-io.c: Flush shouldn't throw exceptions.
27154
27155 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
27156
27157         * file-io.c: FileStream flush support; FileSetLength now
27158         restores file pointer.
27159
27160 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
27161
27162         * class.c: set image for pointer classes.
27163
27164 2002/03/19  Nick Drochak <ndrochak@gol.com>
27165
27166         * sysmath.c: Forgot one.
27167
27168 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
27169
27170         * sysmath.c: Avoid redefining existing names.
27171
27172 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
27173
27174         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
27175         handled by runtime as icall rather than dllimport from libm.so
27176         * file-io.c, file-io.h: fixed handle argument type.
27177
27178 2002-03-18  Dick Porter  <dick@ximian.com>
27179
27180         * reflection.c (mono_image_get_type_info): rename interface to
27181         iface, because of "#define interface struct" on windows.
27182
27183 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
27184
27185         * class.c, class.h: rename and export mono_ptr_class_get().
27186         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
27187         * reflection.c, reflection.h, icall.c: better/saner type name
27188         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
27189         method signatures.
27190
27191 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
27192
27193         * class.c (mono_class_init): removed hardcoded GHC_SLOT
27194
27195         * icall.c (ves_icall_InternalInvoke): impl.
27196
27197 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27198
27199         * reflection.c: output the interface map table, too.
27200
27201 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
27202
27203         * class.c (class_compute_field_layout): separate computation of 
27204         static field layout
27205
27206 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
27207
27208         * icall.c: added System.Buffer support.
27209         * file-io.c: moved file icalls from PAL to FileStream.
27210
27211 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
27212
27213         * icall.c (ves_icall_System_Object_GetHashCode): impl.
27214
27215 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
27216
27217         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
27218
27219 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27220
27221         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
27222
27223 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
27224
27225         * debug-helpers.{c,h}: moved here from monograph some useful functions
27226         to locate a method by name/signature in a class or image. Included
27227         also a small and flexible IL disassembler.
27228
27229 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
27230
27231         * reflection.c: fixup tokens in methods with small header size, too.
27232
27233 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
27234
27235         * object.c (mono_string_to_utf8): remove assert(!error), instead
27236         print a warning. 
27237
27238 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
27239
27240         * icall.c: update to the new mono_Array_class_get interface.
27241
27242 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
27243
27244         * appdomain.c, object.c: Boehm-GC enable.
27245         * icall.c: make get_data_chunk() support split data requests.
27246         Ensure a class is initialized in more cases. Return only the first
27247         property found in GetProperties() or the compiler gets confused. 
27248         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
27249         * reflection.h, reflection.c: add fixup mechanism for field and method
27250         tokens. Initialize assembly->typeref in a single place. Output
27251         properties after events. Support custom attributes for events, too.
27252         Typo fix for paramter custom attrs.
27253
27254 2002-03-07  Martin Baulig  <martin@gnome.org>
27255
27256         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
27257
27258 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
27259
27260         * class.c (mono_array_class_get): fix. for multi. dim. arrays
27261
27262 2002-03-06  Martin Baulig  <martin@gnome.org>
27263
27264         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
27265         non-zero lower bounds. See testcases #F10-#F13.
27266
27267 2002-03-05  Martin Baulig  <martin@gnome.org>
27268
27269         * exception.c (mono_get_exception_argument_out_of_range): New exception.
27270
27271         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
27272         ves_icall_System_Array_GetValue(), only calculate the absolute array position
27273         here.
27274         (ves_icall_System_Array_SetValue): Likewise.
27275         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
27276         as argument and does the actual work. This function is used when copying a
27277         multi-dimensional array.
27278         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
27279         now do all the widening conversions of value types.
27280         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
27281
27282 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27283
27284         * class.c: remove some magic numbers and use the smbolic names,
27285         instead. Added init_events() to load event info at class init time.
27286         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
27287         and mono_metadata_methods_from_event().
27288         * reflection.h, reflection.c: added support for writing out the evnets
27289         related information.
27290
27291 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
27292
27293         * reflection.h, icall.c: use a different method (GetInterfaces)
27294         to gather interface info and add isbyref, isprimitive and
27295         ispointer to the ves_icall_get_type_info() return value.
27296
27297 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
27298
27299         * class.h: stared adding support for events.
27300         * icall.c: split find_members implementation. Added debug icall to get
27301         the address of an object.
27302         * reflection.c: handle TypeBuilders in mono_type_get_object().
27303
27304 2002-03-01  Martin Baulig  <martin@gnome.org>
27305
27306         * icall.c (ves_icall_System_Array_GetLength): This must throw an
27307         ArgumentOutOfRangeException(), not an ArgumentException().
27308         (ves_icall_System_Array_GetLowerBound): Likewise.
27309         (ves_icall_System_Array_GetValue): Improved argument checking.
27310         (ves_icall_System_Array_SetValue): Improved argument checking.
27311
27312 2002-03-01  Martin Baulig  <martin@gnome.org>
27313
27314         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
27315         called with invalid arguments rather than just dying with g_assert().
27316         (ves_icall_System_Array_SetValue): Likewise.
27317         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
27318         raise a NotImplementedException instead.
27319         (ves_icall_System_Array_GetLength): Added argument checking.
27320         (ves_icall_System_Array_GetLowerBound): Added argument checking.
27321
27322 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
27323
27324         * object.h (mono_assert): new macros mono_assert and
27325         mono_assert_not_reached
27326
27327 2002-02-28  Martin Baulig  <martin@gnome.org>
27328
27329         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
27330         and "System::String::IsInterned" to "System::String::_IsInterned".
27331
27332 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
27333
27334         * icall.c: remove hacks for typebuilder. Added icall to create a
27335         modified type from a tybebuilder.
27336         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
27337         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
27338         to create a backing MonoClass for a TypeBuilder.
27339
27340 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
27341
27342         * class.c, class.h: more refactoring of class init.
27343         Export mono_class_setup_mono_type() and mono_class_setup_parent().
27344
27345 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
27346
27347         * marshal.c, marshal.h: start of marshaling interface.
27348
27349 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
27350
27351         * icall.c: fix order in assembly qualified name icall.
27352
27353 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
27354
27355         * class.c: do not free str, since we store it in the hash table.
27356         * reflection.h: add label field to MonoILExceptionInfo.
27357         * reflection.c: handle references to more than one assembly. Handle
27358         case when there isn't a module created in the assembly.
27359
27360 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
27361
27362         * class.c: Fix typo. Start refactoring of class init code.
27363
27364 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
27365
27366         * appdomain.c: exit with 1 on error.
27367         * class.c: we already have the name in MonoClassField.
27368         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
27369         MonoStreamHeader instead of an offset of image->raw_metadata.
27370
27371 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
27372
27373         * appdomain.c (mono_init): Be even more descriptive about the error.
27374
27375 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
27376
27377         * appdomain.c: give the user an informative message when corlib can't
27378         be loaded.
27379
27380 2002-02-26  Martin Baulig  <martin@gnome.org>
27381
27382         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
27383         New icall to get the time zone data.
27384
27385 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
27386
27387         * reflection.c: set virtual and raw size of section correctly.
27388         * threads.c: transfer domain information to newly created threads.
27389
27390 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
27391
27392         * class.c: when instancing a class in a domain, load the default
27393         vaules for static fields from the constant table. Fix System.Enum to
27394         not be an enum.
27395         * icall.c: implement Object::GetType() internalcall. Implemented
27396         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
27397         Fixed checking of binding flags in find_members().
27398         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
27399         * reflection.c: handle enumerations when writing to the constant
27400         table. Use a different object cache for types.
27401
27402
27403 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
27404
27405         * object.c (mono_object_isinst): fix for arrays
27406
27407         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
27408
27409 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
27410
27411         * object.c: don't use mprotect ()  and fix intern pool hash table
27412         lookup for big endian systems.
27413
27414 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
27415
27416         * icall.c: change type_is_subtype_of () signature.
27417
27418 2002-02-21  Mark Crichton  <crichton@gimp.org>
27419
27420         * rand.c, rand.h: Added random number generator for
27421         System.Security.Cryptography classes.
27422
27423         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
27424
27425         * icall.c: Added System.Security.Cryptography calls.
27426
27427 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
27428
27429         * class.c, icall.c, metadata.c: better support for pointer types.
27430         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
27431         * reflection.c: Add support for getting custom attrs for properties
27432         and simplify some code.
27433
27434 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
27435
27436         * icall.c: change getToken () and add custom attribute GetBlob()helper
27437         method.
27438         * reflection.h: add custom attrs array to the reflection builder structures.
27439         * reflection.c: encode and emit custom attributes for all the relevant
27440         reflection objects. Cache fieldref and methodref tokens. Change
27441         mono_image_create_token() interface to take a MonoDynamicAssembly.
27442         More complete custom attributes decoder. Load custom attributes for
27443         Assembly, Field, Method and Constructor objects, too. Make the
27444         returned array an Attribute[] one, not object[]. Added
27445         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
27446         custom attribute constructor.
27447
27448 2002-02-20  Dick Porter  <dick@ximian.com>
27449
27450         * icall.c:
27451         * rawbuffer.c:
27452         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
27453         problem code out for now).
27454
27455 2002-02-19  Radek Doulik  <rodo@ximian.com>
27456
27457         * object.c (mono_ldstr): use hash table to avoid multiple swapping
27458
27459 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
27460
27461         * icall.c: register the GetCustomAttributes method.
27462         * object.c, object.h: add mono_string_new_len ().
27463         * reflection.h, reflection.c: added mono_runtime_invoke(),
27464         mono_install_runtime_invoke(). Added
27465         mono_reflection_get_custom_attrs () to load custom attributes and
27466         create the attribute objects.
27467
27468 2002-02-19  Dick Porter  <dick@ximian.com>
27469         * threads-dummy-types.c:
27470         * threads-dummy-types.h:
27471         * threads-dummy.c:
27472         * threads-dummy.h:
27473         * threads-pthread-types.c:
27474         * threads-pthread-types.h:
27475         * threads-pthread.c:
27476         * threads-pthread.h:  Deleted obsolete files
27477
27478 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
27479
27480         * class.c (mono_class_vtable): runtime init the class when we
27481         allocate static class data.
27482
27483         * icall.c (ves_icall_System_Array_SetValue): check for null values.
27484
27485         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
27486         and String - but we will need generic marshalling support in the
27487         future. 
27488         (mono_init): set the domain name in a ms compatible way
27489
27490         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
27491         String[].
27492
27493 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
27494
27495         * object.c (mono_array_clone): use alloca() instead of g_malloc  
27496         for sizes
27497
27498         * appdomain.c (mono_domain_unload): impl.
27499
27500 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
27501
27502         * appdomain.c, object.c: fix intern pool implementation.
27503         * class.c: fix alignment code.
27504
27505 2002-02-16  Radek Doulik  <rodo@ximian.com>
27506
27507         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
27508         and s2 > s1, just copy lower bytes to be compatible with little
27509         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
27510         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
27511
27512         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
27513         force big_endian to be 1 for big endian machines 
27514         (ves_icall_iconv_new_decoder): ditto
27515
27516 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
27517
27518         * socket-io.c (convert_sockopt_level_and_name): If the system
27519         doesn't define SOL_IP or SOL_TCP, get them by hand using
27520         getprotobyname() and caching the values (because this could be a
27521         slow operation).
27522         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
27523         Use the appropriate struct when the system does support it. Ie,
27524         not all systems have struct ip_mreqn so use struct ip_mreq when
27525         appropriate.
27526
27527 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
27528
27529         * reflection.c: handle finally clauses.
27530
27531 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
27532
27533         * socket-io.c: use g_snprintf() instead of snprintf.
27534
27535 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
27536
27537         * reflection.c (mono_param_get_objects): Cast second argument to
27538         mono_method_get_param_names to a const char** to silence the
27539         compiler warning.
27540
27541         * appdomain.c (mono_domain_assembly_open): Put parens around the
27542         truth statement in the for-loop.
27543
27544         * unicode.c (iconv_convert): Got rid of a compiler warning about
27545         int i being unused when the system has a new iconv.
27546         (iconv_get_length): Same.
27547
27548         * image.c (load_class_names): Cast the second argument to
27549         g_hash_table_insert() to char* to hush compiler warnings about the
27550         arg being a const.
27551         (mono_image_open): Same here.
27552
27553         * socket-io.c: Don't conditionally include sys/filio.h or
27554         sys/sockio.h here anymore since we now get them from
27555         io-layer/io-layer.h
27556         (inet_pton): If the system doesn't support inet_aton, implement
27557         using inet_addr and also #define INADDR_NONE if it isn't defined
27558         by the system.
27559
27560 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
27561
27562         * metadata.c, metadata.h: added function to get packing and size info
27563         of a typedef.
27564         * reflection.h, reflection.c: handle field RVA data. Save info about
27565         the table layout if needed. Assign typedef indexes to all the types
27566         before dumping the info about them to avoid forward reference problems.
27567
27568 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
27569
27570         * socket-io.c (convert_sockopt_level_and_name): ifdef
27571         SO_ACCEPTCONN because it is not defined on my system (old debian)
27572
27573 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27574
27575         * opcode.c: use stddef.h to get NULL.
27576
27577 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
27578
27579         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
27580         for FIONBIO, FIONREAD and SIOCATMARK.
27581         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
27582         define INADDR_NONE and besides, inet_addr() is deprecated and
27583         should not be used. Use inet_pton() instead - it also has the
27584         added bonus that it can easily handle IPv6 addresses as well.
27585         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
27586
27587 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
27588
27589         * decimal.c: remove _MSC_VER conditional.
27590
27591 2002-02-13  Dick Porter  <dick@ximian.com>
27592
27593         * socket-io.c: 
27594         * icall.c: Internal calls for Blocking, Select, Shutdown,
27595         GetSocketOption and SetSocketOption
27596
27597 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27598
27599         * assembly.cs: better resolver: use it instead of some kludgy
27600         code.
27601
27602 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
27603
27604         * reflection.c: the best way to speed-up the compiler is to avoid
27605         infinite loops.
27606
27607 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
27608
27609         * class.c (mono_class_vtable): changed the object layout
27610         (obj->vtable->class). 
27611         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
27612
27613 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27614
27615         * assembly.c: look for assemblies in the assembly dir, too.
27616
27617 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27618
27619         * class.c: fix thinko in mono_class_from_type().
27620
27621 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
27622
27623         * exception.h, exception.c: added TypeLoadException.
27624         * object.h, object.c: added mono_array_clone ().
27625         * icall.c: handle throwOnError in AssemblyGetType().
27626         Added Array.Clone().
27627         * opcode.h, opcode.c: use a single value for the opcode val.
27628         Compile fix for non-gcc compilers.
27629
27630 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
27631
27632         * opcodes.c, opcodes.h: export interesting info about opcodes.
27633
27634 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
27635
27636         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
27637         icalls. 
27638
27639         * class.c (class_compute_field_layout): set element_class for enums
27640         (mono_class_create_from_typedef): set element_class for normal classes
27641
27642         * icall.c (ves_icall_System_Enum_get_value): impl.
27643
27644         * class.c (mono_class_create_from_typedef): do not set valuetype
27645         flag for System.ValueType and System.Enum
27646
27647 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
27648
27649         * unicode.c (iconv_convert): fix big endian problem.
27650
27651 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
27652
27653         * class.c: add asserts if we are ever going to scribble over memory.
27654         * socket-io.c: not all systems have AF_IRDA defined.
27655
27656 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
27657
27658         * class.c (class_compute_field_layout): do not consider static
27659         fields to compute alignment
27660
27661 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
27662
27663         * appdomain.c (mono_appdomain_get): impl.
27664         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
27665
27666 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
27667
27668         * icall.c: ignore "file://" prefix when loading an assembly.
27669
27670 2002-01-23  Dick Porter  <dick@ximian.com>
27671
27672         * socket-io.c:
27673         * icall.c:
27674         * Makefile.am: Added socket support
27675
27676 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
27677
27678         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
27679         code back.  This should return the assemblies that are loaded by
27680         the runtime on behalf of an application domain. 
27681
27682         The current implementation is still broken, it just returns every
27683         assembly loaded, but until we get real applications domain this
27684         will do.
27685
27686 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
27687
27688         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
27689         AppDomain object.
27690
27691 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
27692
27693         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
27694         the mono_class_from_name lookup.
27695         (ves_icall_get_parameter_info): ditto.
27696         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
27697         method.
27698         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
27699
27700 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27701
27702         * class.c: load also nested classes on class init.
27703         System.ValueType instance methods gets passed boxed
27704         values, unless methods in derived classed that get a pointer to the
27705         data.
27706         * icall.c: use better name parsing code in GetType().
27707         * image.c, image.h: add mono_image_loaded ().
27708         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
27709         * reflection.c, reflection.h: added mono_reflection_parse_type().
27710
27711 2002-01-22  Veronica De Santis <veron78@interfree.it>
27712
27713         * icall.c : Added mapping of internal calls for Manual and Auto reset events
27714         * threads.c : Added the implementation of internal calls for events
27715         * threads.h : Added prototypes of internal calls for events
27716         
27717 2002-01-21  Radek Doulik  <rodo@ximian.com>
27718
27719         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
27720
27721 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
27722
27723         * class.c (mono_class_init): set min_align to 1 (instead of 0)
27724         (mono_class_value_size): use min_align
27725
27726 2002-01-20  Dick Porter  <dick@ximian.com>
27727
27728         * threads.h:
27729         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
27730         so it compiles on w32.
27731
27732 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
27733
27734         * metadata.c (mono_type_stack_size): impl.
27735
27736         * class.c (mono_class_get_field): impl. memberref token
27737
27738 2002-01-16 Veronica De Santis <veron78@@interfree.it>
27739
27740         * icall.h : Added the internal calls mapping for CreateMutex_internal
27741                     and ReleaseMutex_internal.
27742         * threads.h : Added the prototype of mutexes internal calls.
27743         * threads.c : Added the implementations of mutexes internal calls.
27744
27745 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
27746
27747         * metaparse.h: removed unused file.
27748         * reflection.c, reflection.h: added stream_data_align () function 
27749         to align data in streams and keep stream aligned. Add support for
27750         exception support in method headers.
27751
27752 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
27753
27754         * unicode.c: make iconv_convert () return the number of bytess written
27755         in the output buffer.
27756
27757 2002-01-15  Dick Porter  <dick@ximian.com>
27758         * threads.c: Make the runtime's idea of infinite timeouts coincide
27759         with the class library's
27760
27761         Fix a particularly egregious bug in mono_thread_cleanup(). That
27762         code was so utterly bogus it must have been written on a Monday.
27763
27764 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
27765
27766         * reflection.h: add subtypes field to TypeBuilder.
27767         * reflection.c: encode constants for literal fields.
27768         Handle subtypes. Fix user string token (and add a zero byte)
27769         at the end.
27770         
27771 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
27772
27773         * class.c (mono_class_init): bug fix: assign slot numbers for
27774         abstract methods.
27775
27776 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27777
27778         * reflection.c: don't try to output a code RVA for abstract methods.
27779         Small fixes for method header format. Output parameter info to the
27780         ParamDef table. Save method overriding info to MethodImpl table.
27781         Fix property support. Allow typedef.extends to be a type in the
27782         building assembly.
27783         * verify.c: fix off-by-one error.
27784
27785 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
27786
27787         * class.c: fix mono_class_from_mono_type () for szarray types.
27788         Remove unused cache check in mono_class_from_type_spec().
27789         * icall.c: *type_from_name () functions handle simple arrays and byref.
27790         * reflection.c: handle byref and szarray types. Handle methods without
27791         body (gets P/Invoke compilation working). Handle types and fields in
27792         get_token ().
27793         * reflection.h: add rank to MonoTypeInfo.
27794
27795 2002-01-10  Dick Porter  <dick@ximian.com>
27796
27797         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
27798         internal calls
27799
27800 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
27801
27802         * icall.c: initialize class in type_from_handle ().
27803         Loop also in parent classes for get_method ().
27804         * reflection.c: properly encode class and valuetype types.
27805         Start on encoding TypeBuilder types. Handle fieldrefs.
27806         Use correct length when registering a user string.
27807         Handle ConstructorBuilder and MonoMethod in get_token ().
27808         Make mono_type_get_object () aware of cached types.
27809         * object.c: back out change to mono_string_new ().
27810
27811 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
27812         * object.c: mono_string_new should return a NULL when the string 
27813         passed in is NULL -- not try to deference it.
27814         
27815 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
27816
27817         * icall.c: hack to make IsSubType work for TypeBuilders.
27818         * reflection.c: emit constructors before methods.
27819         Retrieve param names in mono_param_get_objects().
27820
27821 2002/01/05  Nick Drochak  <ndrochak@gol.com>
27822
27823         * Makefile.am: fix list of headers and sources so automake 1.5
27824         doesn't complain. Removed \# at end of list.
27825
27826 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
27827
27828         * reflection.c: get token for a method ref. Set return type of
27829         constructor to void.
27830         * loader.c: debug message.
27831         * class.c: typo fix.
27832
27833 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
27834
27835         * icall.c: fix array init with rank > 1. FindMembers
27836         loops in parent class as well.
27837         * image.c: do not insert nested types in name cache.
27838         * reflection.c: warning fix.
27839         * reflection.h: add override method (for interface impl).
27840
27841 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
27842
27843         * metadata.c: fix customattr decoding.
27844
27845 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
27846
27847         * rawbuffer.cs: Added native Win32 implementation, avoids using
27848         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
27849
27850 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
27851
27852         * class.c: make the low-level routines handle the cache.
27853
27854 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
27855
27856         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
27857
27858 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
27859
27860         * class.c: fix mono_array_element_size() for objects.
27861         * class.h, class.c: add properties to MonoClass and load them
27862         at init time.
27863         * icall.c: check with isinst() when assigning a value to an array
27864         instead of requiring the classes to match exactly.
27865         Implemented icall for System.Type::GetType().
27866         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
27867         enums. Handle bindingflags when looking for methods and fields.
27868         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
27869         and mono_metadata_methods_from_property().
27870         * reflection.h, reflection.c: added structures for propreties,
27871         parameters and enums. Implemented mono_property_get_object() and
27872         mono_param_get_objects().
27873
27874 2001-12-18  Dick Porter  <dick@ximian.com>
27875
27876         * file-io.c: Use mono_string_to_utf16() instead of
27877         mono_string_chars()
27878
27879         * object.c: Added mono_string_to_utf16(), which copies the non
27880         NULL-terminated MonoString into a new double-null-terminated
27881         buffer.
27882
27883 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
27884
27885         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
27886
27887 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
27888
27889         * file-io.c: raise exceptions if handle is invalid.
27890
27891 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
27892
27893         * assembly.c: yet another check for mscorlib.
27894         * class.c, class.h: load nesting info for classes.
27895         * icall.c: many new functions to support the Reflection classes.
27896         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
27897         * reflection.h, reflection.c: mono_image_create_token(),
27898         mono_assembly_get_object(), mono_type_get_object(),
27899         mono_method_get_object(), mono_field_get_object(): methods to return
27900         objects that parallel the C representation of assemblies, types,
27901         methods, fields.
27902
27903 2001-12-11  Dick Porter  <dick@ximian.com>
27904
27905         * icall.c:
27906         * file-io.c: Internal calls for file IO.
27907
27908 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
27909
27910         * tabledefs.h: missing FileAttributes.
27911         * verify.h, verify.c: use is_valid_string () to simplify and check for
27912         valid strings more correctly. Fix warnings and speeling.
27913         Check more tables: Filed, File, ModuleRef, StandAloneSig.
27914         Check code: branches, maxstack, method calls.
27915
27916 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
27917
27918         * object.c (mono_object_allocate): removed static, so that the jit
27919         can allocate value types.
27920
27921         * icall.c (ves_icall_System_DateTime_GetNow): impl.
27922
27923 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
27924
27925         * class.c: init enum types right away and register the
27926         token->MonoClass map in mono_class_create_from_typedef ().
27927         * verify.h, verify.c: first cut of the verifier.
27928         * pedump.c: add --verify switch to verify metadata tables.
27929         * tabledefs.h: add some missing enums.
27930
27931 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
27932
27933         * class.c (mono_install_runtime_class_init): impl.
27934         (mono_class_init): renamed mono_class_metadata_init to
27935         mono_class_init, also removed the metadata_inited flag
27936
27937         * object.c (mono_object_isinst): use faster algorithm
27938
27939 2001-11-30  Radek Doulik  <rodo@ximian.com>
27940
27941         * mono-endian.h: reverted last change
27942         added function prototypes
27943
27944         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
27945         add mono-endian.c back
27946
27947         * mono-endian.c: returned back, as Paolo pointed out, it's needed
27948         for unaligned access, I've mistaked it with endianess. I am
27949         sorry.
27950         (mono_read16): fix reverted endianess
27951         (mono_read64): ditto
27952         (mono_read32): ditto
27953
27954 2001-11-30  Dick Porter  <dick@ximian.com>
27955
27956         * exception.c: Implement mono_exception_from_name()
27957
27958 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
27959
27960         * metadata.h, metadata.c: remove params_size and locals_size and their
27961         calculation from the metadata code: they are only usefult to the
27962         interp.
27963
27964 2001-11-29  Radek Doulik  <rodo@ximian.com>
27965
27966         * object.c (mono_ldstr): swap bytes here, it's probably not the
27967         best place, but works for me now, I'll redo it once I know mono
27968         better, also note that I add PROT_WRITE and don't reset back, also
27969         note that it's only affects big endians, so x86 should be OK
27970
27971         * mono-endian.h (read16): use just glib macros for both endians
27972
27973         * mono-endian.c: removed as glib macros are used in in
27974         mono-endian.h so we don't need to care about endianess for read
27975         macros as glib does that for us already
27976
27977 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
27978
27979         * class.h, class.h: take minimum alignment into consideration so
27980         that the fields of a class remain aligned also when in an array.
27981
27982 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
27983
27984         * loader.h, loader.c: add mono_method_get_param_names().
27985         * class.c: 0-init class fields.
27986
27987 2001-11-26  Dick Porter  <dick@ximian.com>
27988
27989         * icall.c:
27990         * threads-types.h:
27991         * threads.c: New file that handles System.Threading on all platforms
27992
27993         * object.c: 
27994         * object.h: Remove the synchronisation struct from MonoObject,
27995         replace it with a pointer that gets initialised on demand
27996
27997         * Makefile.am: Replace all the system-specific threading code with
27998         a single file that uses the new wrapper library
27999
28000 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
28001
28002         * class.c, class.h: add mono_install_trampoline() so that the runtime
28003         can register a function to create a trampoline: removes the ugly
28004         requirement that a runtime needed to export arch_create_jit_trampoline.
28005         * object.h, object.c: added mono_install_handler() so that the runtime
28006         can install an handler for exceptions generated in C code (with
28007         mono_raise_exception()). Added C struct for System.Delegate.
28008         * pedump.c: removed arch_create_jit_trampoline.
28009         * reflection.c: some cleanups to allow registering user strings and
28010         later getting a token for methodrefs and fieldrefs before the assembly
28011         is built.
28012         * row-indexes.h: updates and fixes from the new ECMA specs.
28013
28014 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
28015
28016         * class.h, class.c: add enum_basetype field to MonoClass.
28017         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
28018         to get index in the constant table reated to a field, param or
28019         property.
28020         * reflection.h, reflection.c: handle constructors. Set public-key and
28021         version number of the built assembly to 0.
28022         * row-indexes.h: update from new ECMA spec.
28023
28024 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
28025
28026         * class.h, class.c: add a max_interface_id to MonoClass.
28027         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
28028         since it's used to do that. Added mono_type_type_from_obj().
28029         Make GetType() return NULL instead of segfaulting if the type was not
28030         found. Handle simple arrays in assQualifiedName.
28031         * object.h: add a struct to represent an Exception.
28032         * reflection.c: output call convention in method signature.
28033         Add code to support P/Invoke methods and fixed offsets for fields.
28034
28035 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
28036
28037         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
28038         the value.
28039         * icall.c: use mono_array_addr instead of array->vector: fixes the
28040         reflection image writing.
28041         * reflection.c: init call convention byte to 0 in method signature.
28042         Encode the property signature. Don't output property-related methods
28043         twice. Really process the properties for a type (don't cast a field to
28044         a property, my mom always told me that).
28045         Fix 64 bit issues in pointer alignment in a different and more
28046         readable way.
28047
28048 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
28049
28050         * loader.h: Removed type class from MonoDefaults, added monotype
28051
28052         * loader.c: Loaded MonoType, removed loading of Type
28053
28054         * icall.c (my_mono_new_object): Now returns a System.MonoType,
28055         and fills in System.Type._impl with a RuntimeTypeHandle rather
28056         than the actual MonoClass *
28057
28058         (ves_icall_type_from_handle): change from type_class to
28059         monotype_class
28060
28061         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
28062         implemented
28063
28064         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
28065         implemented
28066
28067         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
28068
28069         (ves_icall_System_Reflection_Assembly_GetType): implemented
28070
28071         (ves_icall_System_MonoType_assQualifiedName): implemented
28072
28073         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
28074
28075 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
28076
28077         * assembly.c (mono_assembly_open): Implement a cache for the
28078         assemblies. 
28079
28080         (mono_assembly_close): only destroy the assembly when the last
28081         reference is gone.
28082         
28083 2001-11-09  Dick Porter  <dick@ximian.com>
28084
28085         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
28086
28087 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
28088
28089         * class.c (mono_class_metadata_init): bug fix: compute the right slot
28090
28091 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
28092
28093         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
28094         from Martin Weindel.
28095         * object.h: add mono_string_chars ().
28096
28097 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
28098
28099         * reflection.c (build_compressed_metadata): Eliminates warnings
28100         and uses 64-bit clean code.
28101
28102         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
28103         (mono_type_equal): Change signature to eliminate warnings.
28104
28105 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
28106
28107         * icall.c, loader.c: remove the internalcall array constructors.
28108         Changes to match the new MonoArray structure.
28109         * object.h, object.c: an array object doesn't allocate an extra
28110         vector. Add mono_array_new_full () to create jagged arrays easily.
28111
28112 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
28113
28114         * metadata.h, metadata.c: add mono_metadata_field_info () to
28115         retreive all the info about a field from vairous tables.
28116         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
28117         * class.h, class.c: augment MonoClassField with more info.
28118         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
28119         policy and load a field's RVA if needed.
28120
28121 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
28122
28123         * class.c (mono_class_metadata_init): create a trampoline for all
28124         virtual functions instead of actually compiling them.
28125
28126 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
28127
28128         * class.h, class.c: include name in MonoClassField.
28129         * class.c: fix fundamental type of System.Object and System.String.
28130         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
28131         tokens in ldtoken.
28132         * icall.c: remove internalcalls for the Reflection stuff that is now
28133         done in C# code.
28134         * loader.c: mono_field_from_memberref () implementation.
28135         * mono-endian.c: thinko (s/struct/union/g).
28136         * object.c, object.h: make the mono_string_* prototypes actually use
28137         MonoString instead of MonoObject.
28138         * reflection.c, reflection.h: updates for changes in the reflection
28139         code in corlib: we use C structures that map to the actual C# classes.
28140         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
28141         fat method header if needed and use the info from the ILGenerator for
28142         methods. Handle fields in types. Misc fixes.
28143
28144 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
28145
28146         * class.c (mono_class_metadata_init): bug fix: always allocate
28147         space for static class data
28148
28149 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
28150
28151         * class.c (mono_compute_relative_numbering): use relative
28152         numbering to support fast runtime type checks.
28153
28154 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
28155
28156         * class.c (mono_class_create_from_typeref): added debugging output
28157         to print class name when MonoDummy is returned instead of real class
28158
28159 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
28160
28161         * class.c (mono_class_metadata_init): interface offset table now
28162         contains pointers into the vtable - this is more efficient for the jit
28163
28164 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
28165
28166         * class.c (mono_class_metadata_init): use a temporary vtable (the
28167         old algorithm only worked for the interpreter, but not for the jit)
28168
28169 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
28170
28171         * loader.c (method_from_memberref): use mono_class_get to get the
28172         class of an array instead of using System.Array directly.
28173         (mono_get_method): also add MEMBERREF methods to the method cache
28174         which usefull for arrays.
28175
28176 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
28177
28178         * pedump.c (arch_compile_method): added to compute vtable entry
28179
28180         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
28181         number of interfaces.
28182         
28183         * class.h: merged MonoArrayClass into MonoClass
28184
28185         * class.c (mono_class_create_from_typedef): compute the vtable size and
28186         allocate space to include the vtable inside MonoClass
28187         (mono_class_metadata_init): initialize the vtable
28188
28189 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
28190
28191         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
28192         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
28193         * image.c: endian fixes by Laurent Rioux.
28194         * object.h, object.c: rename MonoStringObject to MonoString and
28195         MonoArrayObject to MonoArray. Change some function names to conform to
28196         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
28197         guint16* as first argument, so don't use char*.
28198         Provide macros to do the interesting things on arrays in a portable way.
28199         * threads-pthread.c: updates for the API changes and #include <sched.h>
28200         (required for sched_yield()).
28201         * icall.c: updates for the API changes above.
28202         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
28203         platforms that need them.
28204
28205 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
28206
28207         * class.c: set the correct type for all the fundamental
28208         type when loading the class.
28209
28210 2001-10-05  Dick Porter  <dick@ximian.com>
28211
28212         * threads-pthread.c (pthread_mutex_timedlock): Simple
28213         compatibility version for C libraries that lack this call.
28214
28215 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
28216
28217         * class.c: MonoTypes stored in MonoClass are stored as
28218         fundamental MonoTypes when the class represents a
28219         fundamental type (System.Int32, ...).
28220         The TypeHandle return by ldtoken is a MonoType*.
28221         * icall.c: ves_icall_get_data_chunk () write out all the
28222         PE/COFF stuff. Implement ves_icall_define_method (),
28223         ves_icall_set_method_body (), ves_icall_type_from_handle ().
28224         * image.c: properly skip unknown streams.
28225         * loader.h, loader.c: add type_class to mono_defaults.
28226         * metadata.c, metadata.h: export compute_size () as
28227         mono_metadata_compute_size () with a better interface.
28228         Typo and C&P fixes.
28229         * pedump.c: don't try to print the entry point RVA if there is no entry point.
28230         * reflection.c, reflection.h: many cleanups, fixes, output method
28231         signatures and headers, typedef and typeref info, compress the metadata
28232         tables, output all the heap streams, cli header etc.
28233         * row-indexes.h: typo fixes.
28234
28235 2001-10-04  Dick Porter  <dick@ximian.com>
28236
28237         * object.h: Add a synchronisation mutex struct to MonoObject
28238
28239         * object.c (mono_new_object): Initialise the object
28240         synchronisation mutexes
28241
28242         * icall.c: System.Threading.Monitor internal calls
28243         
28244         * threads-pthread.h:
28245         * threads-pthread.c: System.Threading.Monitor internal calls
28246
28247         * threads-types.h: New file, includes the system-specific thread
28248         structures
28249         
28250         * threads-pthread-types.h:
28251         * threads-pthread-types.c: New files, handle pthread-specific
28252         synchronisation types
28253
28254         * threads-dummy-types.h: 
28255         * threads-dummy-types.c: New files of dummy support for
28256         thread-specific types
28257
28258         * metadata.c:
28259         * image.c:
28260         * pedump.c: include mono-endian.h not endian.h
28261         
28262         * Makefile.am: More threads files.
28263         Name mono-endian.h not endian.h
28264
28265 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
28266
28267         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
28268         stuff and implement a few more bits.
28269         * icall.c: a field needs to be dereferenced twice. Do not use the same
28270         name for two variables in the same scope.
28271         * image.c, image.h: cleanups.
28272
28273 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
28274
28275         * class.c (mono_class_metadata_init): bug fix: compute the right size
28276
28277 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
28278
28279         * icall.c: implemented some of the Reflection internalcalls.
28280         * image.c, image.h: start writing out the PE/COFF image.
28281         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
28282         that does the reverse than decode_blob_size ().
28283         * object.c: use mono_metadata_encode_value (). Move here
28284         temporary implementation of mono_string_to_utf8 ().
28285         * rawbuffer.c: make malloc_map static.
28286
28287 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
28288
28289         * metadata.c: fix type comparison for arrays.
28290         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
28291         Added a couple of new classes to monodefaults.
28292         * icall.c: added a couple of Reflection-related internalcalls.
28293         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
28294         Added a byval_arg MonoType to MonoClass.
28295
28296 2001-09-28  Dick Porter  <dick@ximian.com>
28297
28298         * icall.c:
28299         * threads-pthread.h: 
28300         * threads-pthread.c: Implemented internal calls for
28301         LocalDataStoreSlot operations.  Applied mutexes around all shared
28302         data.  Reworked the thread creation and Start() operations to
28303         avoid a race condition.
28304         
28305         * threads-dummy.h:
28306         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
28307
28308 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
28309
28310         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
28311
28312 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
28313
28314         * class.c, loader.c: warn and return NULL instead of erroring out.
28315         * icall.c: added System.AppDomain::getCurDomain().
28316         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
28317
28318 2001-09-25  Dick Porter  <dick@ximian.com>
28319
28320         * threads-pthread.h:
28321         * threads-pthread.c: Implemented timed thread joining and added
28322         System.Threading.Thread::Join_internal internal call
28323
28324         * icall.c: Added System.Threading.Thread::Join_internal internal call
28325
28326         * threads-dummy.h:
28327         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
28328
28329 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
28330
28331         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
28332         mono_string_intern () to implement the semantics of the ldstr opcode
28333         and the interning of System.Strings.
28334         * icall.c: provide hooks to make String::IsIntern and String::Intern
28335         internalcalls.
28336
28337 2001-09-23  Dick Porter  <dick@ximian.com>
28338
28339         * threads-dummy.c: 
28340         * threads-dummy.h: New files of dummy threading routines
28341
28342         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
28343         support code based on system specifics
28344
28345         Rename PTHREAD_LIBS to THREAD_LIBS
28346         
28347 2001-09-23  Dick Porter  <dick@ximian.com>
28348
28349         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
28350         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
28351         internal calls.
28352         (mono_thread_init): Set up a Thread object instance to return when
28353         the main thread calls Thread.CurrentThread
28354         (mono_thread_cleanup): Wait for all subthreads to exit
28355
28356         * icall.c: New internal calls for System.Threading.Thread::Sleep
28357         (including Schedule) and CurrentThread
28358
28359         * threads.h: New file, to insulate thread-specific stuff from the
28360         rest of the code
28361
28362 2001-09-21  Dick Porter  <dick@ximian.com>
28363
28364         * threads-pthread.h: 
28365         * threads-pthread.c: New file, for handling pthreads-style
28366         threading support.  Start() now starts a new thread and executes
28367         the ThreadStart delegate instance.
28368
28369         * icall.c: Added the internalcall for
28370         System.Threading.Thread::Start_internal
28371
28372         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
28373
28374 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
28375
28376         * loader.c: work around the different signatures for delegates
28377         constructors csc generates in compiled code vs the ones compiled in mscorlib.
28378
28379 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
28380
28381         * class.h, class.c: add mono_class_get_field_from_name ().
28382         * *: Fix C comments and other ANSI C issues.
28383
28384 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
28385
28386         * endian.h, assembly.c: fix some endianness issues.
28387
28388 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
28389
28390         * loader.h, load.c: add delegate_class to mono_defaults.
28391         Handle runtime provided methods in mono_get_method ().
28392
28393 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
28394
28395         * loader.c (mono_get_method): use pinvoke for internal call
28396
28397         * icall.c: use pinvoke for internal call
28398
28399         * loader.c (method_from_memberref): set the method name
28400
28401 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
28402
28403         * metadata.c: help the compiler generate better code for
28404         mono_class_from_mono_type ().
28405
28406 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
28407
28408         * class.c (mono_class_metadata_init): delayed computing of the
28409         class size to mono_class_metadata_init ()
28410
28411 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
28412
28413         * class.c, class.h: add an interfaces member to MonoClass.
28414         * image.c, image.h: add assembly_name field to MonoImage
28415         from the assembly table.
28416         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
28417
28418 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
28419
28420         * class.c: Handle Array in mono_class_from_mono_type ().
28421         * metadata.c, pedump.c: some endian fixes.
28422
28423 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
28424
28425         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
28426         * metadata.c: fix small problem introduced with the latest commit.
28427
28428 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
28429
28430         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
28431         We don't need a MonoMetadata pointer anymore to compare signatures in
28432         mono_metadata_signature_equal (), update callers.
28433         Reduced memory usage an number of allocations for MonoMethodHeader and
28434         MonoMethodSignature.
28435
28436 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
28437
28438         * metadata.c: added compare for szarray.
28439
28440 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
28441
28442         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
28443         and add a couple more types to it and mono_defaults. Give an hint on
28444         classes that need implementing in our corlib and are referenced
28445         in mscorlib.
28446
28447 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
28448
28449         * class.h, class.c: keep track if a class is also an Enum.
28450         * loader.c: Implement a couple more types for use in libffi
28451         marshalling. Gives better diagnostics when failing to dlopen
28452         a library. Set method->klass for P/Invoke methods, too.
28453
28454 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
28455
28456         * class.c, class.h: add a MonoType this_arg to MonoClass that
28457         represents a pointer to an object of the class' type that
28458         can be used by the interpreter and later the type cache.
28459         Add best guess alignment info for valuetype objects.
28460
28461 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
28462
28463         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
28464         into MonoType: one less level of indirection and allocation and
28465         simplifies quite a bit of code. Added cache for MonoTypes that are
28466         used frequently, so that we don't need to allocate them all the time.
28467
28468 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
28469
28470         * class.c (mono_class_create_from_typedef): System.Enum is also a
28471         value type, although it does not derive from System.ValueType
28472         (maybe a bug in the ms compiler?)
28473
28474         * metadata.c (mono_type_size): return the right size for value types
28475
28476         * loader.c (mono_get_method): only initialize method header if not abstract
28477
28478         * class.c (mono_class_from_mono_type): use mono_default values. 
28479
28480 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
28481
28482         * *: use MonoClass pointers instead of <type_tokens>
28483         
28484         * class.h: new flag: metadata_inited.
28485
28486         * class.c (mono_class_metadata_init): impl.
28487         (mono_class_instance_size): impl.
28488         (mono_class_data_size): impl.
28489
28490 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
28491
28492         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
28493         MonoClass now has the name and name_space fields. 
28494         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
28495         mono_get_method () takes and optional MonoClass as argument.
28496         Removed mono_typedef_from_name() and added mono_class_token_from_name()
28497         instead that takes advantage of a map from class names to typedef
28498         tokens in MonoImage.
28499
28500 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
28501
28502         * metadata.c: zero is not a valid alignment boundary.
28503         Merge MONO_TYPE_VOID in default decoding code.
28504
28505 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
28506
28507         * image.h: merged MonoMetadata into MonoImage
28508
28509         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
28510         identify the type of elements.
28511
28512 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
28513
28514         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
28515         * cil-coff.h: split MonoMSDOSHeader and add size info.
28516         * image.c: add some consistency checks.
28517         * metadata.c: fix row size computation: one programmer
28518         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
28519         add explanation for the locator routine.
28520         Fix decoding of size in method header.
28521         
28522 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
28523
28524         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
28525         (g_concat_dir_and_file): Bring g_concat_dir_and_file
28526         function from gnome-libs.  This uses the right path separator
28527         based on the OS, and also works around a bug in some systems where
28528         a double slash is not allowed. 
28529         (default_assembly_name_resolver): Use g_concat_dir_and_file
28530         (mono_assembly_open): ditto.
28531
28532 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
28533
28534         * metadata.c (mono_metadata_signature_equal): impl.
28535
28536         * *: void is now a realy MonoType (instead of using NULL)
28537         
28538         * metadata.c (do_mono_metadata_parse_type): use
28539         mono_metadata_parse_type to parse void value.
28540
28541 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
28542
28543         * metadata.c, metadata.h: in the signature and method header store
28544         only the space required for holding the loca vars and incoming arguments.
28545
28546 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
28547
28548         * metadata.c (do_mono_metadata_parse_type): treat void like any
28549         other type (instead of assigning NULL);
28550
28551 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
28552
28553         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
28554
28555 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
28556
28557         * image.c (do_mono_image_open): added a cache for arrays.
28558
28559 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
28560
28561         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
28562         decode a single column from a row in a metadata table and changes
28563         to take advantage of it in the typedef locator (gives a nice speed up).
28564         Store offset info for function params.
28565
28566 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
28567
28568         * image.h (MONO_IMAGE_IS_CORLIB): removed 
28569
28570 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
28571
28572         * assembly.c: how could mono_assembly_close () had ever worked?
28573         * metadata.c, metadata.h: provide offset info for local vars.
28574         Implement mono_type_size () to take care of alignment as well
28575         as size (it was mono_field_type_size in cli/class.c before).
28576
28577 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
28578
28579         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
28580
28581         * assembly.h (CORLIB_NAME): set to corlib.dll
28582
28583         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
28584
28585 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
28586
28587         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
28588         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
28589         tokentype.h: massive namespace cleanup.
28590
28591 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
28592
28593         * metadata.h, metadata.c: decode exception clauses when parsing method header.
28594
28595 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
28596
28597         * metadata.c (mono_metadata_free_type): added check for type !=
28598         NULL (void) before calling mono_metadata_free_type()
28599
28600 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
28601
28602         * metadata.h, row_indexes.h: added header with enumerations to use
28603         to index in the columns from tables in metadata and to decode coded
28604         tokens: we should start using this instead of embedding magic numbers
28605         all over the code.
28606
28607 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
28608
28609         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
28610         Move metadata_t info from cli_image_info_t to MonoImage, where
28611         it's easily accessible. Changed all the uses accordingly.
28612         Added the method and class caches to MonoImage.
28613         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
28614         and mono_metadata_decode_value () signature to be more consistent
28615         with the other parse functions (and simplify code). Taken advantage
28616         of zero-length array allocation with GCC. Removed reduntant (and
28617         wrong) MonoFieldType struct and use MonoParam instead. Changed
28618         mono_metadata_parse_field_type () to use common code for parsing.
28619         Added mono_metadata_typedef_from_field () and
28620         mono_metadata_typedef_from_method () to lookup a typedef index from a
28621         field or method token.
28622         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
28623
28624 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
28625
28626         * metadata.c (mono_metadata_parse_field_type): Implement. 
28627         (do_mono_metadata_parse_type): Split engine from
28628         mono_metadata_parse_type, so that we can create smaller structures
28629         for things that just have one pointer to the MonoType (look at
28630         the MonoFieldType)
28631
28632 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
28633
28634         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
28635         as Jan Gray found out, it is incorrect. 
28636
28637 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
28638
28639         * assembly.c: Implement asssembly loading.  This loads an image
28640         and loads all the referenced assemblies.  Come to think of it, we
28641         could always do lazy loading of the assemblies. 
28642
28643         * image.c (mono_image_open): Keep loaded images in a hashtable.
28644
28645         * image.h (MonoImage): Add reference count.
28646
28647 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
28648
28649         * assembly.c (mono_assembly_open): Keep track of the file name in
28650         case the assembly has no ASSEMBLY table.
28651
28652         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
28653         from get.c here.
28654
28655 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
28656
28657         * metadata.c, metadata.h: decode local vars in method header
28658         parse function. Change callers accordingly.
28659
28660 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
28661
28662         * metadata.h, cil-coff.h: protect against multiple inclusion.
28663         Added some new structures to hold information decoded from metadata:
28664         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
28665         and relevant decoding/free functions.
28666         * metadata.c: implement decoding functions. Add warning for out of bounds
28667         index in mono_metadata_locate(). Implement mono_get_method () to retreive
28668         all the info about a method signature and invocation. Remove check on
28669         uninitialized local var in parse_mh() and fix memory leak.
28670
28671 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
28672
28673         * metadata.h: More macros.
28674
28675         * tokentype.h: New file.
28676
28677 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
28678
28679         * assembly.c: added a consistency check and initialize
28680         some structures with g_new0().
28681         * metadata.c: fixed a couple more bugs in table size computation
28682         and add other checks for out-of bound access to metadata.
28683
28684 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
28685
28686         * metatada.c: fix bugs computing table sizes. Spew a
28687         warning when index in string heap is out of bounds.
28688
28689 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
28690
28691         * metadata.h: Add a couple of macros to manipulate tokens. 
28692
28693 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
28694
28695         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
28696         cli_section_tables).
28697
28698 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
28699
28700         * metadata.c (mono_metadata_user_string): New function, provides
28701         access to the UserString heap. 
28702
28703 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
28704
28705         * metadata.c: Add inline documentation.
28706
28707 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
28708
28709         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
28710         files. 
28711
28712 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
28713
28714         * typeattr.h: New file, TypeAttribute flags. 
28715
28716 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
28717
28718         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
28719         mono_assembly_ensure_section): Section loading code.
28720         (load_section_tables): Load the sections.
28721
28722         * mono/metadata/metadata.c (mono_metadata_locate_token,
28723         mono_metadata_locate): Functions to locate the information
28724         definition given a token or a table and an index.
28725         (mono_metadata_compute_table_bases): New.
28726         (compute_size): New function to compute the sizes of the various
28727         tables.
28728
28729         * mono/metadata/metadata.h: Finish listing the different index
28730         types. 
28731
28732         * mono/metadata/pedump.c: Improve to dump new information.
28733
28734 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
28735
28736         * mono/metadata/metadata.c: Entered all the tables matching
28737         Beta2. 
28738
28739         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
28740
28741
28742